From d178d5efc8776a06b55fc322e2b9fa6ab59ae4b8 Mon Sep 17 00:00:00 2001 From: ehlxr Date: Tue, 23 Nov 2021 22:14:54 +0800 Subject: [PATCH] update at 2021-11-23 22:14:54 by ehlxr --- src/main.rs | 3 +++ src/ownership_1.rs | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main.rs b/src/main.rs index 27ce637..9f4922c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,4 @@ +mod ownership_1; mod sub_mod; mod tests; mod user; @@ -50,6 +51,8 @@ fn main() { // 在特定作用域中的特定数据有且只有一个可变引用 // let s2 = &mut s; + ownership_1::test_ownership1(); + change(s1); println!("{}", s1); { diff --git a/src/ownership_1.rs b/src/ownership_1.rs index c69fd46..4b8acf3 100644 --- a/src/ownership_1.rs +++ b/src/ownership_1.rs @@ -1,21 +1,22 @@ -fn main() { - +pub fn test_ownership1() { let s = String::from("hello"); // s 进入作用域 - takes_ownership(s);// s 的值移动到函数里 ... + takes_ownership(s); // s 的值移动到函数里 ... // ... 所以到这里不再有效 - let x = 5;// x 进入作用域 + let x = 5; // x 进入作用域 - makes_copy(x);// x 应该移动函数里, -// 但 i32 是 Copy 的,所以在后面可继续使用 x + makes_copy(x); // x 应该移动函数里, + // 但 i32 是 Copy 的,所以在后面可继续使用 x } // 这里, x 先移出了作用域,然后是 s。但因为 s 的值已被移走,所以不会有特殊操作 -fn takes_ownership(some_string: String) { // some_string 进入作用域 +fn takes_ownership(some_string: String) { + // some_string 进入作用域 println!("{}", some_string); } // 这里,some_string 移出作用域并调用 `drop` 方法。占用的内存被释放 -fn makes_copy(some_integer: i32) { // some_integer 进入作用域 +fn makes_copy(some_integer: i32) { + // some_integer 进入作用域 println!("{}", some_integer); -} // 这里,some_integer 移出作用域。不会有特殊操作 \ No newline at end of file +} // 这里,some_integer 移出作用域。不会有特殊操作