如何获取切片的地址?
How to get address of a slice?
如何将切片转换为 *const ()
或 usize
?
&[ T ] -> *const ()
当然,我知道它会将胖指针降级为纤细的一滴长度。
我的用例是比较两个切片的地址。
最好的方法是调用 <[T]>::as_ptr()
or <[T]>::as_mut_ptr()
。
您也可以按照这些函数的实现方式来做到这一点,首先将切片转换为指向切片的指针,然后将结果指针转换为指向元素类型的精简指针:
let slice: &[T];
slice as *const [T] as *const T;
但是,std 中提供的这些功能正是为了让您不要那样做。
如果你只想比较地址,你可以直接用切片调用std::ptr::eq()
。
如何将切片转换为 *const ()
或 usize
?
&[ T ] -> *const ()
当然,我知道它会将胖指针降级为纤细的一滴长度。 我的用例是比较两个切片的地址。
最好的方法是调用 <[T]>::as_ptr()
or <[T]>::as_mut_ptr()
。
您也可以按照这些函数的实现方式来做到这一点,首先将切片转换为指向切片的指针,然后将结果指针转换为指向元素类型的精简指针:
let slice: &[T];
slice as *const [T] as *const T;
但是,std 中提供的这些功能正是为了让您不要那样做。
如果你只想比较地址,你可以直接用切片调用std::ptr::eq()
。