通常在Rust中,你不能在不引用局部变量的情况下将某个东西的(子)切片赋给局部变量,因为str的大小未知:let x = s[..]; // doesn't compilelet y = &s[..]; // oklet x = s[..].to_owned(); // ok
let y = (&s[..]).to_ow
威尔·克莱顿( Will Crichton )在2018年2月题为"“的报告中写道:
铁锈提供了获取原始指针所有权的能力,我们使用和来实现这一功能,后者告诉Rust将内存指针作为堆分配的数组来处理。在转移所有权之后,假设内存是有效的,并且大小/类型正确,Rust应用其通常的内存安全和包含检查。为了避免疑问,上面用于执行内存分配(自Rust 1.27.0中删除)的(实验性) A
一些C接口将指针返回到缓冲区的末尾。所以我需要把范围转换成切片。但是,切片只能由指针和计数创建。那我怎么才能拿到伯爵。end - start只给了error: binary operation `-` cannot be applied to type `*mut i8`和std::ptr::PtrExt一个offset方法来计算偏移量