我想在struct I
上調用方法a
。我告訴鏽找不到方法,但我不確定爲什麼:在當前範圍內沒有找到類型爲* mut Y的名爲X的方法
error: no method named `a` found for type `*mut I` in the current scope
--> src/lib.rs:7:16
|
7 | unsafe { i.a(5) }
| ^
這是一個最小的可重複的例子:
extern crate libc;
use self::libc::int32_t;
#[no_mangle]
pub extern "C" fn i_a(i: *mut I) -> *mut int32_t {
unsafe { i.a(5) } // error: no method named `a` found for type `*mut I` in the current scope
}
#[derive(Debug, PartialEq)]
pub struct I {
pub values: Vec<i32>,
}
impl I {
pub fn a(&self, n: i32) -> i32 {
return 0;
}
}
我該如何解決這個問題?
取消引用指針與引用不同,不是隱式的。您必須取消引用該指針。 –
side-note:即使你解決了你的問題,你的'i_a'函數返回'* mut int32_t',而'a'方法返回'i32',類型將不匹配。 –