diff --git a/Common-Use/hashmap.exe b/Common-Use/hashmap.exe new file mode 100644 index 0000000..ce2655f Binary files /dev/null and b/Common-Use/hashmap.exe differ diff --git a/Common-Use/hashmap.pdb b/Common-Use/hashmap.pdb new file mode 100644 index 0000000..a7b1daa Binary files /dev/null and b/Common-Use/hashmap.pdb differ diff --git a/Common-Use/hashmap.rs b/Common-Use/hashmap.rs new file mode 100644 index 0000000..7e7542d --- /dev/null +++ b/Common-Use/hashmap.rs @@ -0,0 +1,26 @@ +use std::collections::HashMap; + +fn thereisnoerror() { + let mut map = std::collections::HashMap::new(); + map.insert("key1", "value1"); + map.insert("key2", "value2"); + println!("{:?}", map); +} + +fn main(){ + let mut h = HashMap::new(); + h.insert(1, "one"); + h.insert(2, "two"); + h.insert(3, "three"); + h.insert(4, "four"); + h.insert(5, "five"); + print!("{:?} ", h); + //println!("{0}", *h.count(4)); + let mut a = |y: i64| -> i64 { return 1 + y; }; + let result = a(3); + println!("{}", result); + match h.get(&4) { + Some(v) => println!("Found: {}", v), + None => println!("Not Found"), + } +} \ No newline at end of file diff --git a/Common-Use/readme.md b/Common-Use/readme.md new file mode 100644 index 0000000..5facd36 --- /dev/null +++ b/Common-Use/readme.md @@ -0,0 +1,290 @@ +非常好的问题 👏 +`Option<&V>` 是 Rust 中非常核心的类型之一,理解它对你掌握 **Rust 的所有权系统** 和 **安全编程哲学** 都至关重要。 +我们来一步步深入讲清楚,从原理到底层实现、再到各种用法与技巧。 + +--- + +# 🧩 一、什么是 `Option` + +## ✅ 定义 + +`Option` 是一个**枚举类型**,定义在标准库中: + +```rust +enum Option { + Some(T), + None, +} +``` + +也就是说,它是一个「可能有值,也可能没有值」的容器。 + +* `Some(T)` 表示存在一个值; +* `None` 表示值不存在。 + +--- + +## 🧠 为什么要有 `Option` + +在很多语言(如 C/C++、Java)中,缺失值通常用 `NULL` 或 `None`,但容易出错。 +Rust 用 `Option` 代替「空指针」,**在类型层面上强制你处理缺失的情况**。 +这样编译器就能帮你防止空指针错误(`null pointer dereference`)。 + +--- + +# 🔍 二、`Option<&V>` 是什么? + +在 `HashMap::get()` 等函数中,你会看到返回类型是: + +```rust +Option<&V> +``` + +意思是: + +> “可能返回一个指向值 `V` 的引用,如果 key 不存在,则返回 None。” + +举个例子: + +```rust +use std::collections::HashMap; + +fn main() { + let mut map = HashMap::new(); + map.insert("apple", 3); + + let v1 = map.get("apple"); // Some(&3) + let v2 = map.get("banana"); // None + + println!("{:?} {:?}", v1, v2); +} +``` + +输出: + +``` +Some(3) None +``` + +--- + +# 🧩 三、匹配(模式匹配)方式 + +最常见的处理方式是 **match**: + +```rust +match map.get("apple") { + Some(value) => println!("Found: {}", value), + None => println!("Not found"), +} +``` + +这种写法非常直观,但略显冗长,于是 Rust 提供了更优雅的写法👇 + +--- + +# ⚙️ 四、常见用法大全 + +## 1️⃣ `is_some()` / `is_none()` + +判断是否存在值: + +```rust +if map.get("apple").is_some() { + println!("存在 apple"); +} +``` + +--- + +## 2️⃣ `unwrap()` / `unwrap_or()` / `unwrap_or_default()` + +提取值: + +```rust +let v = map.get("apple").unwrap(); // 若 None 则 panic! +let v = map.get("apple").unwrap_or(&0); // 若 None 则返回 &0 +let v = map.get("apple").unwrap_or_default(); // 若 None 则返回默认值 +``` + +> ⚠️ 不建议随意使用 `unwrap()`,除非你确信一定有值。 + +--- + +## 3️⃣ `if let` 简写匹配 + +```rust +if let Some(v) = map.get("apple") { + println!("数量: {}", v); +} +``` + +比 `match` 简洁,常用于只关心 `Some` 的情况。 + +--- + +## 4️⃣ `map()` —— 映射转换 + +`map()` 能把 `Option` 内的值加工成另一个类型: + +```rust +let length = map.get("apple").map(|v| v * 2); +println!("{:?}", length); // Some(6) +``` + +若为 `None`,则结果仍是 `None`。 + +--- + +## 5️⃣ `and_then()` —— 链式调用 + +用于多层 Option 嵌套场景: + +```rust +let result = map.get("apple") + .and_then(|v| Some(v * 10)) + .and_then(|x| Some(x + 1)); +println!("{:?}", result); // Some(31) +``` + +--- + +## 6️⃣ `unwrap_or_else()` —— 延迟计算默认值 + +```rust +let v = map.get("banana").unwrap_or_else(|| { + println!("key 不存在,使用默认值"); + &0 +}); +``` + +如果 key 不存在,执行闭包生成默认值。 + +--- + +## 7️⃣ `as_ref()` / `as_mut()` + +将 `Option` 转换为 `Option<&T>` 或 `Option<&mut T>`: + +```rust +let opt = Some(String::from("hi")); +let ref_opt = opt.as_ref(); // Option<&String> +let mut_opt = opt.as_ref(); // Option<&mut String> +``` + +这在借用时非常实用,尤其是嵌套结构。 + +--- + +## 8️⃣ `expect()` —— 自定义 panic 信息 + +```rust +let v = map.get("apple").expect("apple 不存在!"); +``` + +如果是 `None`,会 panic 并显示 `"apple 不存在!"`。 + +--- + +## 9️⃣ `copied()` / `cloned()` + +如果你要从 `Option<&T>` 提取出 `Option`(复制/克隆),可以这样: + +```rust +let map = HashMap::from([("a", 10)]); +let val = map.get("a").copied(); // Option +println!("{:?}", val); // Some(10) +``` + +区别: + +* `.copied()` 要求 `T: Copy` +* `.cloned()` 要求 `T: Clone` + +--- + +## 🔟 `unwrap_or_default()` + +对简单类型(如 `i32`、`bool`)非常方便: + +```rust +let map = HashMap::new(); +let v: i32 = *map.get("x").unwrap_or_default(); // None -> 默认0 +``` + +--- + +# 🧠 五、内部机制(零成本抽象) + +Rust 的 `Option` 在底层通常会被 **编译器优化为“无额外开销”** 的形式。 + +举个例子: +`Option<&T>` 通常和 `*const T` 的大小完全一样。 +因为: + +* `None` 会用空指针 `0` 表示; +* `Some(x)` 则用非零指针。 + +所以: + +```rust +std::mem::size_of::>() == std::mem::size_of::<&i32>() +``` + +✅ 成立,说明 `Option<&T>` 没有额外开销。 + +--- + +# 🧩 六、总结表格 + +| 方法 | 作用 | 示例 | | | +| --------------------- | -------------------------------- | ------------------------- | - | ----------- | +| `is_some()` | 是否有值 | `opt.is_some()` | | | +| `is_none()` | 是否为空 | `opt.is_none()` | | | +| `unwrap()` | 直接取值(危险) | `opt.unwrap()` | | | +| `unwrap_or(x)` | 无值时返回 x | `opt.unwrap_or(0)` | | | +| `unwrap_or_default()` | 无值时返回默认值 | `opt.unwrap_or_default()` | | | +| `unwrap_or_else(f)` | 无值时调用函数生成 | `opt.unwrap_or_else( | | 0)` | +| `expect(msg)` | 无值时 panic,带信息 | `opt.expect("错误")` | | | +| `map(f)` | 处理 Some 中的值 | `opt.map( | x | x+1)` | +| `and_then(f)` | 链式 Option 处理 | `opt.and_then( | x | Some(x+1))` | +| `as_ref()` | 转换为 Option<&T> | `opt.as_ref()` | | | +| `as_mut()` | 转换为 Option<&mut T> | `opt.as_mut()` | | | +| `copied()` | Option<&T> → Option(T: Copy) | `opt.copied()` | | | +| `cloned()` | Option<&T> → Option(T: Clone) | `opt.cloned()` | | | + +--- + +# 🔚 七、一个综合示例 + +```rust +use std::collections::HashMap; + +fn main() { + let mut scores = HashMap::new(); + scores.insert("Alice", 90); + scores.insert("Bob", 85); + + let name = "Charlie"; + let score = scores.get(name) + .copied() // Option + .unwrap_or_else(|| { + println!("{name} 不存在,使用默认分数"); + 60 + }); + + println!("{name} 的分数是 {score}"); +} +``` + +输出: + +``` +Charlie 不存在,使用默认分数 +Charlie 的分数是 60 +``` + +--- + +是否希望我接着帮你画一张「`Option` 方法调用关系图(功能导图)」? +那张图能直观看出各种方法如何互相转换,非常适合记忆和快速查阅。 diff --git a/Common-Use/vec.exe b/Common-Use/vec.exe new file mode 100644 index 0000000..d2a8628 Binary files /dev/null and b/Common-Use/vec.exe differ diff --git a/Common-Use/vec.pdb b/Common-Use/vec.pdb new file mode 100644 index 0000000..56f9579 Binary files /dev/null and b/Common-Use/vec.pdb differ diff --git a/Common-Use/vec.rs b/Common-Use/vec.rs new file mode 100644 index 0000000..6bbf279 --- /dev/null +++ b/Common-Use/vec.rs @@ -0,0 +1,18 @@ +fn sum(list:&Vec) -> i64 { + let mut total = 0; + for i in list { + total += i; + } + total +} + +fn main(){ + let mut v: Vec = Vec::new(); + v.push(1); + v.push(2); + v.push(3); + for i in &v { + println!("{}", i); + } + println!("Sum: {}", sum(&v)); +} \ No newline at end of file diff --git a/Macro/macrotest.exe b/Macro/macrotest.exe new file mode 100644 index 0000000..949e9be Binary files /dev/null and b/Macro/macrotest.exe differ diff --git a/Macro/macrotest.pdb b/Macro/macrotest.pdb new file mode 100644 index 0000000..fa9b11e Binary files /dev/null and b/Macro/macrotest.pdb differ diff --git a/Macro/macrotest.rs b/Macro/macrotest.rs new file mode 100644 index 0000000..a29146c --- /dev/null +++ b/Macro/macrotest.rs @@ -0,0 +1,10 @@ +macro_rules! double_and_add_one { + ($x : expr) => { + $x * 2 + 1; + }; +} + +fn main(){ + let result = double_and_add_one!(5); + println!("Result: {}", result); // This will print "Result: 11" +} \ No newline at end of file diff --git a/Macro/readme.md b/Macro/readme.md new file mode 100644 index 0000000..0cbee1f --- /dev/null +++ b/Macro/readme.md @@ -0,0 +1,124 @@ +完全可以,我们来系统讲一下 `macro_rules!` 中 **宏变量匹配类型**,也就是你说的除了 `expr` 还能匹配什么。 + +--- + +## 1️⃣ 基本宏变量语法 + +```rust +$变量名:匹配类型 +``` + +* `$` → 宏变量前缀 +* `变量名` → 自己命名 +* `匹配类型` → Rust 定义的一些匹配规则,告诉宏要匹配什么类型的语法单元 + +--- + +## 2️⃣ 常用匹配类型 + +| 匹配类型 | 描述 | 示例 | +| --------- | --------------- | --------------------------------------- | +| `expr` | 表达式 | `5 + 3`, `a * b`, `func(1)` | +| `ident` | 标识符 | `x`, `my_var` | +| `ty` | 类型 | `i32`, `Vec` | +| `pat` | 模式 | `Some(x)`, `(a, b)` | +| `stmt` | 语句 | `let x = 1;` | +| `block` | 代码块 | `{ let x = 1; x+2 }` | +| `meta` | 元属性 | `derive(Debug)` | +| `tt` | Token Tree(最通用) | 单个标记或标记组,几乎可以匹配任何东西 | +| `path` | 路径 | `std::io::Result`, `crate::module::Foo` | +| `literal` | 字面量 | `"hello"`, `42`, `3.14` | + +--- + +### 3️⃣ 示例 + +#### 表达式匹配 + +```rust +macro_rules! add { + ($a:expr, $b:expr) => { + $a + $b + }; +} + +let x = add!(1 + 2, 3 * 4); // 匹配复杂表达式 +``` + +#### 类型匹配 + +```rust +macro_rules! make_default { + ($t:ty) => { + <$t>::default() + }; +} + +let v: Vec = make_default!(Vec); +``` + +#### 标识符匹配 + +```rust +macro_rules! create_var { + ($name:ident) => { + let $name = 42; + }; +} + +create_var!(my_var); +println!("{}", my_var); // 输出 42 +``` + +#### 语句匹配 + +```rust +macro_rules! repeat_stmt { + ($s:stmt) => { + $s + $s + }; +} + +repeat_stmt!(println!("Hi");) // 会打印两次 Hi +``` + +#### 代码块匹配 + +```rust +macro_rules! run_block { + ($b:block) => { + println!("Before"); + $b + println!("After"); + }; +} + +run_block!({ + println!("Inside"); +}); +``` + +输出: + +``` +Before +Inside +After +``` + +--- + +### 4️⃣ 小结 + +* `expr` 只能匹配表达式 +* Rust 宏提供了多种匹配类型(`ident`, `ty`, `pat`, `stmt`, `block`, `literal`, `tt` 等) +* `tt` 最通用,但匹配后需要自己处理结构 + +> 可以理解为:**每个匹配类型限制了宏能匹配的语法单元**,避免写宏时乱匹配或产生歧义 + +--- + +我可以画一张 **macro_rules! 匹配类型示意图**,把 `expr, ident, ty, pat, stmt, block, tt, literal` 的对应语法单元和示例都标出来,一目了然。 + +你希望我画吗? diff --git a/Macro/宏 b/Macro/宏 new file mode 100644 index 0000000..e69de29 diff --git a/Package-Crate/cratetest/Cargo.lock b/Package-Crate/cratetest/Cargo.lock new file mode 100644 index 0000000..389f03f --- /dev/null +++ b/Package-Crate/cratetest/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "cratetest" +version = "0.1.0" diff --git a/Package-Crate/cratetest/Cargo.toml b/Package-Crate/cratetest/Cargo.toml new file mode 100644 index 0000000..e2c67d1 --- /dev/null +++ b/Package-Crate/cratetest/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "cratetest" +version = "0.1.0" +edition = "2024" + +[dependencies] diff --git a/Package-Crate/cratetest/src/lib.rs b/Package-Crate/cratetest/src/lib.rs new file mode 100644 index 0000000..e69de29 diff --git a/Package-Crate/cratetest/src/main.rs b/Package-Crate/cratetest/src/main.rs new file mode 100644 index 0000000..c0835c7 --- /dev/null +++ b/Package-Crate/cratetest/src/main.rs @@ -0,0 +1,6 @@ +mod student; +fn main() { + let s = student::monitor::check::check_num::Container::init_auto(1, String::from("Alice"), 20, 95.5); + student::monitor::check::check_score::score(s); + println!("Hello, world!"); +} \ No newline at end of file diff --git a/Package-Crate/cratetest/src/student/mod.rs b/Package-Crate/cratetest/src/student/mod.rs new file mode 100644 index 0000000..2b2cbaa --- /dev/null +++ b/Package-Crate/cratetest/src/student/mod.rs @@ -0,0 +1,2 @@ +pub mod ordinary; +pub mod monitor; \ No newline at end of file diff --git a/Package-Crate/cratetest/src/student/monitor.rs b/Package-Crate/cratetest/src/student/monitor.rs new file mode 100644 index 0000000..411fcbd --- /dev/null +++ b/Package-Crate/cratetest/src/student/monitor.rs @@ -0,0 +1,50 @@ +pub mod check{ + pub mod check_num{ + pub const MAX_NUM:i64 = 120; //check中且不能改 + pub static mut NUM:i64 = 30; //必须用unsafe + //比较好的方法是用一个结构体存 + pub struct Container{ + num: i64, + name: String, + age: i64, + score: f64 + } + impl Container { + pub fn init_self(&mut self, num_:i64, name_:String, age_:i64, score_:f64){ + self.num = num_; + self.name = name_; + self.age = age_; + self.score = score_; + } + pub fn init_auto(num:i64, name:String, age:i64, score:f64) -> Self { + return Self { num, name, age, score }; + } + pub fn num(&self) -> i64{ + return self.num; + } + pub fn score_rt(&self) -> f64 { + return self.score; + } + } + pub fn max_num() -> i64{ + return MAX_NUM; + } + + } + pub mod check_score{ + use crate::student::monitor::check::check_num::Container; + pub fn score(c:Container){ + println!("Score is {0}", c.score_rt()); + } + } +} + +pub mod alarm{ + pub fn not_allowed(){ + println!("This Action is Not Allowed"); + } +} + +pub mod unite{ + +} diff --git a/Package-Crate/cratetest/src/student/ordinary.rs b/Package-Crate/cratetest/src/student/ordinary.rs new file mode 100644 index 0000000..9c3a189 --- /dev/null +++ b/Package-Crate/cratetest/src/student/ordinary.rs @@ -0,0 +1,14 @@ +pub mod biology{ + pub struct Info{ + word: String, + num: i64 + } + impl Info{ + pub fn init(&self, word: String, num: i64) -> Self { + Self { word, num } + } + pub fn getinfo(&self){ + println!("My name is {0}, I have number {1}", self.word, self.num); + } + } +} \ No newline at end of file diff --git a/Package-Crate/cratetest/target/.rustc_info.json b/Package-Crate/cratetest/target/.rustc_info.json new file mode 100644 index 0000000..0471465 --- /dev/null +++ b/Package-Crate/cratetest/target/.rustc_info.json @@ -0,0 +1 @@ +{"rustc_fingerprint":10462622210688861186,"outputs":{"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\huaji\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""},"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.89.0 (29483883e 2025-08-04)\nbinary: rustc\ncommit-hash: 29483883eed69d5fb4db01964cdf2af4d86e9cb2\ncommit-date: 2025-08-04\nhost: x86_64-pc-windows-msvc\nrelease: 1.89.0\nLLVM version: 20.1.7\n","stderr":""}},"successes":{}} \ No newline at end of file diff --git a/Package-Crate/cratetest/target/CACHEDIR.TAG b/Package-Crate/cratetest/target/CACHEDIR.TAG new file mode 100644 index 0000000..20d7c31 --- /dev/null +++ b/Package-Crate/cratetest/target/CACHEDIR.TAG @@ -0,0 +1,3 @@ +Signature: 8a477f597d28d172789f06886806bc55 +# This file is a cache directory tag created by cargo. +# For information about cache directory tags see https://bford.info/cachedir/ diff --git a/Package-Crate/cratetest/target/debug/.cargo-lock b/Package-Crate/cratetest/target/debug/.cargo-lock new file mode 100644 index 0000000..e69de29 diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/dep-test-bin-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/dep-test-bin-cratetest new file mode 100644 index 0000000..cdcf293 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/dep-test-bin-cratetest differ diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/invoked.timestamp b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/output-test-bin-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/output-test-bin-cratetest new file mode 100644 index 0000000..ab25eb5 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/output-test-bin-cratetest @@ -0,0 +1,9 @@ +{"$message_type":"diagnostic","message":"struct `Info` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\ordinary.rs","byte_start":33,"byte_end":37,"line_start":2,"line_end":2,"column_start":16,"column_end":20,"is_primary":true,"text":[{"text":" pub struct Info{","highlight_start":16,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(dead_code)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: struct `Info` is never constructed\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\ordinary.rs:2:16\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m2\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub struct Info{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m= \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15mnote\u001b[0m\u001b[0m: `#[warn(dead_code)]` on by default\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"methods `init` and `getinfo` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\ordinary.rs","byte_start":92,"byte_end":101,"line_start":6,"line_end":6,"column_start":5,"column_end":14,"is_primary":false,"text":[{"text":" impl Info{","highlight_start":5,"highlight_end":14}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\ordinary.rs","byte_start":119,"byte_end":123,"line_start":7,"line_end":7,"column_start":16,"column_end":20,"is_primary":true,"text":[{"text":" pub fn init(&self, word: String, num: i64) -> Self {","highlight_start":16,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\ordinary.rs","byte_start":224,"byte_end":231,"line_start":10,"line_end":10,"column_start":16,"column_end":23,"is_primary":true,"text":[{"text":" pub fn getinfo(&self){","highlight_start":16,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: methods `init` and `getinfo` are never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\ordinary.rs:7:16\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m6\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m impl Info{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m---------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14mmethods in this implementation\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m7\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn init(&self, word: String, num: i64) -> Self {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m10\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn getinfo(&self){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"constant `MAX_NUM` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":58,"byte_end":65,"line_start":3,"line_end":3,"column_start":19,"column_end":26,"is_primary":true,"text":[{"text":" pub const MAX_NUM:i64 = 120; //check中且不能改","highlight_start":19,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: constant `MAX_NUM` is never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:3:19\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m3\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub const MAX_NUM:i64 = 120; //check中且不能改\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"static `NUM` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":124,"byte_end":127,"line_start":4,"line_end":4,"column_start":24,"column_end":27,"is_primary":true,"text":[{"text":" pub static mut NUM:i64 = 30; //必须用unsafe","highlight_start":24,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: static `NUM` is never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:4:24\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub static mut NUM:i64 = 30; //必须用unsafe\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"fields `num`, `name`, and `age` are never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":230,"byte_end":239,"line_start":6,"line_end":6,"column_start":20,"column_end":29,"is_primary":false,"text":[{"text":" pub struct Container{","highlight_start":20,"highlight_end":29}],"label":"fields in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":254,"byte_end":257,"line_start":7,"line_end":7,"column_start":13,"column_end":16,"is_primary":true,"text":[{"text":" num: i64,","highlight_start":13,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":277,"byte_end":281,"line_start":8,"line_end":8,"column_start":13,"column_end":17,"is_primary":true,"text":[{"text":" name: String,","highlight_start":13,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":304,"byte_end":307,"line_start":9,"line_end":9,"column_start":13,"column_end":16,"is_primary":true,"text":[{"text":" age: i64,","highlight_start":13,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: fields `num`, `name`, and `age` are never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:7:13\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m6\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub struct Container{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m---------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14mfields in this struct\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m7\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m num: i64,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m8\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m name: String,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m9\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m age: i64,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"methods `init_self` and `num` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":358,"byte_end":372,"line_start":12,"line_end":12,"column_start":9,"column_end":23,"is_primary":false,"text":[{"text":" impl Container {","highlight_start":9,"highlight_end":23}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":396,"byte_end":405,"line_start":13,"line_end":13,"column_start":20,"column_end":29,"is_primary":true,"text":[{"text":" pub fn init_self(&mut self, num_:i64, name_:String, age_:i64, score_:f64){","highlight_start":20,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":794,"byte_end":797,"line_start":22,"line_end":22,"column_start":20,"column_end":23,"is_primary":true,"text":[{"text":" pub fn num(&self) -> i64{","highlight_start":20,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: methods `init_self` and `num` are never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:13:20\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m12\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m impl Container {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--------------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14mmethods in this implementation\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m13\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn init_self(&mut self, num_:i64, name_:String, age_:i64, score_:f64){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m22\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn num(&self) -> i64{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"function `max_num` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":985,"byte_end":992,"line_start":29,"line_end":29,"column_start":16,"column_end":23,"is_primary":true,"text":[{"text":" pub fn max_num() -> i64{","highlight_start":16,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: function `max_num` is never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:29:16\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m29\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn max_num() -> i64{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"function `not_allowed` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":1293,"byte_end":1304,"line_start":43,"line_end":43,"column_start":12,"column_end":23,"is_primary":true,"text":[{"text":" pub fn not_allowed(){","highlight_start":12,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: function `not_allowed` is never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:43:12\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m43\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn not_allowed(){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"8 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: 8 warnings emitted\u001b[0m\n\n"} diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/test-bin-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/test-bin-cratetest new file mode 100644 index 0000000..9a23585 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/test-bin-cratetest @@ -0,0 +1 @@ +c67506101aee53a5 \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/test-bin-cratetest.json b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/test-bin-cratetest.json new file mode 100644 index 0000000..40306d7 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18245caf720d90fc/test-bin-cratetest.json @@ -0,0 +1 @@ +{"rustc":3062648155896360161,"features":"[]","declared_features":"[]","target":15519478794282214699,"profile":3316208278650011218,"path":4942398508502643691,"deps":[[198839618041740247,"cratetest",false,18430654450331647994]],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\cratetest-18245caf720d90fc\\dep-test-bin-cratetest","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/bin-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/bin-cratetest new file mode 100644 index 0000000..b0bec62 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/bin-cratetest @@ -0,0 +1 @@ +589e821bb81016bc \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/bin-cratetest.json b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/bin-cratetest.json new file mode 100644 index 0000000..69db171 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/bin-cratetest.json @@ -0,0 +1 @@ +{"rustc":3062648155896360161,"features":"[]","declared_features":"[]","target":15519478794282214699,"profile":8731458305071235362,"path":4942398508502643691,"deps":[[198839618041740247,"cratetest",false,18262412242635120008]],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\cratetest-18ae1240f891c4ad\\dep-bin-cratetest","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/dep-bin-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/dep-bin-cratetest new file mode 100644 index 0000000..dc2f4f4 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/dep-bin-cratetest differ diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/invoked.timestamp b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/output-bin-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/output-bin-cratetest new file mode 100644 index 0000000..ab25eb5 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-18ae1240f891c4ad/output-bin-cratetest @@ -0,0 +1,9 @@ +{"$message_type":"diagnostic","message":"struct `Info` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\ordinary.rs","byte_start":33,"byte_end":37,"line_start":2,"line_end":2,"column_start":16,"column_end":20,"is_primary":true,"text":[{"text":" pub struct Info{","highlight_start":16,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(dead_code)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: struct `Info` is never constructed\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\ordinary.rs:2:16\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m2\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub struct Info{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m= \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15mnote\u001b[0m\u001b[0m: `#[warn(dead_code)]` on by default\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"methods `init` and `getinfo` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\ordinary.rs","byte_start":92,"byte_end":101,"line_start":6,"line_end":6,"column_start":5,"column_end":14,"is_primary":false,"text":[{"text":" impl Info{","highlight_start":5,"highlight_end":14}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\ordinary.rs","byte_start":119,"byte_end":123,"line_start":7,"line_end":7,"column_start":16,"column_end":20,"is_primary":true,"text":[{"text":" pub fn init(&self, word: String, num: i64) -> Self {","highlight_start":16,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\ordinary.rs","byte_start":224,"byte_end":231,"line_start":10,"line_end":10,"column_start":16,"column_end":23,"is_primary":true,"text":[{"text":" pub fn getinfo(&self){","highlight_start":16,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: methods `init` and `getinfo` are never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\ordinary.rs:7:16\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m6\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m impl Info{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m---------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14mmethods in this implementation\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m7\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn init(&self, word: String, num: i64) -> Self {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m10\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn getinfo(&self){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"constant `MAX_NUM` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":58,"byte_end":65,"line_start":3,"line_end":3,"column_start":19,"column_end":26,"is_primary":true,"text":[{"text":" pub const MAX_NUM:i64 = 120; //check中且不能改","highlight_start":19,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: constant `MAX_NUM` is never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:3:19\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m3\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub const MAX_NUM:i64 = 120; //check中且不能改\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"static `NUM` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":124,"byte_end":127,"line_start":4,"line_end":4,"column_start":24,"column_end":27,"is_primary":true,"text":[{"text":" pub static mut NUM:i64 = 30; //必须用unsafe","highlight_start":24,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: static `NUM` is never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:4:24\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub static mut NUM:i64 = 30; //必须用unsafe\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"fields `num`, `name`, and `age` are never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":230,"byte_end":239,"line_start":6,"line_end":6,"column_start":20,"column_end":29,"is_primary":false,"text":[{"text":" pub struct Container{","highlight_start":20,"highlight_end":29}],"label":"fields in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":254,"byte_end":257,"line_start":7,"line_end":7,"column_start":13,"column_end":16,"is_primary":true,"text":[{"text":" num: i64,","highlight_start":13,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":277,"byte_end":281,"line_start":8,"line_end":8,"column_start":13,"column_end":17,"is_primary":true,"text":[{"text":" name: String,","highlight_start":13,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":304,"byte_end":307,"line_start":9,"line_end":9,"column_start":13,"column_end":16,"is_primary":true,"text":[{"text":" age: i64,","highlight_start":13,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: fields `num`, `name`, and `age` are never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:7:13\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m6\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub struct Container{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m---------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14mfields in this struct\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m7\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m num: i64,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m8\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m name: String,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m9\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m age: i64,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"methods `init_self` and `num` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":358,"byte_end":372,"line_start":12,"line_end":12,"column_start":9,"column_end":23,"is_primary":false,"text":[{"text":" impl Container {","highlight_start":9,"highlight_end":23}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":396,"byte_end":405,"line_start":13,"line_end":13,"column_start":20,"column_end":29,"is_primary":true,"text":[{"text":" pub fn init_self(&mut self, num_:i64, name_:String, age_:i64, score_:f64){","highlight_start":20,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":794,"byte_end":797,"line_start":22,"line_end":22,"column_start":20,"column_end":23,"is_primary":true,"text":[{"text":" pub fn num(&self) -> i64{","highlight_start":20,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: methods `init_self` and `num` are never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:13:20\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m12\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m impl Container {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--------------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14mmethods in this implementation\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m13\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn init_self(&mut self, num_:i64, name_:String, age_:i64, score_:f64){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m22\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn num(&self) -> i64{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"function `max_num` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":985,"byte_end":992,"line_start":29,"line_end":29,"column_start":16,"column_end":23,"is_primary":true,"text":[{"text":" pub fn max_num() -> i64{","highlight_start":16,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: function `max_num` is never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:29:16\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m29\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn max_num() -> i64{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"function `not_allowed` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":1293,"byte_end":1304,"line_start":43,"line_end":43,"column_start":12,"column_end":23,"is_primary":true,"text":[{"text":" pub fn not_allowed(){","highlight_start":12,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: function `not_allowed` is never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:43:12\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m43\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn not_allowed(){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"8 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: 8 warnings emitted\u001b[0m\n\n"} diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-99ce758d585dbfb5/dep-lib-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-99ce758d585dbfb5/dep-lib-cratetest new file mode 100644 index 0000000..02bca30 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-99ce758d585dbfb5/dep-lib-cratetest differ diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-99ce758d585dbfb5/invoked.timestamp b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-99ce758d585dbfb5/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-99ce758d585dbfb5/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-99ce758d585dbfb5/lib-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-99ce758d585dbfb5/lib-cratetest new file mode 100644 index 0000000..2b15d89 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-99ce758d585dbfb5/lib-cratetest @@ -0,0 +1 @@ +fa7ffda192d6c6ff \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-99ce758d585dbfb5/lib-cratetest.json b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-99ce758d585dbfb5/lib-cratetest.json new file mode 100644 index 0000000..679c02b --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-99ce758d585dbfb5/lib-cratetest.json @@ -0,0 +1 @@ +{"rustc":3062648155896360161,"features":"[]","declared_features":"[]","target":7479634845804353691,"profile":17672942494452627365,"path":10763286916239946207,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\cratetest-99ce758d585dbfb5\\dep-lib-cratetest","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-ad4fb1e3517573b1/dep-test-lib-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-ad4fb1e3517573b1/dep-test-lib-cratetest new file mode 100644 index 0000000..02bca30 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-ad4fb1e3517573b1/dep-test-lib-cratetest differ diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-ad4fb1e3517573b1/invoked.timestamp b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-ad4fb1e3517573b1/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-ad4fb1e3517573b1/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-ad4fb1e3517573b1/test-lib-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-ad4fb1e3517573b1/test-lib-cratetest new file mode 100644 index 0000000..5a9bf8d --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-ad4fb1e3517573b1/test-lib-cratetest @@ -0,0 +1 @@ +c1b1db4cf5b9bbc9 \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-ad4fb1e3517573b1/test-lib-cratetest.json b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-ad4fb1e3517573b1/test-lib-cratetest.json new file mode 100644 index 0000000..4420cca --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-ad4fb1e3517573b1/test-lib-cratetest.json @@ -0,0 +1 @@ +{"rustc":3062648155896360161,"features":"[]","declared_features":"[]","target":7479634845804353691,"profile":3316208278650011218,"path":10763286916239946207,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\cratetest-ad4fb1e3517573b1\\dep-test-lib-cratetest","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/bin-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/bin-cratetest new file mode 100644 index 0000000..14372c5 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/bin-cratetest @@ -0,0 +1 @@ +090467bb01666943 \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/bin-cratetest.json b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/bin-cratetest.json new file mode 100644 index 0000000..b2107c1 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/bin-cratetest.json @@ -0,0 +1 @@ +{"rustc":3062648155896360161,"features":"[]","declared_features":"[]","target":15519478794282214699,"profile":17672942494452627365,"path":4942398508502643691,"deps":[[198839618041740247,"cratetest",false,18430654450331647994]],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\cratetest-d257ba26dc831c10\\dep-bin-cratetest","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/dep-bin-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/dep-bin-cratetest new file mode 100644 index 0000000..696a197 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/dep-bin-cratetest differ diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/invoked.timestamp b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/output-bin-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/output-bin-cratetest new file mode 100644 index 0000000..ab25eb5 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-d257ba26dc831c10/output-bin-cratetest @@ -0,0 +1,9 @@ +{"$message_type":"diagnostic","message":"struct `Info` is never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\ordinary.rs","byte_start":33,"byte_end":37,"line_start":2,"line_end":2,"column_start":16,"column_end":20,"is_primary":true,"text":[{"text":" pub struct Info{","highlight_start":16,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(dead_code)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: struct `Info` is never constructed\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\ordinary.rs:2:16\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m2\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub struct Info{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m= \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15mnote\u001b[0m\u001b[0m: `#[warn(dead_code)]` on by default\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"methods `init` and `getinfo` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\ordinary.rs","byte_start":92,"byte_end":101,"line_start":6,"line_end":6,"column_start":5,"column_end":14,"is_primary":false,"text":[{"text":" impl Info{","highlight_start":5,"highlight_end":14}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\ordinary.rs","byte_start":119,"byte_end":123,"line_start":7,"line_end":7,"column_start":16,"column_end":20,"is_primary":true,"text":[{"text":" pub fn init(&self, word: String, num: i64) -> Self {","highlight_start":16,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\ordinary.rs","byte_start":224,"byte_end":231,"line_start":10,"line_end":10,"column_start":16,"column_end":23,"is_primary":true,"text":[{"text":" pub fn getinfo(&self){","highlight_start":16,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: methods `init` and `getinfo` are never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\ordinary.rs:7:16\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m6\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m impl Info{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m---------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14mmethods in this implementation\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m7\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn init(&self, word: String, num: i64) -> Self {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m10\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn getinfo(&self){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"constant `MAX_NUM` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":58,"byte_end":65,"line_start":3,"line_end":3,"column_start":19,"column_end":26,"is_primary":true,"text":[{"text":" pub const MAX_NUM:i64 = 120; //check中且不能改","highlight_start":19,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: constant `MAX_NUM` is never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:3:19\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m3\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub const MAX_NUM:i64 = 120; //check中且不能改\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"static `NUM` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":124,"byte_end":127,"line_start":4,"line_end":4,"column_start":24,"column_end":27,"is_primary":true,"text":[{"text":" pub static mut NUM:i64 = 30; //必须用unsafe","highlight_start":24,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: static `NUM` is never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:4:24\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub static mut NUM:i64 = 30; //必须用unsafe\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"fields `num`, `name`, and `age` are never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":230,"byte_end":239,"line_start":6,"line_end":6,"column_start":20,"column_end":29,"is_primary":false,"text":[{"text":" pub struct Container{","highlight_start":20,"highlight_end":29}],"label":"fields in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":254,"byte_end":257,"line_start":7,"line_end":7,"column_start":13,"column_end":16,"is_primary":true,"text":[{"text":" num: i64,","highlight_start":13,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":277,"byte_end":281,"line_start":8,"line_end":8,"column_start":13,"column_end":17,"is_primary":true,"text":[{"text":" name: String,","highlight_start":13,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":304,"byte_end":307,"line_start":9,"line_end":9,"column_start":13,"column_end":16,"is_primary":true,"text":[{"text":" age: i64,","highlight_start":13,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: fields `num`, `name`, and `age` are never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:7:13\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m6\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub struct Container{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m---------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14mfields in this struct\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m7\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m num: i64,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m8\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m name: String,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m9\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m age: i64,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"methods `init_self` and `num` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":358,"byte_end":372,"line_start":12,"line_end":12,"column_start":9,"column_end":23,"is_primary":false,"text":[{"text":" impl Container {","highlight_start":9,"highlight_end":23}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":396,"byte_end":405,"line_start":13,"line_end":13,"column_start":20,"column_end":29,"is_primary":true,"text":[{"text":" pub fn init_self(&mut self, num_:i64, name_:String, age_:i64, score_:f64){","highlight_start":20,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src\\student\\monitor.rs","byte_start":794,"byte_end":797,"line_start":22,"line_end":22,"column_start":20,"column_end":23,"is_primary":true,"text":[{"text":" pub fn num(&self) -> i64{","highlight_start":20,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: methods `init_self` and `num` are never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:13:20\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m12\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m impl Container {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--------------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14mmethods in this implementation\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m13\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn init_self(&mut self, num_:i64, name_:String, age_:i64, score_:f64){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m22\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn num(&self) -> i64{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"function `max_num` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":985,"byte_end":992,"line_start":29,"line_end":29,"column_start":16,"column_end":23,"is_primary":true,"text":[{"text":" pub fn max_num() -> i64{","highlight_start":16,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: function `max_num` is never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:29:16\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m29\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn max_num() -> i64{\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"function `not_allowed` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src\\student\\monitor.rs","byte_start":1293,"byte_end":1304,"line_start":43,"line_end":43,"column_start":12,"column_end":23,"is_primary":true,"text":[{"text":" pub fn not_allowed(){","highlight_start":12,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: function `not_allowed` is never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m--> \u001b[0m\u001b[0msrc\\student\\monitor.rs:43:12\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;14m43\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn not_allowed(){\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;14m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;11m^^^^^^^^^^^\u001b[0m\n\n"} +{"$message_type":"diagnostic","message":"8 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[38;5;11mwarning\u001b[0m\u001b[0m\u001b[1m\u001b[38;5;15m: 8 warnings emitted\u001b[0m\n\n"} diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-e02f2472706cb861/dep-lib-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-e02f2472706cb861/dep-lib-cratetest new file mode 100644 index 0000000..02bca30 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-e02f2472706cb861/dep-lib-cratetest differ diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-e02f2472706cb861/invoked.timestamp b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-e02f2472706cb861/invoked.timestamp new file mode 100644 index 0000000..e00328d --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-e02f2472706cb861/invoked.timestamp @@ -0,0 +1 @@ +This file has an mtime of when this was started. \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-e02f2472706cb861/lib-cratetest b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-e02f2472706cb861/lib-cratetest new file mode 100644 index 0000000..f950572 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-e02f2472706cb861/lib-cratetest @@ -0,0 +1 @@ +88dd02202d1f71fd \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-e02f2472706cb861/lib-cratetest.json b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-e02f2472706cb861/lib-cratetest.json new file mode 100644 index 0000000..6fd3fb1 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/.fingerprint/cratetest-e02f2472706cb861/lib-cratetest.json @@ -0,0 +1 @@ +{"rustc":3062648155896360161,"features":"[]","declared_features":"[]","target":7479634845804353691,"profile":8731458305071235362,"path":10763286916239946207,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\cratetest-e02f2472706cb861\\dep-lib-cratetest","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0} \ No newline at end of file diff --git a/Package-Crate/cratetest/target/debug/cratetest.d b/Package-Crate/cratetest/target/debug/cratetest.d new file mode 100644 index 0000000..ee98ff1 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/cratetest.d @@ -0,0 +1 @@ +D:\code\Git-Rust\Package-Crate\cratetest\target\debug\cratetest.exe: D:\code\Git-Rust\Package-Crate\cratetest\src\lib.rs D:\code\Git-Rust\Package-Crate\cratetest\src\main.rs D:\code\Git-Rust\Package-Crate\cratetest\src\student\mod.rs D:\code\Git-Rust\Package-Crate\cratetest\src\student\monitor.rs D:\code\Git-Rust\Package-Crate\cratetest\src\student\ordinary.rs diff --git a/Package-Crate/cratetest/target/debug/cratetest.exe b/Package-Crate/cratetest/target/debug/cratetest.exe new file mode 100644 index 0000000..2ab71b1 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/cratetest.exe differ diff --git a/Package-Crate/cratetest/target/debug/cratetest.pdb b/Package-Crate/cratetest/target/debug/cratetest.pdb new file mode 100644 index 0000000..8a4ba02 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/cratetest.pdb differ diff --git a/Package-Crate/cratetest/target/debug/deps/cratetest-18245caf720d90fc.d b/Package-Crate/cratetest/target/debug/deps/cratetest-18245caf720d90fc.d new file mode 100644 index 0000000..0a274b9 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/deps/cratetest-18245caf720d90fc.d @@ -0,0 +1,8 @@ +D:\code\Git-Rust\Package-Crate\cratetest\target\debug\deps\cratetest-18245caf720d90fc.d: src\main.rs src\student\mod.rs src\student\ordinary.rs src\student\monitor.rs + +D:\code\Git-Rust\Package-Crate\cratetest\target\debug\deps\libcratetest-18245caf720d90fc.rmeta: src\main.rs src\student\mod.rs src\student\ordinary.rs src\student\monitor.rs + +src\main.rs: +src\student\mod.rs: +src\student\ordinary.rs: +src\student\monitor.rs: diff --git a/Package-Crate/cratetest/target/debug/deps/cratetest-99ce758d585dbfb5.d b/Package-Crate/cratetest/target/debug/deps/cratetest-99ce758d585dbfb5.d new file mode 100644 index 0000000..02fcccb --- /dev/null +++ b/Package-Crate/cratetest/target/debug/deps/cratetest-99ce758d585dbfb5.d @@ -0,0 +1,5 @@ +D:\code\Git-Rust\Package-Crate\cratetest\target\debug\deps\cratetest-99ce758d585dbfb5.d: src\lib.rs + +D:\code\Git-Rust\Package-Crate\cratetest\target\debug\deps\libcratetest-99ce758d585dbfb5.rmeta: src\lib.rs + +src\lib.rs: diff --git a/Package-Crate/cratetest/target/debug/deps/cratetest-ad4fb1e3517573b1.d b/Package-Crate/cratetest/target/debug/deps/cratetest-ad4fb1e3517573b1.d new file mode 100644 index 0000000..7d71701 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/deps/cratetest-ad4fb1e3517573b1.d @@ -0,0 +1,5 @@ +D:\code\Git-Rust\Package-Crate\cratetest\target\debug\deps\cratetest-ad4fb1e3517573b1.d: src\lib.rs + +D:\code\Git-Rust\Package-Crate\cratetest\target\debug\deps\libcratetest-ad4fb1e3517573b1.rmeta: src\lib.rs + +src\lib.rs: diff --git a/Package-Crate/cratetest/target/debug/deps/cratetest-d257ba26dc831c10.d b/Package-Crate/cratetest/target/debug/deps/cratetest-d257ba26dc831c10.d new file mode 100644 index 0000000..3237f50 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/deps/cratetest-d257ba26dc831c10.d @@ -0,0 +1,8 @@ +D:\code\Git-Rust\Package-Crate\cratetest\target\debug\deps\cratetest-d257ba26dc831c10.d: src\main.rs src\student\mod.rs src\student\ordinary.rs src\student\monitor.rs + +D:\code\Git-Rust\Package-Crate\cratetest\target\debug\deps\libcratetest-d257ba26dc831c10.rmeta: src\main.rs src\student\mod.rs src\student\ordinary.rs src\student\monitor.rs + +src\main.rs: +src\student\mod.rs: +src\student\ordinary.rs: +src\student\monitor.rs: diff --git a/Package-Crate/cratetest/target/debug/deps/cratetest-e02f2472706cb861.d b/Package-Crate/cratetest/target/debug/deps/cratetest-e02f2472706cb861.d new file mode 100644 index 0000000..7d4b132 --- /dev/null +++ b/Package-Crate/cratetest/target/debug/deps/cratetest-e02f2472706cb861.d @@ -0,0 +1,7 @@ +D:\code\Git-Rust\Package-Crate\cratetest\target\debug\deps\cratetest-e02f2472706cb861.d: src\lib.rs + +D:\code\Git-Rust\Package-Crate\cratetest\target\debug\deps\libcratetest-e02f2472706cb861.rlib: src\lib.rs + +D:\code\Git-Rust\Package-Crate\cratetest\target\debug\deps\libcratetest-e02f2472706cb861.rmeta: src\lib.rs + +src\lib.rs: diff --git a/Package-Crate/cratetest/target/debug/deps/cratetest.d b/Package-Crate/cratetest/target/debug/deps/cratetest.d new file mode 100644 index 0000000..7dfdafd --- /dev/null +++ b/Package-Crate/cratetest/target/debug/deps/cratetest.d @@ -0,0 +1,8 @@ +D:\code\Git-Rust\Package-Crate\cratetest\target\debug\deps\cratetest.d: src\main.rs src\student\mod.rs src\student\ordinary.rs src\student\monitor.rs + +D:\code\Git-Rust\Package-Crate\cratetest\target\debug\deps\cratetest.exe: src\main.rs src\student\mod.rs src\student\ordinary.rs src\student\monitor.rs + +src\main.rs: +src\student\mod.rs: +src\student\ordinary.rs: +src\student\monitor.rs: diff --git a/Package-Crate/cratetest/target/debug/deps/cratetest.exe b/Package-Crate/cratetest/target/debug/deps/cratetest.exe new file mode 100644 index 0000000..2ab71b1 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/deps/cratetest.exe differ diff --git a/Package-Crate/cratetest/target/debug/deps/cratetest.pdb b/Package-Crate/cratetest/target/debug/deps/cratetest.pdb new file mode 100644 index 0000000..8a4ba02 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/deps/cratetest.pdb differ diff --git a/Package-Crate/cratetest/target/debug/deps/libcratetest-18245caf720d90fc.rmeta b/Package-Crate/cratetest/target/debug/deps/libcratetest-18245caf720d90fc.rmeta new file mode 100644 index 0000000..e69de29 diff --git a/Package-Crate/cratetest/target/debug/deps/libcratetest-99ce758d585dbfb5.rmeta b/Package-Crate/cratetest/target/debug/deps/libcratetest-99ce758d585dbfb5.rmeta new file mode 100644 index 0000000..35ceede Binary files /dev/null and b/Package-Crate/cratetest/target/debug/deps/libcratetest-99ce758d585dbfb5.rmeta differ diff --git a/Package-Crate/cratetest/target/debug/deps/libcratetest-ad4fb1e3517573b1.rmeta b/Package-Crate/cratetest/target/debug/deps/libcratetest-ad4fb1e3517573b1.rmeta new file mode 100644 index 0000000..e69de29 diff --git a/Package-Crate/cratetest/target/debug/deps/libcratetest-d257ba26dc831c10.rmeta b/Package-Crate/cratetest/target/debug/deps/libcratetest-d257ba26dc831c10.rmeta new file mode 100644 index 0000000..e69de29 diff --git a/Package-Crate/cratetest/target/debug/deps/libcratetest-e02f2472706cb861.rlib b/Package-Crate/cratetest/target/debug/deps/libcratetest-e02f2472706cb861.rlib new file mode 100644 index 0000000..0df1776 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/deps/libcratetest-e02f2472706cb861.rlib differ diff --git a/Package-Crate/cratetest/target/debug/deps/libcratetest-e02f2472706cb861.rmeta b/Package-Crate/cratetest/target/debug/deps/libcratetest-e02f2472706cb861.rmeta new file mode 100644 index 0000000..0245d6b Binary files /dev/null and b/Package-Crate/cratetest/target/debug/deps/libcratetest-e02f2472706cb861.rmeta differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-03pbxftdn2rkz/s-hbq1zenu1j-1kjnaak-77tfyz7n23uzcocm75a4ntzac/dep-graph.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-03pbxftdn2rkz/s-hbq1zenu1j-1kjnaak-77tfyz7n23uzcocm75a4ntzac/dep-graph.bin new file mode 100644 index 0000000..af65067 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-03pbxftdn2rkz/s-hbq1zenu1j-1kjnaak-77tfyz7n23uzcocm75a4ntzac/dep-graph.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-03pbxftdn2rkz/s-hbq1zenu1j-1kjnaak-77tfyz7n23uzcocm75a4ntzac/query-cache.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-03pbxftdn2rkz/s-hbq1zenu1j-1kjnaak-77tfyz7n23uzcocm75a4ntzac/query-cache.bin new file mode 100644 index 0000000..675b51b Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-03pbxftdn2rkz/s-hbq1zenu1j-1kjnaak-77tfyz7n23uzcocm75a4ntzac/query-cache.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-03pbxftdn2rkz/s-hbq1zenu1j-1kjnaak-77tfyz7n23uzcocm75a4ntzac/work-products.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-03pbxftdn2rkz/s-hbq1zenu1j-1kjnaak-77tfyz7n23uzcocm75a4ntzac/work-products.bin new file mode 100644 index 0000000..f6a2530 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-03pbxftdn2rkz/s-hbq1zenu1j-1kjnaak-77tfyz7n23uzcocm75a4ntzac/work-products.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-03pbxftdn2rkz/s-hbq1zenu1j-1kjnaak.lock b/Package-Crate/cratetest/target/debug/incremental/cratetest-03pbxftdn2rkz/s-hbq1zenu1j-1kjnaak.lock new file mode 100644 index 0000000..e69de29 diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-1wp4yc546kbfq/s-hbq1zenu04-0y7bo6x-5hjtohhr4hmkjord389qq2ktb/dep-graph.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-1wp4yc546kbfq/s-hbq1zenu04-0y7bo6x-5hjtohhr4hmkjord389qq2ktb/dep-graph.bin new file mode 100644 index 0000000..27c0b22 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-1wp4yc546kbfq/s-hbq1zenu04-0y7bo6x-5hjtohhr4hmkjord389qq2ktb/dep-graph.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-1wp4yc546kbfq/s-hbq1zenu04-0y7bo6x-5hjtohhr4hmkjord389qq2ktb/query-cache.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-1wp4yc546kbfq/s-hbq1zenu04-0y7bo6x-5hjtohhr4hmkjord389qq2ktb/query-cache.bin new file mode 100644 index 0000000..689fc24 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-1wp4yc546kbfq/s-hbq1zenu04-0y7bo6x-5hjtohhr4hmkjord389qq2ktb/query-cache.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-1wp4yc546kbfq/s-hbq1zenu04-0y7bo6x-5hjtohhr4hmkjord389qq2ktb/work-products.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-1wp4yc546kbfq/s-hbq1zenu04-0y7bo6x-5hjtohhr4hmkjord389qq2ktb/work-products.bin new file mode 100644 index 0000000..f6a2530 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-1wp4yc546kbfq/s-hbq1zenu04-0y7bo6x-5hjtohhr4hmkjord389qq2ktb/work-products.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-1wp4yc546kbfq/s-hbq1zenu04-0y7bo6x.lock b/Package-Crate/cratetest/target/debug/incremental/cratetest-1wp4yc546kbfq/s-hbq1zenu04-0y7bo6x.lock new file mode 100644 index 0000000..e69de29 diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-204nz26uxe81l/s-hbq1shrlk8-050uue5-4k4kkqtp1z203ydxi24v3hs38/8zyhd5bvdam71otjotfbznhfx.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-204nz26uxe81l/s-hbq1shrlk8-050uue5-4k4kkqtp1z203ydxi24v3hs38/8zyhd5bvdam71otjotfbznhfx.o new file mode 100644 index 0000000..e3d9ba3 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-204nz26uxe81l/s-hbq1shrlk8-050uue5-4k4kkqtp1z203ydxi24v3hs38/8zyhd5bvdam71otjotfbznhfx.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-204nz26uxe81l/s-hbq1shrlk8-050uue5-4k4kkqtp1z203ydxi24v3hs38/dep-graph.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-204nz26uxe81l/s-hbq1shrlk8-050uue5-4k4kkqtp1z203ydxi24v3hs38/dep-graph.bin new file mode 100644 index 0000000..f67ca14 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-204nz26uxe81l/s-hbq1shrlk8-050uue5-4k4kkqtp1z203ydxi24v3hs38/dep-graph.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-204nz26uxe81l/s-hbq1shrlk8-050uue5-4k4kkqtp1z203ydxi24v3hs38/query-cache.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-204nz26uxe81l/s-hbq1shrlk8-050uue5-4k4kkqtp1z203ydxi24v3hs38/query-cache.bin new file mode 100644 index 0000000..27cc6af Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-204nz26uxe81l/s-hbq1shrlk8-050uue5-4k4kkqtp1z203ydxi24v3hs38/query-cache.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-204nz26uxe81l/s-hbq1shrlk8-050uue5-4k4kkqtp1z203ydxi24v3hs38/work-products.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-204nz26uxe81l/s-hbq1shrlk8-050uue5-4k4kkqtp1z203ydxi24v3hs38/work-products.bin new file mode 100644 index 0000000..b70f9ed Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-204nz26uxe81l/s-hbq1shrlk8-050uue5-4k4kkqtp1z203ydxi24v3hs38/work-products.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-204nz26uxe81l/s-hbq1shrlk8-050uue5.lock b/Package-Crate/cratetest/target/debug/incremental/cratetest-204nz26uxe81l/s-hbq1shrlk8-050uue5.lock new file mode 100644 index 0000000..e69de29 diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-2ptam1x4g96cw/s-hbq1jdat7r-0n4r5ou-8bowumm5f8fc062j8azg1140v/dep-graph.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-2ptam1x4g96cw/s-hbq1jdat7r-0n4r5ou-8bowumm5f8fc062j8azg1140v/dep-graph.bin new file mode 100644 index 0000000..484f4b4 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-2ptam1x4g96cw/s-hbq1jdat7r-0n4r5ou-8bowumm5f8fc062j8azg1140v/dep-graph.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-2ptam1x4g96cw/s-hbq1jdat7r-0n4r5ou-8bowumm5f8fc062j8azg1140v/query-cache.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-2ptam1x4g96cw/s-hbq1jdat7r-0n4r5ou-8bowumm5f8fc062j8azg1140v/query-cache.bin new file mode 100644 index 0000000..eca920d Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-2ptam1x4g96cw/s-hbq1jdat7r-0n4r5ou-8bowumm5f8fc062j8azg1140v/query-cache.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-2ptam1x4g96cw/s-hbq1jdat7r-0n4r5ou-8bowumm5f8fc062j8azg1140v/work-products.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-2ptam1x4g96cw/s-hbq1jdat7r-0n4r5ou-8bowumm5f8fc062j8azg1140v/work-products.bin new file mode 100644 index 0000000..f6a2530 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-2ptam1x4g96cw/s-hbq1jdat7r-0n4r5ou-8bowumm5f8fc062j8azg1140v/work-products.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-2ptam1x4g96cw/s-hbq1jdat7r-0n4r5ou.lock b/Package-Crate/cratetest/target/debug/incremental/cratetest-2ptam1x4g96cw/s-hbq1jdat7r-0n4r5ou.lock new file mode 100644 index 0000000..e69de29 diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/0vi9q6ylbs2wlzlz59ujiy3u7.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/0vi9q6ylbs2wlzlz59ujiy3u7.o new file mode 100644 index 0000000..db1d592 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/0vi9q6ylbs2wlzlz59ujiy3u7.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/0xv6xqbpr5qjp7aukp7x5pokv.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/0xv6xqbpr5qjp7aukp7x5pokv.o new file mode 100644 index 0000000..eda09ce Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/0xv6xqbpr5qjp7aukp7x5pokv.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/0y1fwhmo7cmcek87rbmg55mgx.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/0y1fwhmo7cmcek87rbmg55mgx.o new file mode 100644 index 0000000..a9f5cf3 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/0y1fwhmo7cmcek87rbmg55mgx.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/1bvcwirrdvjk6cxv67221hz3n.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/1bvcwirrdvjk6cxv67221hz3n.o new file mode 100644 index 0000000..83bfab8 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/1bvcwirrdvjk6cxv67221hz3n.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/2bc0hl4fnbh783ta3tf5gpx4r.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/2bc0hl4fnbh783ta3tf5gpx4r.o new file mode 100644 index 0000000..e567b9c Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/2bc0hl4fnbh783ta3tf5gpx4r.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/3zb996wh2apny9eywyuvizj9i.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/3zb996wh2apny9eywyuvizj9i.o new file mode 100644 index 0000000..01f60df Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/3zb996wh2apny9eywyuvizj9i.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/4g10r3e23c4p5aopz0apfug3r.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/4g10r3e23c4p5aopz0apfug3r.o new file mode 100644 index 0000000..469fbfb Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/4g10r3e23c4p5aopz0apfug3r.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/4j8s392ug42harpyii4svtxrw.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/4j8s392ug42harpyii4svtxrw.o new file mode 100644 index 0000000..8fad6a9 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/4j8s392ug42harpyii4svtxrw.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/55pvvlr5aysyyi4dv7vy2lb3l.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/55pvvlr5aysyyi4dv7vy2lb3l.o new file mode 100644 index 0000000..0505daf Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/55pvvlr5aysyyi4dv7vy2lb3l.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/6ybjoho33xskpylia8u8uu7mm.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/6ybjoho33xskpylia8u8uu7mm.o new file mode 100644 index 0000000..e879427 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/6ybjoho33xskpylia8u8uu7mm.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/898pzonua0v8jb9cnomiski2d.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/898pzonua0v8jb9cnomiski2d.o new file mode 100644 index 0000000..89acb6a Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/898pzonua0v8jb9cnomiski2d.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/8owc18cpaeiq8gwz7cz6yzgn9.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/8owc18cpaeiq8gwz7cz6yzgn9.o new file mode 100644 index 0000000..35da764 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/8owc18cpaeiq8gwz7cz6yzgn9.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/ax5s5ao97fxe441onft72a6xw.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/ax5s5ao97fxe441onft72a6xw.o new file mode 100644 index 0000000..11157bc Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/ax5s5ao97fxe441onft72a6xw.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/aypmsd8vavmqfaqlfqm3lh4lq.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/aypmsd8vavmqfaqlfqm3lh4lq.o new file mode 100644 index 0000000..e6a5bc4 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/aypmsd8vavmqfaqlfqm3lh4lq.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/b65tbnt03l0n9o3f2z95rboj9.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/b65tbnt03l0n9o3f2z95rboj9.o new file mode 100644 index 0000000..0be92cb Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/b65tbnt03l0n9o3f2z95rboj9.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/c86kvbgscnjmwqch3xavvb0tm.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/c86kvbgscnjmwqch3xavvb0tm.o new file mode 100644 index 0000000..19d7ad9 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/c86kvbgscnjmwqch3xavvb0tm.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/cc173fzbsydg62lhteykb1rm1.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/cc173fzbsydg62lhteykb1rm1.o new file mode 100644 index 0000000..b5ae598 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/cc173fzbsydg62lhteykb1rm1.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/d6ohs1ppam1p9czcsm7cyvrku.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/d6ohs1ppam1p9czcsm7cyvrku.o new file mode 100644 index 0000000..37934db Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/d6ohs1ppam1p9czcsm7cyvrku.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/dep-graph.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/dep-graph.bin new file mode 100644 index 0000000..433eab3 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/dep-graph.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/e8kbvznm5uw9pbqq4qt9mlf70.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/e8kbvznm5uw9pbqq4qt9mlf70.o new file mode 100644 index 0000000..37b9ce2 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/e8kbvznm5uw9pbqq4qt9mlf70.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/f0bl7gty37slsqkas4mvgmd6r.o b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/f0bl7gty37slsqkas4mvgmd6r.o new file mode 100644 index 0000000..1dd2aec Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/f0bl7gty37slsqkas4mvgmd6r.o differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/query-cache.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/query-cache.bin new file mode 100644 index 0000000..e830cfe Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/query-cache.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/work-products.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/work-products.bin new file mode 100644 index 0000000..bb0b0d0 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78-59ogliy9v6rk8ttqi8v3f4i2r/work-products.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78.lock b/Package-Crate/cratetest/target/debug/incremental/cratetest-3bralj8rt8wxr/s-hbq1zgnkee-0shtt78.lock new file mode 100644 index 0000000..e69de29 diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3mj17ga16yyi0/s-hbq1jdat8b-1rfqvix-0270iyjbc6ewzifzevzx52g14/dep-graph.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-3mj17ga16yyi0/s-hbq1jdat8b-1rfqvix-0270iyjbc6ewzifzevzx52g14/dep-graph.bin new file mode 100644 index 0000000..9d3ffd0 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3mj17ga16yyi0/s-hbq1jdat8b-1rfqvix-0270iyjbc6ewzifzevzx52g14/dep-graph.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3mj17ga16yyi0/s-hbq1jdat8b-1rfqvix-0270iyjbc6ewzifzevzx52g14/query-cache.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-3mj17ga16yyi0/s-hbq1jdat8b-1rfqvix-0270iyjbc6ewzifzevzx52g14/query-cache.bin new file mode 100644 index 0000000..b87250f Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3mj17ga16yyi0/s-hbq1jdat8b-1rfqvix-0270iyjbc6ewzifzevzx52g14/query-cache.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3mj17ga16yyi0/s-hbq1jdat8b-1rfqvix-0270iyjbc6ewzifzevzx52g14/work-products.bin b/Package-Crate/cratetest/target/debug/incremental/cratetest-3mj17ga16yyi0/s-hbq1jdat8b-1rfqvix-0270iyjbc6ewzifzevzx52g14/work-products.bin new file mode 100644 index 0000000..f6a2530 Binary files /dev/null and b/Package-Crate/cratetest/target/debug/incremental/cratetest-3mj17ga16yyi0/s-hbq1jdat8b-1rfqvix-0270iyjbc6ewzifzevzx52g14/work-products.bin differ diff --git a/Package-Crate/cratetest/target/debug/incremental/cratetest-3mj17ga16yyi0/s-hbq1jdat8b-1rfqvix.lock b/Package-Crate/cratetest/target/debug/incremental/cratetest-3mj17ga16yyi0/s-hbq1jdat8b-1rfqvix.lock new file mode 100644 index 0000000..e69de29 diff --git a/Trait/readme.md b/Trait/readme.md new file mode 100644 index 0000000..72f6477 --- /dev/null +++ b/Trait/readme.md @@ -0,0 +1,288 @@ +非常好 👍! +`trait` 是 Rust 中非常核心、非常强大的概念之一,几乎等价于 C++ 的「接口(interface)」或「抽象基类(abstract base class)」, +但 Rust 的 `trait` 更安全、更灵活、还能与泛型深度结合。 + +下面我们来**从直觉 → 语法 → 实战 → 泛型结合 → 高级技巧**系统地讲清楚 Rust 的 `trait` 怎么用。 + +--- + +## 🧩 一、Trait 是什么? + +一句话解释: + +> **Trait 定义了一组类型必须实现的“能力”或“行为”**。 + +比如“能打印”、“能比较大小”、“能移动”等行为,都可以用 `trait` 定义。 + +--- + +## 🧠 二、最简单的 trait 示例 + +```rust +trait Summary { + fn summarize(&self) -> String; +} +``` + +上面定义了一个 `Summary` 特征(trait),它表示“这个类型能生成一个概要字符串”。 + +任何想拥有这个功能的类型,都要实现它。 + +--- + +## 💡 三、为结构体实现 trait + +```rust +struct NewsArticle { + title: String, + author: String, + content: String, +} + +impl Summary for NewsArticle { + fn summarize(&self) -> String { + format!("{} by {}", self.title, self.author) + } +} +``` + +现在,`NewsArticle` 类型就有了 `.summarize()` 方法: + +```rust +fn main() { + let article = NewsArticle { + title: String::from("Rust trait 学习指南"), + author: String::from("Evan"), + content: String::from("内容..."), + }; + + println!("{}", article.summarize()); +} +``` + +✅ 输出: + +``` +Rust trait 学习指南 by Evan +``` + +--- + +## 🔧 四、Trait = 行为接口(类比 C++) + +| 概念 | Rust | C++ 类似 | +| ---- | -------------------------------- | -------------------------------------------- | +| 定义接口 | `trait Summary { ... }` | `class Summary { virtual ... = 0; }` | +| 实现接口 | `impl Summary for NewsArticle` | `class NewsArticle : public Summary { ... }` | +| 调用接口 | `item.summarize()` | `item.summarize()` | +| 多态传参 | `fn notify(item: &impl Summary)` | `void notify(const Summary& item)` | + +--- + +## ⚙️ 五、trait 作为函数参数(多态) + +```rust +fn notify(item: &impl Summary) { + println!("Breaking news! {}", item.summarize()); +} +``` + +这个函数可以接受**任何实现了 `Summary` 的类型**: + +```rust +let article = NewsArticle { + title: String::from("Rust 1.80 发布!"), + author: String::from("官方"), + content: String::from("..."), +}; + +notify(&article); +``` + +--- + +## 🔄 六、与泛型结合的写法 + +等价的更通用写法是: + +```rust +fn notify(item: &T) { + println!("Breaking news! {}", item.summarize()); +} +``` + +这两种写法效果一致: + +* `fn foo(x: &impl Trait)`:语法糖 +* `fn foo(x: &T)`:完整泛型写法,可组合多个 trait + +--- + +## 🧩 七、多个 trait 约束 + +如果希望一个类型实现多个 trait 才能传入: + +```rust +fn show(item: &T) { + println!("{}", item.summarize()); +} +``` + +或者更清晰的写法: + +```rust +fn show(item: &T) +where + T: Summary + Clone, +{ + println!("{}", item.summarize()); +} +``` + +--- + +## 🔁 八、Trait 默认实现 + +trait 还可以提供**默认方法实现**: + +```rust +trait Summary { + fn summarize(&self) -> String { + String::from("(Read more...)") + } +} +``` + +实现时可以选择覆盖它: + +```rust +impl Summary for NewsArticle { + // 也可以不写 summarize(),直接用默认实现 +} +``` + +--- + +## 🧩 九、返回实现 trait 的类型(impl Trait 返回) + +函数也可以**返回实现某个 trait 的类型**: + +```rust +fn make_article() -> impl Summary { + NewsArticle { + title: String::from("Hello"), + author: String::from("Rust"), + content: String::from("..."), + } +} +``` + +这里的 `impl Summary` 意思是“返回一个实现了 `Summary` 的对象”, +但不能同时返回多种不同类型(必须一致)。 + +--- + +## 💥 十、trait 对象(动态分发) + +如果你希望“一个变量”能存放**多种类型但都有共同 trait**,用 `Box`: + +```rust +fn main() { + let article = NewsArticle { + title: String::from("Rust"), + author: String::from("Evan"), + content: String::from("..."), + }; + + let tweet = Tweet { + username: String::from("rustacean"), + content: String::from("trait 太强了"), + }; + + let items: Vec> = vec![ + Box::new(article), + Box::new(tweet), + ]; + + for i in items { + println!("{}", i.summarize()); + } +} +``` + +这就类似于 C++ 的虚函数表(vtable)动态多态。 + +--- + +## 🧩 十一、完整例子(trait、泛型、多态一起) + +```rust +trait Summary { + fn summarize(&self) -> String; +} + +struct NewsArticle { + title: String, + author: String, +} + +struct Tweet { + username: String, + content: String, +} + +impl Summary for NewsArticle { + fn summarize(&self) -> String { + format!("{} by {}", self.title, self.author) + } +} + +impl Summary for Tweet { + fn summarize(&self) -> String { + format!("@{}: {}", self.username, self.content) + } +} + +fn notify(item: &T) { + println!("Breaking news! {}", item.summarize()); +} + +fn main() { + let tweet = Tweet { + username: String::from("EvanZ"), + content: String::from("Rust trait 学到了!"), + }; + let article = NewsArticle { + title: String::from("学习 Rust 的一天"), + author: String::from("Evan"), + }; + + notify(&tweet); + notify(&article); +} +``` + +输出: + +``` +Breaking news! @EvanZ: Rust trait 学到了! +Breaking news! 学习 Rust 的一天 by Evan +``` + +--- + +## ✅ 十二、总结表 + +| 功能 | 语法 | 含义 | +| -------- | ------------------------------------------------ | ---------------- | +| 定义 trait | `trait TraitName { fn func(&self); }` | 定义行为接口 | +| 实现 trait | `impl TraitName for Type { ... }` | 给类型实现行为 | +| 参数约束 | `fn f(t: &T)` 或 `fn f(t: &impl Trait)` | 仅接受实现了 Trait 的类型 | +| 多 trait | `T: TraitA + TraitB` | 同时要求多个行为 | +| 返回 trait | `-> impl Trait` | 返回实现了该行为的类型 | +| 动态多态 | `Box` | 在运行时存放不同实现 | +| 默认实现 | `fn func(&self) { ... }` | 允许被覆盖或继承默认功能 | + +--- + +是否希望我接着讲讲 **trait 与泛型的底层机制**(即静态分发 vs 动态分发的区别),包括它们的性能差异与编译原理?(这部分对理解 Rust trait 的“真功夫”非常有帮助) diff --git a/std/readme.md b/std/readme.md new file mode 100644 index 0000000..ddbd6bb --- /dev/null +++ b/std/readme.md @@ -0,0 +1,304 @@ +当然可以 👍 +Rust 的 **`std`(标准库,standard library)** 是整个语言生态的核心组成部分,它提供了 **语言运行时支持、内存管理、集合、I/O、并发、系统接口、错误处理、数值计算** 等几乎所有基础功能。 +我可以帮你系统地、分层地介绍一遍「`std` 的全貌 + 每个模块的主要功能 + 常用类型和技巧」。 + +--- + +## 🧱 一、`std` 总体结构 + +Rust 标准库的顶层结构大体可以分为以下几层: + +| 层级 | 模块 | 说明 | +| ----------------- | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| **基础层** | `std::marker`, `std::mem`, `std::ptr`, `std::cell`, `std::rc`, `std::sync` | 管理内存、引用、生命周期、并发引用计数等底层特性 | +| **语言支持层** | `std::ops`, `std::convert`, `std::cmp`, `std::clone`, `std::fmt`, `std::default`, `std::hash` | 实现语言语义所需的 trait(加减乘除、比较、拷贝、格式化、哈希等) | +| **基础类型层** | `std::option`, `std::result`, `std::string`, `std::vec`, `std::boxed`, `std::collections` | 基本容器和控制结构 | +| **系统接口层** | `std::fs`, `std::io`, `std::env`, `std::process`, `std::path`, `std::time`, `std::net` | 系统 I/O、文件系统、环境变量、网络、进程、时间等 | +| **并发层** | `std::thread`, `std::sync`, `std::sync::mpsc`, `std::sync::atomic` | 多线程、通道通信、同步原语 | +| **错误与调试层** | `std::error`, `std::panic`, `std::backtrace`, `std::dbg!` | 错误处理、panic 栈回溯、调试工具 | +| **预导入层(prelude)** | `std::prelude::v1` | 默认导入到每个作用域的常用类型,如 `Option`, `Result`, `Vec`, `Box`, `String`, `Clone`, `Drop` 等 | +| **运行时支持层** | `std::process`, `std::alloc`, `std::thread::panicking` | 运行时内存分配、程序退出、panic 处理 | + +--- + +## 🧩 二、核心模块详解 + +### 1. `std::prelude` + +Rust 每个文件默认导入: + +```rust +use std::prelude::v1::*; +``` + +包含: + +* 基本类型别名:`Box`, `Vec`, `String` +* 常用 traits:`Clone`, `Copy`, `Drop`, `PartialEq`, `PartialOrd`, `Iterator`, `From`, `Into`, `Default` +* 基本枚举:`Option`, `Result` + +--- + +### 2. `std::io` —— 输入输出系统 + +主要结构: + +* **Traits** + + * `Read`、`Write`:流式读写 + * `BufRead`:带缓冲的读取 + * `Seek`:文件定位 +* **常用类型** + + * `stdin()`, `stdout()`, `stderr()` + * `Cursor`:让字节缓冲区当作文件使用 +* **示例** + + ```rust + use std::io::{self, Write}; + + fn main() { + print!("请输入名字:"); + io::stdout().flush().unwrap(); + let mut name = String::new(); + io::stdin().read_line(&mut name).unwrap(); + println!("你好,{}!", name.trim()); + } + ``` + +--- + +### 3. `std::fs` —— 文件系统 + +* `File`:文件读写 +* `read_to_string()`:快速读取文件 +* `write()`:写文件 +* `metadata()`:文件信息 +* `create_dir_all()`:创建多层目录 +* **示例** + + ```rust + use std::fs; + + fn main() { + fs::write("hello.txt", "Hello, world!").unwrap(); + let s = fs::read_to_string("hello.txt").unwrap(); + println!("{}", s); + } + ``` + +--- + +### 4. `std::env` + +* 环境变量:`env::var("PATH")` +* 命令行参数:`env::args()` +* 当前路径:`env::current_dir()` +* **示例** + + ```rust + use std::env; + fn main() { + for arg in env::args() { + println!("参数: {arg}"); + } + } + ``` + +--- + +### 5. `std::thread` + `std::sync` —— 并发 + +* **`thread::spawn`**:创建线程 +* **`join`**:等待线程结束 +* **`Mutex` / `RwLock`**:锁机制 +* **`Arc`**:原子引用计数 +* **`mpsc`**:多生产者单消费者通道 +* **示例** + + ```rust + use std::thread; + use std::sync::{Arc, Mutex}; + + fn main() { + let counter = Arc::new(Mutex::new(0)); + let mut handles = vec![]; + + for _ in 0..10 { + let counter = Arc::clone(&counter); + let handle = thread::spawn(move || { + let mut num = counter.lock().unwrap(); + *num += 1; + }); + handles.push(handle); + } + + for h in handles { + h.join().unwrap(); + } + + println!("结果: {}", *counter.lock().unwrap()); + } + ``` + +--- + +### 6. `std::collections` —— 集合容器 + +主要类型: + +* `VecDeque`(双端队列) +* `LinkedList` +* `HashMap`, `HashSet` +* `BTreeMap`, `BTreeSet`(有序) +* **常用方法:** + + * `insert`, `get`, `remove`, `entry` + + ```rust + use std::collections::HashMap; + + fn main() { + let mut scores = HashMap::new(); + scores.insert("Alice", 90); + scores.insert("Bob", 85); + println!("{:?}", scores.get("Alice")); + } + ``` + +--- + +### 7. `std::option` & `std::result` + +* **`Option`**: 可能有值,也可能没有 +* **`Result`**: 成功/失败的封装 +* 关键方法: + + * `.unwrap()`, `.unwrap_or()`, `.map()`, `.and_then()` + * `.ok()`, `.err()`, `.expect()` + + ```rust + fn div(a: f64, b: f64) -> Result { + if b == 0.0 { Err("除数不能为0") } + else { Ok(a / b) } + } + ``` + +--- + +### 8. `std::path` & `std::process` & `std::time` + +* `Path`, `PathBuf`:路径处理 +* `Command`:运行外部命令 +* `Instant`, `Duration`, `SystemTime`:时间测量 + + ```rust + use std::process::Command; + fn main() { + let out = Command::new("echo").arg("Hello").output().unwrap(); + println!("{}", String::from_utf8_lossy(&out.stdout)); + } + ``` + +--- + +### 9. `std::sync::atomic` + +* 原子操作(无锁) + + * `AtomicBool`, `AtomicI32`, `AtomicUsize` 等 + * 操作:`load()`, `store()`, `fetch_add()`, `compare_exchange()` + + ```rust + use std::sync::atomic::{AtomicUsize, Ordering}; + static COUNTER: AtomicUsize = AtomicUsize::new(0); + fn main() { + COUNTER.fetch_add(1, Ordering::SeqCst); + } + ``` + +--- + +### 10. `std::net` + +* `TcpStream`, `TcpListener` +* `UdpSocket` +* `ToSocketAddrs` + + ```rust + use std::net::TcpListener; + fn main() -> std::io::Result<()> { + let listener = TcpListener::bind("127.0.0.1:8080")?; + for stream in listener.incoming() { + println!("连接: {:?}", stream?); + } + Ok(()) + } + ``` + +--- + +### 11. `std::error`, `std::panic`, `std::backtrace` + +* `Error` trait:所有错误类型实现 +* `panic!()`:触发不可恢复错误 +* `catch_unwind()`:捕获 panic +* `backtrace::Backtrace`:调试栈信息 + +--- + +### 12. `std::mem` & `std::ptr` —— 底层内存操作 + +* `mem::swap`, `mem::take`, `mem::replace` +* `ptr::null`, `ptr::copy`, `ptr::write` +* 这些是「unsafe」核心模块,支撑 `Vec`, `Box` 等容器的实现。 + +--- + +## 🧮 三、一些常用顶层类型 + +| 类型 | 用途 | +| ---------------------------------- | ------------- | +| `String` / `&str` | UTF-8 字符串 | +| `Vec` | 动态数组 | +| `Box` | 堆分配的对象 | +| `Rc` / `Arc` | 引用计数(单线程/多线程) | +| `Mutex` / `RwLock` | 同步锁 | +| `HashMap` / `BTreeMap` | 字典映射 | +| `Option` / `Result` | 控制流程 | +| `thread::JoinHandle` | 线程句柄 | +| `Duration` / `Instant` | 时间度量 | + +--- + +## 🧭 四、`std` 与 `core` / `alloc` 的关系 + +Rust 标准库其实分三层: + +1. **`core`**:最基础层(无堆内存、无操作系统),适用于 `no_std` 环境。 +2. **`alloc`**:提供堆分配支持,如 `Box`, `Vec`, `String`。 +3. **`std`**:在前两者之上 + 操作系统 API + I/O + 并发。 + +结构如下: + +``` +core ──→ alloc ──→ std +``` + +--- + +## 📚 五、如何学习和查找 + +👉 命令行文档查看: + +```bash +rustup doc --std +``` + +👉 在线官方文档(推荐): +🔗 [https://doc.rust-lang.org/std/](https://doc.rust-lang.org/std/) + +--- + +如果你愿意,我可以帮你生成一份 **「`std` 模块思维导图(层级树)」** 或者 **「最常用 50 个 `std` 函数速查表」**,方便查阅。 +你想要哪种?