(done) 速通 rustlings(10) 基本数据类型

布尔型 bool

bool 是基本数据类型之一,可使用 ! 运算符取反:

rust 复制代码
// Booleans (`bool`)

fn main() {
    let is_morning = true;
    if is_morning {
        println!("Good morning!");
    }

    // TODO: Define a boolean variable with the name `is_evening` before the `if` statement below.
    // The value of the variable should be the negation (opposite) of `is_morning`.
    // let ...
    let is_evening = !is_morning;
    if is_evening {
        println!("Good evening!");
    }
}

字符型 char

char 类型自带两个方法 is_alphabetic() 和 is_numeric()

rust 复制代码
// Characters (`char`)

fn main() {
    // Note the _single_ quotes, these are different from the double quotes
    // you've been seeing around.
    let my_first_initial = 'C';
    if my_first_initial.is_alphabetic() {
        println!("Alphabetical!");
    } else if my_first_initial.is_numeric() {
        println!("Numerical!");
    } else {
        println!("Neither alphabetic nor numeric!");
    }

    // TODO: Analogous to the example before, declare a variable called `your_character`
    // below with your favorite character.
    // Try a letter, try a digit (in single quotes), try a special character, try a character
    // from a different language than your own, try an emoji 😉
    // let your_character = '';

    let your_character = '😉';
    if your_character.is_alphabetic() {
        println!("Alphabetical!");
    } else if your_character.is_numeric() {
        println!("Numerical!");
    } else {
        println!("Neither alphabetic nor numeric!");
    }
}

数组 array

rust 复制代码
fn main() {
    // TODO: Create an array called `a` with at least 100 elements in it.
    // let a = ???
    let a: [i32; 100] = [42; 100];

    if a.len() >= 100 {
        println!("Wow, that's a big array!");
    } else {
        println!("Meh, I eat arrays like that for breakfast.");
        panic!("Array not big enough, more elements needed");
    }
}

切片 slice

rust 复制代码
fn main() {
    // You can optionally experiment here.
}

#[cfg(test)]
mod tests {
    #[test]
    fn slice_out_of_array() {
        let a = [1, 2, 3, 4, 5];

        // TODO: Get a slice called `nice_slice` out of the array `a` so that the test passes.
        // let nice_slice = ???
        let nice_slice: &[i32] = &a[1..4];

        assert_eq!([2, 3, 4], nice_slice);

        let nice_slice: &[i32] = &a[1..=3];
        assert_eq!([2, 3, 4], nice_slice);
    }
}

元组 tuple

rust 复制代码
fn main() {
    let cat = ("Furry McFurson", 3.5);

    // TODO: Destructure the `cat` tuple in one statement so that the println works.
    let (name, age) = cat;

    println!("{name} is {age} years old");
}

元祖 tuple 索引访问

rust 复制代码
fn main() {
    // You can optionally experiment here.
}

#[cfg(test)]
mod tests {
    #[test]
    fn indexing_tuple() {
        let numbers = (1, 2, 3);

        // TODO: Use a tuple index to access the second element of `numbers`
        // and assign it to a variable called `second`.
        // let second = ???;
        let second = numbers.1;

        assert_eq!(second, 2, "This is not the 2nd number in the tuple!");
    }
}

相关推荐
iuyup11 小时前
深度解析 OpenHuman:开源个人 AI 超级智能的 Memory 架构设计
人工智能·rust
techdashen17 小时前
Rust 泛型 vs Java 泛型:它们看起来相似,但骨子里截然不同
java·开发语言·rust
codealy17 小时前
Rust 核心理论与内存安全(二)
安全·rust
Rust研习社17 小时前
告别环境混乱!使用 mise 管理你的开发环境
前端·后端·rust
小杍随笔18 小时前
【Tauri 2.x 自定义 WebView2 用户数据目录完全指南】
架构·rust
樱桃花下的小猫19 小时前
Rust 服务器存档管理 & 地图配置指南
服务器·rust·云鸢互联·零门槛一键开服·腐蚀rust服务器·腐蚀rust稳定低延迟联机·腐蚀rust服务器一键开服
红尘散仙1 天前
一个 `#[uniffi::export]`,把 Rust 接进 React Native
前端·后端·rust
红尘散仙1 天前
一行 `#[specta::specta]`,让 Tauri IPC 有类型
前端·后端·rust
codealy2 天前
Rust 核心理论与内存安全(一)
后端·安全·rust