计算两个原始指针之间的距离
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);
获取从 start
到 end
的偏移量。
一些 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);
获取从 start
到 end
的偏移量。