我对::
和.
之间的差异感到困惑。它们的外观相同,只是语法不同。
let mut guess = String::new(); io::stdin().read_line(&mut guess) .expect("Failed to read line");
"Programming a Guessing Game" from The Rust Programming Language
在上述情况下,我访问了new()
中的函数String
。 String::new()
和String.new()
有什么区别? .
仅适用于方法吗?
答案 0 :(得分:8)
.
用于左侧的值。当您拥有类型或模块时,将使用::
。
或者:.
用于值成员访问,::
用于名称空间成员访问。
答案 1 :(得分:0)
copy()中显示了::
和.
之间有用的区别。
在fn
中调用struct
的实例时,将使用.
:
struct Rectangle {
width: u32,
height: u32,
}
impl Rectangle {
fn area(&self) -> u32 {
self.width * self.height
}
}
fn main() {
let rect1 = Rectangle {
width: 30,
height: 50,
};
println!(
"The area of the rectangle is {} square pixels.",
rect1.area()
);
}
另一方面,关联函数是不将self
作为参数的函数。他们没有struct
的实例:
impl Rectangle {
// Associated Function
fn square(size: u32) -> Rectangle {
Rectangle {
width: size,
height: size,
}
}
}
::
用来调用这些函数。
fn main() {
let sq = Rectangle::square(3);
}
.
用于返回方法(结构实例的函数)。