计算两个原始指针之间的距离

Calculate distance between two raw pointers

一些 C 接口 return 指向缓冲区末尾的指针。那么我需要将范围转换为切片。但是 slice 只能从指针和计数创建。那么我如何获得计数。

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

可以将原始指针转换为 usize;然后你可以对这些进行减法。

end as usize - start as usize

自 1.47.0(2020 年 10 月)起,Rust 在指针类型上具有 offset_from 方法,允许您编写:

let offset: isize = end.offset_from(start);

获取从 startend 的偏移量。