này chương trình đơn giản:Tại sao `Box :: into_raw` không tự tham số?
fn main() {
let b: Box<i32> = Box::new(1);
b.into_raw();
}
Tạo lỗi bất tiện này khi biên soạn với Rust 1.12.0:
error: no method named `into_raw` found for type `Box<i32>` in the current scope
--> <anon>:3:7
|
3 | b.into_raw();
| ^^^^^^^^
|
= note: found the following associated functions; to be used as methods, functions must have a `self` parameter
= note: candidate #1 is defined in an impl for the type `Box<_>`
Điều này là do into_raw
không được định nghĩa để chăm self
như tham số, nhưng thay vào đó được định nghĩa là :
impl Box<T: ?Sized> {
fn into_raw(b: Box<T>) -> *mut T;
}
Điều này có vẻ bất tiện và tôi không thể tìm được lý do.
Vậy ... tại sao?
Ah cảm ơn! Tôi đã phá hủy bộ não của mình theo một hướng hoàn toàn sai lầm và đã không nghĩ rằng hầu hết các cuộc gọi phương thức được chuyển tiếp đến con trỏ thông qua 'Defer'. –