位运算符

运算符说明示例结果
&按位与5 & 31
|按位或5 | 37
^按位异或5 ^ 36
!按位取反!5-6
<<左移5 << 110
>>右移5 >> 12

实例

fn 

    println!("x & y = {:b}", x & y);
    println!("x | y = {:b}", x | y);
    println!("x ^ y = {:b}", x ^ y);
    println!("!x = {:b}", !x);
    println!("x << 1 = {:b}", x << 1);
    println!("x >> 1 = {:b}", x >> 1);
}

输出:

x & y = 1000
x | y = 1110
x ^ y = 110
!x = 11110101
x << 1 = 10100
x >> 1 = 101

5、赋值与复合赋值运算符

运算符说明示例结果
=赋值let mut x = 5; x = 3;x = 3
+=加并赋值x += 2x = x + 2
-=减并赋值x -= 2x = x - 2
*=乘并赋值x *= 2x = x * 2
/=除并赋值x /= 2x = x / 2
%=取余并赋值x %= 2x = x % 2
&= |= ^= <<= >>=位运算复合赋值x &= 2类似

实例

fn main() {
    let mut n = 5;

    n += 3;
    println!("n += 3 -> {}", n);

    n *= 2;
    println!("n *= 2 -> {}", n);

    n >>= 1;
    println!("n >>= 1 -> {}", n);
}

输出:

n += 3 -> 8
n *= 2 -> 16
n >>= 1 -> 8

6、 其他常见运算符

运算符说明示例
..范围(不含右端)0..5 产生 0 到 4
..=范围(含右端)0..=5 产生 0 到 5
as类型转换5 as f32
?错误传播(在 Result 中)some()?;
*解引用*ptr
&取引用&x
ref绑定为引用let ref y = x;

实例

fn main() {
    let x = 5;
    let y = x as f64;

    for i in 1..4 {
        print!("{} ", i);
    }
    println!();

    for i in 1..=3 {
        print!("{} ", i);
    }
    println!();

    let a = 10;
    let b = &a;
    println!("*b = {}", *b);
}

输出:

1 2 3 
1 2 3 
*b = 10

复合类型

元组是用一对 ( ) 包括的一组数据,可以包含不同种类的数据:

实例

let tup: (i32, f64, u8) = (500, 6.4, 1);
// tup.0 等于 500
// tup.1 等于 6.4
// tup.2 等于 1
let (x, y, z) = tup;
// y 等于 6.4

数组用一对 [ ] 包括的同类型数据。

实例

let a = [1, 2, 3, 4, 5];
// a 是一个长度为 5 的整型数组

let b = ["January", "February", "March"];
// b 是一个长度为 3 的字符串数组

let c: [i32; 5] = [1, 2, 3, 4, 5];
// c 是一个长度为 5 的 i32 数组

let d = [3; 5];
// 等同于 let d = [3, 3, 3, 3, 3];

let first = a[0];
let second = a[1];
// 数组访问

a[0] = 123; // 错误:数组 a 不可变
let mut a = [1, 2, 3];
a[0] = 4; // 正确

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐