Rust中的“&[][..]”是什么意思?

kkbh8khc  于 2023-10-20  发布在  其他
关注(0)|答案(1)|浏览(127)

我正在浏览一个crate hifijson来解析JSON源代码,我偶然发现了这个:

fn skip_until(&mut self, stop: impl FnMut(u8) -> bool) {
    use crate::Write;
    self.write_until(&mut &[][..], stop) // <-
}

你可以在这里查看完整的实现。
我对上面标有注解<-的行的语法&[][..]有点不确定。虽然我认为它在这里将bytes字段作为structSliceLexer的可变切片传递,但我从未在rust文档或其他地方看到过这种语法。
有人可以解释它是如何工作的,并确认它是否只适用于这里,因为结构只有一个字段,这是一个借来的切片,如果这种语法被记录在某处?

js81xvg6

js81xvg61#

[]是0个元素的数组文字,[..]使用范围索引,&接受引用,因此&[][..]创建了一个空的切片引用,通常称为切片。
它没有以任何方式连接到self,只是将其传递给self的方法。

相关问题