guyuming76 发表于 2022-09-20 11:15
我不知道如何在这里贴图,就在知乎里问了,下面是链接:
https://www.zhihu.com/question/554441029
https://learn.microsoft.com/zh-cn/dotnet/csharp/fundamentals/functional/discards
这个类似 C#的弃元,取消使用的占位符变量。相当于未赋值的变量,永远不会使用变量,它们没有值。它们可以增强其可读性和可维护性。将意图传达给编译器和其他读取代码的文件:你打算忽略表达式的结果。
这种在C#这种有运行时,就是告诉垃圾回收系统,我是垃圾赶快回收。
这种在Rust里面,可能根本都不会分配空间,也有可能在匹配完成的下一行就把内存空间给释放了。反正永远都用不到。
拓展:
函数参数和 前面以_开头,比如 _name
fn test(name:String,age:i32){ println!("{}",age) } 如果按照上面写,编译器就会告诉你 name 这个参数你没用过unused variable。
fn test(_name:String,age:i32){ println!("{}",age) } 但是你在name前加上_前缀,就告诉编译器,爷了知道,这字段我不用,不烦你操心。编译器就不会报错
姑且看之,不足之处请指出。
anonymous type, 给编译器推导,省略
https://doc.rust-lang.org/reference/types/inferred.html
评论区
写评论https://learn.microsoft.com/zh-cn/dotnet/csharp/fundamentals/functional/discards
这个类似 C#的弃元,取消使用的占位符变量。相当于未赋值的变量,永远不会使用变量,它们没有值。它们可以增强其可读性和可维护性。将意图传达给编译器和其他读取代码的文件:你打算忽略表达式的结果。
这种在C#这种有运行时,就是告诉垃圾回收系统,我是垃圾赶快回收。
这种在Rust里面,可能根本都不会分配空间,也有可能在匹配完成的下一行就把内存空间给释放了。反正永远都用不到。
拓展:
函数参数和 前面以_开头,比如 _name
fn test(name:String,age:i32){ println!("{}",age) } 如果按照上面写,编译器就会告诉你 name 这个参数你没用过unused variable。
fn test(_name:String,age:i32){ println!("{}",age) } 但是你在name前加上_前缀,就告诉编译器,爷了知道,这字段我不用,不烦你操心。编译器就不会报错
姑且看之,不足之处请指出。
anonymous type, 给编译器推导,省略
https://doc.rust-lang.org/reference/types/inferred.html