首页 > 其他分享 >Rust 操作符及示例

Rust 操作符及示例

时间:2024-09-06 10:39:16浏览次数:8  
标签:10 .. 操作符 示例 用于 let Rust

Rust 操作符

Rust 提供了一系列操作符(operators),每种操作符都有特定的功能和应用场景。

1. 算术操作符

这些操作符用于基本的数学运算:

  • + : 加法,用于两个数相加。
    • 示例: let sum = 5 + 10;
  • - : 减法,用于两个数相减。
    • 示例: let difference = 10 - 5;
  • * : 乘法,用于两个数相乘。
    • 示例: let product = 4 * 3;
  • / : 除法,用于两个数相除。
    • 示例: let quotient = 10 / 2;
  • % : 取余,用于计算两个数的余数。
    • 示例: let remainder = 10 % 3;

2. 比较操作符

这些操作符用于比较两个值,返回一个布尔值:

  • == : 相等,用于判断两个值是否相等。
    • 示例: let is_equal = 5 == 5;
  • != : 不相等,用于判断两个值是否不相等。
    • 示例: let is_not_equal = 5 != 6;
  • > : 大于,用于判断左边的值是否大于右边的值。
    • 示例: let is_greater = 10 > 5;
  • < : 小于,用于判断左边的值是否小于右边的值。
    • 示例: let is_less = 5 < 10;
  • >= : 大于或等于,用于判断左边的值是否大于或等于右边的值。
    • 示例: let is_greater_or_equal = 10 >= 10;
  • <= : 小于或等于,用于判断左边的值是否小于或等于右边的值。
    • 示例: let is_less_or_equal = 5 <= 10;

3. 逻辑操作符

这些操作符用于逻辑运算,通常与布尔值结合使用:

  • && : 逻辑与,用于判断两个布尔表达式是否都为 true
    • 示例: let and_result = true && false;
  • || : 逻辑或,用于判断两个布尔表达式是否至少一个为 true
    • 示例: let or_result = true || false;
  • ! : 逻辑非,用于取反一个布尔表达式。
    • 示例: let not_result = !true;

4. 赋值操作符

这些操作符用于将值赋给变量:

  • = : 赋值,将右边的值赋给左边的变量。
    • 示例: let x = 5;
  • += : 加赋值,将右边的值加到左边的变量上。
    • 示例: let mut x = 5; x += 10;
  • -= : 减赋值,将右边的值从左边的变量中减去。
    • 示例: let mut x = 10; x -= 5;
  • *= : 乘赋值,将右边的值乘以左边的变量。
    • 示例: let mut x = 2; x *= 3;
  • /= : 除赋值,将左边的变量除以右边的值。
    • 示例: let mut x = 10; x /= 2;
  • %= : 模赋值,将左边的变量取模右边的值。
    • 示例: let mut x = 10; x %= 3;

5. 位操作符

这些操作符用于对位进行操作,通常用于底层编程或特定算法实现:

  • & : 按位与,对两个整数的对应位都为 1 时结果为 1。
    • 示例: let and = 5 & 3; // 结果为 1
  • | : 按位或,对两个整数的对应位有一个为 1 时结果为 1。
    • 示例: let or = 5 | 3; // 结果为 7
  • ^ : 按位异或,对两个整数的对应位不同则结果为 1。
    • 示例: let xor = 5 ^ 3; // 结果为 6
  • ! : 按位非,对整数的每一位取反。
    • 示例: let not = !0b0001_0010; // 结果为 0b1110_1101
  • << : 左移,将位向左移动指定的位数(右边补零)。
    • 示例: let left_shift = 1 << 3; // 结果为 8
  • >> : 右移,将位向右移动指定的位数(左边补符号位或补零)。
    • 示例: let right_shift = 8 >> 3; // 结果为 1

6. 范围操作符

范围操作符用于生成数值范围:

  • .. : 半开区间,从起始值到结束值(不包括结束值)。
    • 示例: for i in 0..5 { println!("{}", i); } // 输出 0 到 4
  • ..= : 闭区间,从起始值到结束值(包括结束值)。
    • 示例: for i in 0..=5 { println!("{}", i); } // 输出 0 到 5
  • ..(单侧范围): 生成从起始值到某个值或从某个值到结束值的范围。
    • 示例:
      • let r = 3..; // 从 3 到无穷大
      • let r = ..3; // 从负无穷大到 3

7. 引用与解引用操作符

这些操作符用于处理指针和引用:

  • & : 引用操作符,创建一个引用(即指向某个值的指针)。
    • 示例: let x = 5; let y = &x;
  • * : 解引用操作符,解引用一个指针或引用,获取其指向的值。
    • 示例: let x = 5; let y = &x; let z = *y;

8. 其他操作符

  • . : 成员访问或方法调用。
    • 示例: let len = vec.len();
  • .. : 结构体更新语法或元组解构。
    • 示例: let updated = Person { age: 30, ..person };
  • [] : 索引操作符,用于访问数组、切片、向量等的元素。
    • 示例: let first = arr[0];
  • () : 调用函数或方法,或用于将表达式分组。
    • 示例: let result = add(5, 3);
  • ? : 错误传播操作符,用于传播 ResultOption 类型的错误。
    • 示例: let value = some_function()?;
  • :: : 访问路径操作符
    • 在模块系统中,用于访问模块中的项目(如函数、常量、类型)。
    • 用于调用结构体、枚举的关联函数或静态方法。
    • 从一个模块或包中访问另一个模块或包的项目。
    • 示例:
mod math {
    pub const PI: f64 = 3.14159;
    pub fn add(a: i32, b: i32) -> i32 {
        a + b
    }
}
fn main() {
    let pi = math::PI;
    let sum = math::add(5, 10);
    let origin = Point::origin();
    let color = Color::Red;
}
struct Point {
    x: i32,
    y: i32,
}
impl Point {
    pub fn origin() -> Self {
        Point { x: 0, y: 0 }
    }
}
enum Color {
    Red,
    Green,
    Blue,
}
  • as : 转换操作符:用于类型转换,将一个值转换为另一种类型。
    • 示例
let x = 5;
let y = x as f64; // 将 i32 转换为 f64
  • _ : 占位符:
    • 在模式匹配中表示通配符,忽略某个值;或者在类型推断中使用表示不关心的类型。
    • 示例
let tuple = (1, 2, 3);
let (_, y, _) = tuple;
let v: Vec<_> = (0..10).collect();
  • |: 模式匹配中的或操作符:
    • 在模式匹配中表示多种模式的组合,即如果任何一种模式匹配,则匹配成功。
    • 示例
let x = 1;
match x {
    1 | 2 => println!("One or two"), // 如果 x 是 1 或 2,都会匹配
    _ => println!("Other"),
}

总结

Rust 提供了丰富的操作符,以便开发者在不同的编程场景下使用。每个操作符都有其特定的功能和适用场景,理解它们的用法有助于编写更加高效和清晰的 Rust 代码。

引用

标签:10,..,操作符,示例,用于,let,Rust
From: https://www.cnblogs.com/risheng/p/18399759

相关文章

  • WebGL入门(031):EXT_frag_depth 简介、使用方法、示例代码
    还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。No.内容链接1Openlayers【入门教程】-......
  • OpenAPI definition(示例)
    OpenAPI规范(中文版)(apifox.cn)OpenAPIdefinition-CSDN博客 简介:OpenAPIdefinitionHOST:http://192.168.41.191:8902/api/v1/user联系人:Version:v0接口路径:/user/v3/api-docs[TOC]学校管理获取学校列表接口地址:/user/schools请求方式:GET请求数据类型:appli......
  • Rust 中的关键字以及示例
    1.常见关键字as:用于类型转换,例如将一个值从一种类型转换为另一种类型。letx:i32=42;lety:u8=xasu8;break:用于提前退出循环。foriin0..10{ifi==5{break;}}const:定义一个常量,常量的值在编译时就确定,不会在运行时改变。......
  • MySQL(三)操作符 连接操作
    LIKE操作符用于在WHERE子句中搜索列中的指定模式,是进行模糊查询的关键字通常与%和_通配符一起使用SELECTcolumn1,column2,...FROMtable_nameWHEREcolumn_nameLIKEpattern;通配符%:匹配任意字符(包括零个字符)_:匹配单个字符_的用法:使用_通配符找出所有......
  • 基于SpringBoot的高校宿舍管理系统+LW参考示例
    系列文章目录1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例4.基于SSM的高校实验室管理系统+LW参考示例5.基于SpringBoot的二手数码回收系统+原生微信小......
  • 基于SpringBoot的电影院订票系统+LW示例参考
    系列文章目录1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例4.基于SSM的高校实验室管理系统+LW参考示例5.基于SpringBoot的二手数码回收系统+原生微信小......
  • 基于云函数的自习室预约微信小程序+LW示例参考
    全阶段全种类学习资源,内涵少儿、小学、初中、高中、大学、专升本、考研、四六级、建造师、法考、网赚技巧、毕业设计等,持续更新~文章目录@[TOC](文章目录)1.项目介绍2.项目部署3.项目部分截图4.获取方式1.项目介绍技术栈+工具:云数据库+云函数+JS+原生微信小......
  • 五分钟快速理解new操作符
    五分钟快速理解new操作符(1)new操作符做了哪些事情(4步)(2)代码示例(3)手写new标识符(1)new操作符做了哪些事情(4步)新建一个新的空对象{}让空对象的__proto__和构造函数的prototype建立链接{_proto:Person.prototype}改变this指向,让构造函数中的this指......
  • 神经网络之卷积篇:详解卷积神经网络示例(Convolutional neural network example)
    详解卷积神经网络示例假设,有一张大小为32×32×3的输入图片,这是一张RGB模式的图片,想做手写体数字识别。32×32×3的RGB图片中含有某个数字,比如7,想识别它是从0-9这10个数字中的哪一个,构建一个神经网络来实现这个功能。用的这个网络模型和经典网络LeNet-5非常相似,灵感也来源于此......
  • 海外合规|新加坡网络安全认证计划简介(三)-Cyber Trust认证
      一、认证简介:     Cyber Trust标志是针对数字化业务运营更为广泛的组织的网络安全认证。该标志针对的是规模较大或数字化程度较高的组织,因为这些组织可能具有更高的风险水平,需要他们投资专业知识和资源来管理和保护其IT基础设施和系统。CyberTrust标志采用基......