一些C接口返回指向缓冲区结尾的指针.然后我需要把范围转换成一个切片.但切片只能从指针和计数创建.我是怎么计算的.

end - start只会给出error: binary operation `-` cannot be applied to type `*mut i8`std::ptr::PtrExt,只有offset方法从偏移量计算结束,而不是逆运算.

推荐答案

一个原始指针可以投射到usize;然后你可以对这些进行减法运算.

end as usize - start as usize

Rust相关问答推荐

泛型属性比较

PyReadonlyArray2到Vec T<>

包含嵌套 struct 的CSV

如何循环遍历0..V.len()-1何时v可能为空?

如果死 struct 实现了/派生了一些特征,为什么Rust会停止检测它们?

在生存期内将非静态可变引用转换为范围内的静态可变引用

为什么Deref类特征不构成?

&'a T 是否意味着 T: 'a?

我可以禁用发布模式的开发依赖功能吗?

从 Rust 中的 if/else 中的引用创建 MappedRwLockWriteGuard

Some(v) 和 Some(&v) 有什么区别?

具有在宏扩展中指定的生命周期的枚举变体数据类型

无法理解 Rust 对临时值的不可变和可变引用是如何被删除的

在异步 Rust 中,Future 如何确保它只调用最近的 Waker?

为什么 i32 Box 类型可以在 Rust 中向下转换?

具有生命周期和以后引用的可变方法

匹配结果时的简洁日志(log)记录

您如何使用枚举反序列化字符串,其中任何其他值反序列化为新类型变体同时保留字符串?

覆盖类型的要求到底是什么?为什么单个元素元组满足它?

如何在 Rust 的内置函数上实现特征?