我正在浏览一个crate hifijson
来解析JSON源代码,我偶然发现了这个:
fn skip_until(&mut self, stop: impl FnMut(u8) -> bool) {
use crate::Write;
self.write_until(&mut &[][..], stop) // <-
}
你可以在这里查看完整的实现。
我对上面标有注解<-
的行的语法&[][..]
有点不确定。虽然我认为它在这里将bytes
字段作为struct
SliceLexer
的可变切片传递,但我从未在rust文档或其他地方看到过这种语法。
有人可以解释它是如何工作的,并确认它是否只适用于这里,因为结构只有一个字段,这是一个借来的切片,如果这种语法被记录在某处?
1条答案
按热度按时间js81xvg61#
[]
是0个元素的数组文字,[..]
使用范围索引,&
接受引用,因此&[][..]
创建了一个空的切片引用,通常称为切片。它没有以任何方式连接到
self
,只是将其传递给self
的方法。