【06】Rust语言基础(上)

  • 董承泽
  • 更新于 2024-05-06 23:42
  • 阅读 902

Rust语言基础 上

配套视频教程:\ Bilibili:https://www.bilibili.com/video/BV1zE42157xW/?share_source=copy_web&vd_source=c147db41bce0140aa28781d353032bab\ Youtube:https://www.youtube.com/watch?v=Ap64WGDAIlg\ 欢迎添加我的联系方式:Rico_Ruilabs

详解移步:https://tourofrust.com/00_zh-cn.html

变量

fn main() {
    // rust 推断出x的类型
    let x = 13;
    println!("{}", x);

    // rust也可以显式声明类型
    let x: f64 = 3.14159;
    println!("{}", x);

    // rust 也支持先声明后初始化,但很少这样做
    let x;
    x = 0;
    println!("{}", x);
}

默认不可变

fn main() {
    let mut x = 42;
    println!("{}", x);
    x = 13;
    println!("{}", x);
}

变量类型

  • 布尔型 - bool 表示 true 或 false
  • 无符号整型- u8 u32 u64 u128 表示正整数
  • 有符号整型 - i8 i32 i64 i128 表示正负整数
  • 浮点数 - f32 f64
  • 元组(tuple) - (value, value, ...) 用于在栈上传递固定序列的值
  • 数组 - 在编译时已知的具有固定长度的相同元素的集合
  • 切片(slice) - 在运行时已知长度的相同元素的集合
  • str(string slice) - 在运行时已知长度的文本
fn main() {
    let x = 12; // 默认情况下,这是i32
    let a = 12u8;
    let b = 4.3; // 默认情况下,这是f64
    let c = 4.3f32;
    let bv = true;
    let t = (13, false);
    let string = String::from("hello world!"); // 字符串
    let stringSlice = &string[0..=4]; // 取从0到第4位 生成一个字符切片
    println!(
        "{} {} {} {} {} {} {} {} {}",
        x, a, b, c, bv, t.0, t.1, string,stringSlice
    );
}

常量

const PI: f32 = 3.14159;

数组

数组 的数据类型是 [T;N],其中 T 是元素的类型,N 是编译时已知的固定长度。

fn main() {
    let nums: [i32; 3] = [1, 2, 3];
    println!("{:?}", nums);
    println!("{}", nums[1]);
}

函数

fn add(x: i32, y: i32) -> i32 {
    return x + y;
}

fn main() {
    println!("{}", add(42, 13));
}

配合元组返回多个值

fn swap(x: i32, y: i32) -> (i32, i32) {
    return (y, x);
}

fn main() {
    // 返回一个元组
    let result = swap(123, 321);
    println!("{} {}", result.0, result.1);

    // 将元组解构为两个变量
    let (a, b) = swap(result.0, result.1);
    println!("{} {}", a, b);
}

也可返回空值(空元组)

fn make_nothing() -> () {
    return ();
}

fn make_nothing2() {
    // 如果没有指定返回值,这个函数将会返回 ()
}
点赞 0
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
董承泽
董承泽
0x513D...fEC0
VX:ruichao_web3 bilibili :https://space.bilibili.com/434418210 youtube :https://www.youtube.com/channel/UCbVSj4aA2TAR9cUZuSoql5A