922 B
922 B
Indexing
TicketStore::get returns an
Option<&Ticket> for a given
TicketId.
We’ve seen before how to access elements of arrays and vectors using
Rust’s indexing syntax:
let v = vec![0, 1, 2];
assert_eq!(v[0], 0);How can we provide the same experience for
TicketStore?
You guessed right: we need to implement a trait, Index!
Index
The Index trait is defined in Rust’s standard
library:
// Slightly simplified
pub trait Index<Idx>
{
type Output;
// Required method
fn index(&self, index: Idx) -> &Self::Output;
}It has:
- One generic parameter,
Idx, to represent the index type - One associated type,
Output, to represent the type we retrieved using the index
Notice how the index method doesn’t return an
Option. The assumption is that index will
panic if you try to access an element that’s not there, as it happens
for array and vec indexing.