Arrays 为什么切片整个阵列很有用?
我在中发现一些代码似乎占据了整个数组的一部分:Arrays 为什么切片整个阵列很有用?,arrays,rust,Arrays,Rust,我在中发现一些代码似乎占据了整个数组的一部分: use std::io::Cursor; let image = image::load(Cursor::new(&include_bytes!("/path/to/image.png")[..]), image::PNG).unwrap(); include_字节显示将给定文件加载到内存中,然后作为静态数组返回对该文件的引用。我对此感到困惑的是,为什么在将整个数组的一个片段传递给Curso
use std::io::Cursor;
let image = image::load(Cursor::new(&include_bytes!("/path/to/image.png")[..]),
image::PNG).unwrap();
include_字节
显示将给定文件加载到内存中,然后作为静态数组返回对该文件的引用。我对此感到困惑的是,为什么在将整个数组的一个片段传递给Cursor::new
之前要引用它呢?编写以片段作为输入的函数是习惯用法,因为这样该函数就可以与任何可以切片的集合一起使用。包含字节
产生了&[u8;N]
类型的东西,因此&…[…]
包装就是要从中获得&[u8]
。也许可以添加或描述为什么要这样做?如果是这样的话,&不包括字节吗代码>足够吗?@louis058:不,&包含字节!()
将只是和&[u8;N]
。您需要将其作为常规切片获取,以便std::io::{Cursor,Read,Seek}
的I/O内容在其上工作。@Veedrac您会使用什么替代方法Read
仅对游标的少数实例实现,但构造函数允许任何类型。@Shepmaster我的意思是和[…]
@Veedrac说得很好,让我们看看能不能。