我正在跟踪Rust的标准库对Vec<T>
的索引(即myvec[n]
)的实现。如果我是对的,这里应该是来源。
但它又称为Index::index(...)
,我目前找不到它的定义,有人能提供一些线索吗?提前感谢!
&**
运算符通过Vec
的Deref
实现对[T]
的Index
实现进行委派。此实现要求自变量是实现SliceIndex
特性的东西,该特性定义了如何执行索引操作以及生成的结果类型(例如,范围生成切片,而usize
生成Option<&T>
)。
为了澄清,请注意,Index::index()
是您正在查看的非常相同的trait方法。乍一看,它似乎是一个递归调用,但由于&**self
不是同一类型,它导致使用不同的Index
实现([T]
而不是Vec<T>
),因此它实际上不是递归的。