Эта простая программа:Почему `` Box :: in_raw` не принимает `self` в качестве параметра?
fn main() {
let b: Box<i32> = Box::new(1);
b.into_raw();
}
Производит эту неудобную ошибку при компиляции с 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<_>`
Это потому, что into_raw
не определен принимать self
в качестве параметра, но вместо этого определяется как :
impl Box<T: ?Sized> {
fn into_raw(b: Box<T>) -> *mut T;
}
Это кажется неудобным, и я не могу найти обоснования.
Итак ... почему?
Ах спасибо! Я полностью разрушал свой мозг в совершенно неправильном направлении и не считал, что большинство вызовов метода направляются к плакату через «Дефер». –