pu369com

rust 的奇葩点(.和..)语法小记

1      (.)点运算符

看到类似语句:  let s = "12345".split_terminator("").0;

  编译器提示:error[E0616]: field `0` of struct `SplitTerminator` is private

原来被最后那个0给迷惑了,这个点就是 成员访问 运算符

2    (..)两个点运算符

2.1例:    let s = 1..5;    for i in s{ println!("{:?}", i);  }

叫做 右排除范围 运算符   。类似还有   ..=

2.2例:let employee2 = Employee{ employee_name : String::from("Yiibai"), employee_id: 11, ..employee1 };

叫做  结构体更新语法   意思是把 employee1的字段和值都导入到 employee2中。

2.3 例 :
复制代码
struct Person<'a>{   
         age: u8,
         name: &'a str,
         grade:u8,
}
fn main() {   
    let person = Person { age: 15, name: &"chen",grade:1};
    if let
     Person {        
         age: person_age @ 13..=19,  
         name:person_name,    
         ..
     } = person
 {
     println!("{} is {} years old.", person_name, person_name);
 }
}
复制代码

代码中有两处(..),后一个应该叫做 “与剩余部分”的模式绑定吧。还有代码中那个 @ 叫模式绑定(ident @ pat)

还有三个点(...)语法 说是废弃了( deprecated)

  其他的参考官方文档参考:https://kaisery.github.io/trpl-zh-cn/appendix-02-operators.html

另,参考https://zhuanlan.zhihu.com/p/126369292

 

posted on   pu369com  阅读(601)  评论(1编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2016-08-24 使用rem缩放网页的javascript代码
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示