有时候,在调用对象的函数时,编译器可能无法自动推断参数的类型。这时,可以手动指定类型,以便编译器能够正确理解代码。下面是一个示例:
struct Circle {
x: f64,
y: f64,
radius: f64,
}
impl Circle {
fn area(&self) -> f64 {
std::f64::consts::PI * (self.radius * self.radius)
}
}
fn main() {
let c = Circle { x: 0.0, y: 0.0, radius: 2.0 };
let a = ::deref(&c).area();
println!("{}", a);
}
在这个示例中,我们手动指定了 c
的类型为 Circle
。这样,编译器就能正确地推断 area
函数的参数类型了。
在 Rust 中,还有几种方法可以告诉编译器参数的类型。比如,使用 as
关键字显式地强制转换类型:
let a = c.area() as f32;
或者使用 turbofish 语法(即 ::
)来指定类型:
let a = c.area::();