命名
方法命名
类型应为首字母大写的驼峰命名法(UpperCamelCase),
枚举变量应为首字母大写的驼峰命名法(UpperCamelCase),
结构体字段应使用纯小写下划线命名法(snake_case),
函数和方法名称应使用纯小写下划线命名法(snake_case),
局部变量应为纯小写下划线命名法(snake_case),
宏名称应为纯小写下划线命名法(snake_case),
常量(常量和不可变静态)应使用纯大写下划线命名(SCREAMING_SNAKE_CASE)
当名称是保留字(如 crate)而禁止使用时,要么使用原始标识符(r#crate),要么使用尾部下划线(crate_)——不要拼错单词 (krate)。
类型
Result
1 | fn main()->Result<()>{ |
请观察以上代码块,会报错。
原因在于std::result::Result
这个泛型类型有如下签名:
Result<T, E>
需要两个泛型参数,而我只给了一个。
但我看别人这么写并没有报错,
仔细比较了一下,我发现rust的std中有好几种Result
,如std::result::Result
,std::fmt::Result
,std::io::Result
,std::thread::Result
其中用得比较多的是std::io::Result
,签名如下:
1 | pub type Result<T> = Result<T, Error>; |
它是I/O 操作的专用 Result 类型,但用处广泛,因为只要传一个参数。刚才的问题代码修改成这样可以运行:
1 | fn main()->std::io::Result<()>{ // changes here |