diff --git "a/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/1.Rust\346\225\260\346\215\256\347\261\273\345\236\213/rust_data_type.json" "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/1.Rust\346\225\260\346\215\256\347\261\273\345\236\213/rust_data_type.json" index d283991882e97ee055cd2df8b4babc20fbcf58a2..77e56a91f9b6921f8dfb83b5719f602a967d57cf 100644 --- "a/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/1.Rust\346\225\260\346\215\256\347\261\273\345\236\213/rust_data_type.json" +++ "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/1.Rust\346\225\260\346\215\256\347\261\273\345\236\213/rust_data_type.json" @@ -1,6 +1,6 @@ { "type": "code_options", - "author": "jacky_rust", + "author": "jackymao_com", "source": "rust_data_type.md", "notebook_enable": false, "exercise_id": "" diff --git "a/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/1.Rust\346\225\260\346\215\256\347\261\273\345\236\213/rust_data_type.md" "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/1.Rust\346\225\260\346\215\256\347\261\273\345\236\213/rust_data_type.md" index 70a5dba87b204ac8fa8a9c13171ed2d5f8ee0920..5818fb6cfde358571612320f67edf372532cabaf 100644 --- "a/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/1.Rust\346\225\260\346\215\256\347\261\273\345\236\213/rust_data_type.md" +++ "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/1.Rust\346\225\260\346\215\256\347\261\273\345\236\213/rust_data_type.md" @@ -6,7 +6,8 @@ Rust 语言设计者对于在内存中操作数据的要求非常高,比如在官方首页的 "Why Rust" 一节,提到了要做到 "memory-efficient" 和 "memory-safe",就是内存高效和内存安全,基于这样的设计目标,Rust 的数据类型设计非常精细。所以深入理解 Rust 类型是学好 Rust 编程的基础。 - +学习 Rust 类型,需要了解这个类型保存在内存的什么地方(栈,堆,静态数据区 等等),占用多大空间(特别是在栈上占用多少空间),怎么操作(如 push, push_str, insert, 等等)。 + 下面简要说明一下具体类型。 Rust 的标量类型(scalar type) 是指表示为单一值的类型,有: diff --git "a/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/2.\345\216\237\347\224\237\346\225\260\346\215\256\347\261\273\345\236\213/config.json" "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/2.\345\216\237\347\224\237\346\225\260\346\215\256\347\261\273\345\236\213/config.json" index 0fea9c94678d365cd41a65e2e3cf3042d60fa9bb..0b53b70534dd074598c9a877c007d798822c481f 100644 --- "a/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/2.\345\216\237\347\224\237\346\225\260\346\215\256\347\261\273\345\236\213/config.json" +++ "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/2.\345\216\237\347\224\237\346\225\260\346\215\256\347\261\273\345\236\213/config.json" @@ -2,7 +2,9 @@ "node_id": "rust-f71cc0b141fc44be94eb203532dcb0ac", "keywords": [], "children": [], - "export": [], + "export": [ + "primitives.json" + ], "keywords_must": [], "keywords_forbid": [] } \ No newline at end of file diff --git "a/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/2.\345\216\237\347\224\237\346\225\260\346\215\256\347\261\273\345\236\213/primitives.json" "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/2.\345\216\237\347\224\237\346\225\260\346\215\256\347\261\273\345\236\213/primitives.json" new file mode 100644 index 0000000000000000000000000000000000000000..4bbb06cd87b099639f1bc9c22a673fa4158a2164 --- /dev/null +++ "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/2.\345\216\237\347\224\237\346\225\260\346\215\256\347\261\273\345\236\213/primitives.json" @@ -0,0 +1,7 @@ +{ + "type": "code_options", + "author": "jackymao_com", + "source": "primitives.md", + "notebook_enable": false, + "exercise_id": "" + } \ No newline at end of file diff --git "a/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/2.\345\216\237\347\224\237\346\225\260\346\215\256\347\261\273\345\236\213/primitives.md" "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/2.\345\216\237\347\224\237\346\225\260\346\215\256\347\261\273\345\236\213/primitives.md" new file mode 100644 index 0000000000000000000000000000000000000000..9303bdb26309140115313022bed9060f56b098d9 --- /dev/null +++ "b/data/1.rust\345\210\235\351\230\266/2.rust\345\237\272\346\234\254\346\246\202\345\277\265/2.\345\216\237\347\224\237\346\225\260\346\215\256\347\261\273\345\236\213/primitives.md" @@ -0,0 +1,63 @@ +# Rust 原生类型 + +Rust 提供的原生类型有: + +标量类型: +- 带符号整数 i8, i16, i32, i64, i128 和 isize +- 无符号整数 u8, u16, u32, u64, u128 和 usize +- 浮点数 f32, f64 +- 字符 char, 每个字符占用 4 字节 +- 布尔值 true 或 false +- 单元类型,即 () + +组合类型 +- 数组 array 如 [1, 2, 3] +- 元组 tuple 如 (1, true) +- 切片 slice + +以下不会出现编译错误的是 + +## 答案 + +```rust +fn main() { + let a = 42; + let a = 4294967296_i64; + let mut s = "12"; + let s = "true"; + let s = false; +} +``` + +## 选项 + +### 变量类型不可变 + +```rust +fn main() { + let mut mutable = 12; + mutable = 21; + + mutable = true; +} +``` + +### 变量类型 u32 不能出现负值 + +```rust +fn main() { + println!("1 + 2 = {}", 1i32 + 2); + + println!("1 - 2 = {}", 1u32 - 2); +} +``` + +### 切片是不定长类型,只能以引用形式赋值或使用。 + +```rust +fn main() { + let xs: [i32] = [1, 2, 3, 4, 5]; + + let ys: [i32; 500] = [0; 500]; +} +```