當我嘗試使用每晚編譯器來編譯下面的代碼,我得到一個錯誤:的std :: PTR ::唯一還沒有命名的方法抵消
#![feature(alloc)]
#![feature(unique)]
#![feature(heap_api)]
extern crate alloc;
use std::ptr::{Unique, self};
use alloc::heap;
use std::mem;
fn main() {
unsafe {
let align = mem::align_of::<i32>();
let elem_size = mem::size_of::<i32>();
let ptr = heap::allocate(elem_size*5, align);
let a = Unique::new(ptr as *mut _);
println!("{}", *a.offset(2));
}
}
錯誤:
rustc 1.19.0-nightly (5de00925b 2017-05-29)
error: no method named `offset` found for type `std::ptr::Unique<_>` in the current scope
--> <anon>:16:27
|
16 | println!("{}", *a.offset(2));
| ^^^^^^
根據到docs,offset
應該被定義爲Unique
。我究竟做錯了什麼?
看來文檔沒有更新。在最新的每晚'唯一'不實現'Deref '。你可以使用'* a.as_ptr()。offset(2)'代替。 '獨特'還不穩定,所以預計會有變化。 –
red75prime
最新的夜間文檔可以在https://doc.rust-lang.org/nightly/std/ptr/struct.Unique.html找到。 – kennytm