我是Rust编程语言的新手,在学习this lesson的时候,我不太理解下面的两行。
let mut guess = String::new();
并且,
io::stdin()
在这两种情况下,双冒号有什么用?
2ledvvac1#
::的行为类似于命名空间访问器。您可以像std::io::stdin()那样在模块中导航或指定位置,或者像String::new()那样调用对象的方法。它甚至可以混合使用,因为对象可能在模块本身中,因此例如,String新方法的完整路径将是std::string::String::new。有关详细信息,请参阅此处。
::
std::io::stdin()
String::new()
std::string::String::new
zhte4eai2#
::名称是一个双冒号,根据https://en.wikipedia.org/wiki/Table_of_mathematical_symbols_by_introduction_date,我是否正确::被称为proportion sign但我更喜欢双冒号。你可以用它来导入模块和carate在生 rust 。
use std::collections::HashMap // add this to anywhere before using HashMap fn main() { let solar_distance = HashMap::from([ ("Mercury", 0.4), ("Venus", 0.7), ("Earth", 1.0), ("Mars", 1.5), ]); }
wfsdck303#
符号:根据其使用位置和方式,可以表示多种含义。请参考Table B-3: Path-Related Syntax here。但是,我们大多数人使用它的最常见用例是命名空间路径。示例:
use std::io;
这里我们尝试使用标准库中的io模块。
3条答案
按热度按时间2ledvvac1#
::
的行为类似于命名空间访问器。您可以像std::io::stdin()
那样在模块中导航或指定位置,或者像String::new()
那样调用对象的方法。它甚至可以混合使用,因为对象可能在模块本身中,因此例如,String新方法的完整路径将是std::string::String::new
。有关详细信息,请参阅此处。
zhte4eai2#
::
名称是一个双冒号,根据https://en.wikipedia.org/wiki/Table_of_mathematical_symbols_by_introduction_date,我是否正确::
被称为proportion sign但我更喜欢双冒号。
你可以用它来导入模块和carate在生 rust 。
wfsdck303#
符号:根据其使用位置和方式,可以表示多种含义。请参考Table B-3: Path-Related Syntax here。但是,我们大多数人使用它的最常见用例是命名空间路径。示例:
这里我们尝试使用标准库中的io模块。