From d4a716d36c6ff7a5d18e5d7c597d0fb54664541d Mon Sep 17 00:00:00 2001 From: sunface Date: Wed, 23 Feb 2022 17:11:31 +0800 Subject: [PATCH] update readme --- .DS_Store | Bin 6148 -> 6148 bytes Readme.md | 27 ++++++ .gitignore => en/.gitignore | 0 {assets => en/assets}/CNAME | 0 book.toml => en/book.toml | 3 +- deploy => en/deploy | 0 {src => en/src}/SUMMARY.md | 0 {src => en/src}/async/async-await.md | 0 {src => en/src}/async/future.md | 0 {src => en/src}/async/intro.md | 0 {src => en/src}/async/pin-unpin.md | 0 {src => en/src}/async/stream.md | 0 {src => en/src}/basic-types/char-bool-unit.md | 0 {src => en/src}/basic-types/functions.md | 0 {src => en/src}/basic-types/intro.md | 0 {src => en/src}/basic-types/numbers.md | 0 .../basic-types/statements-expressions.md | 0 {src => en/src}/circle-refer | 0 {src => en/src}/circle-reference/intro.md | 0 {src => en/src}/collections/hashmap.md | 0 {src => en/src}/collections/intro.md | 0 {src => en/src}/collections/vector.md | 0 {src => en/src}/comments-docs.md | 0 {src => en/src}/compound-types/array.md | 0 {src => en/src}/compound-types/enum.md | 0 {src => en/src}/compound-types/intro.md | 0 .../src}/compound-types/string-slice.md | 0 {src => en/src}/compound-types/struct.md | 0 {src => en/src}/compound-types/tuple.md | 0 {src => en/src}/crate | 0 {src => en/src}/crate-module/crate.md | 0 {src => en/src}/crate-module/intro.md | 0 {src => en/src}/crate-module/module.md | 0 {src => en/src}/crate-module/use-pub.md | 0 {src => en/src}/errors.md | 0 {src => en/src}/flow-control.md | 0 {src => en/src}/formatted-output.md | 0 .../src}/functional-programing/cloure.md | 0 .../src}/functional-programing/intro.md | 0 .../src}/functional-programing/iterator.md | 0 .../src}/functional-programming/closure.md | 0 .../src}/functional-programming/intro.md | 0 .../src}/generics-traits/advance-traits.md | 0 {src => en/src}/generics-traits/generics.md | 0 {src => en/src}/generics-traits/intro.md | 0 .../src}/generics-traits/trait-object.md | 0 {src => en/src}/generics-traits/traits.md | 0 {src => en/src}/global-variables.md | 0 {src => en/src}/lifetime/advance.md | 0 {src => en/src}/lifetime/basic.md | 0 {src => en/src}/lifetime/intro.md | 0 {src => en/src}/lifetime/static.md | 0 {src => en/src}/macro.md | 0 {src => en/src}/method.md | 0 {src => en/src}/newtype-sized.md | 0 {src => en/src}/ownership/borrowing.md | 0 {src => en/src}/ownership/intro.md | 0 {src => en/src}/ownership/ownership.md | 0 {src => en/src}/pattern-match/intro.md | 0 {src => en/src}/pattern-match/match-iflet.md | 0 {src => en/src}/pattern-match/option.md | 0 {src => en/src}/pattern-match/patterns.md | 0 {src => en/src}/resu | 0 {src => en/src}/result-panic/intro.md | 0 {src => en/src}/result-panic/panic.md | 0 {src => en/src}/result-panic/result.md | 0 {src => en/src}/self-referential.md | 0 {src => en/src}/smart-pointers/box.md | 0 .../src}/smart-pointers/cell-refcell.md | 0 {src => en/src}/smart-pointers/deref.md | 0 {src => en/src}/smart-pointers/drop.md | 0 {src => en/src}/smart-pointers/intro.md | 0 {src => en/src}/smart-pointers/rc-arc.md | 0 {src => en/src}/tests/assertions.md | 0 {src => en/src}/tests/benchmark.md | 0 {src => en/src}/tests/intro.md | 0 {src => en/src}/tests/unit-integration.md | 0 {src => en/src}/tests/write-tests.md | 0 {src => en/src}/threads/atomic.md | 0 {src => en/src}/threads/basic-using.md | 0 {src => en/src}/threads/intro.md | 0 {src => en/src}/threads/message-passing.md | 0 {src => en/src}/threads/send-sync.md | 0 {src => en/src}/threads/sync.md | 0 {src => en/src}/type-conversion.md | 0 {src => en/src}/unsafe.md | 0 {src => en/src}/variables.md | 0 {src => en/src}/weak.md | 0 {src => en/src}/why-exercise.md | 0 zh-CN/.gitignore | 1 + zh-CN/assets/CNAME | 1 + zh-CN/book.toml | 20 +++++ zh-CN/deploy | 21 +++++ zh-CN/src/SUMMARY.md | 78 ++++++++++++++++++ zh-CN/src/async/async-await.md | 1 + zh-CN/src/async/future.md | 1 + zh-CN/src/async/intro.md | 1 + zh-CN/src/async/pin-unpin.md | 1 + zh-CN/src/async/stream.md | 1 + zh-CN/src/basic-types/char-bool-unit.md | 1 + zh-CN/src/basic-types/functions.md | 1 + zh-CN/src/basic-types/intro.md | 1 + zh-CN/src/basic-types/numbers.md | 1 + .../src/basic-types/statements-expressions.md | 1 + zh-CN/src/circle-refer | 1 + zh-CN/src/circle-reference/intro.md | 1 + zh-CN/src/collections/hashmap.md | 1 + zh-CN/src/collections/intro.md | 1 + zh-CN/src/collections/vector.md | 1 + zh-CN/src/comments-docs.md | 1 + zh-CN/src/compound-types/array.md | 1 + zh-CN/src/compound-types/enum.md | 1 + zh-CN/src/compound-types/intro.md | 1 + zh-CN/src/compound-types/string-slice.md | 1 + zh-CN/src/compound-types/struct.md | 1 + zh-CN/src/compound-types/tuple.md | 1 + zh-CN/src/crate | 1 + zh-CN/src/crate-module/crate.md | 1 + zh-CN/src/crate-module/intro.md | 1 + zh-CN/src/crate-module/module.md | 1 + zh-CN/src/crate-module/use-pub.md | 1 + zh-CN/src/errors.md | 1 + zh-CN/src/flow-control.md | 1 + zh-CN/src/formatted-output.md | 1 + zh-CN/src/functional-programing/cloure.md | 51 ++++++++++++ zh-CN/src/functional-programing/intro.md | 1 + zh-CN/src/functional-programing/iterator.md | 1 + zh-CN/src/functional-programming/closure.md | 51 ++++++++++++ zh-CN/src/functional-programming/intro.md | 1 + zh-CN/src/generics-traits/advance-traits.md | 1 + zh-CN/src/generics-traits/generics.md | 1 + zh-CN/src/generics-traits/intro.md | 1 + zh-CN/src/generics-traits/trait-object.md | 1 + zh-CN/src/generics-traits/traits.md | 1 + zh-CN/src/global-variables.md | 1 + zh-CN/src/lifetime/advance.md | 1 + zh-CN/src/lifetime/basic.md | 26 ++++++ zh-CN/src/lifetime/intro.md | 1 + zh-CN/src/lifetime/static.md | 49 +++++++++++ zh-CN/src/macro.md | 1 + zh-CN/src/method.md | 1 + zh-CN/src/newtype-sized.md | 1 + zh-CN/src/ownership/borrowing.md | 1 + zh-CN/src/ownership/intro.md | 1 + zh-CN/src/ownership/ownership.md | 1 + zh-CN/src/pattern-match/intro.md | 1 + zh-CN/src/pattern-match/match-iflet.md | 1 + zh-CN/src/pattern-match/option.md | 1 + zh-CN/src/pattern-match/patterns.md | 1 + zh-CN/src/resu | 1 + zh-CN/src/result-panic/intro.md | 1 + zh-CN/src/result-panic/panic.md | 1 + zh-CN/src/result-panic/result.md | 1 + zh-CN/src/self-referential.md | 1 + zh-CN/src/smart-pointers/box.md | 1 + zh-CN/src/smart-pointers/cell-refcell.md | 1 + zh-CN/src/smart-pointers/deref.md | 1 + zh-CN/src/smart-pointers/drop.md | 1 + zh-CN/src/smart-pointers/intro.md | 1 + zh-CN/src/smart-pointers/rc-arc.md | 1 + zh-CN/src/tests/assertions.md | 1 + zh-CN/src/tests/benchmark.md | 3 + zh-CN/src/tests/intro.md | 1 + zh-CN/src/tests/unit-integration.md | 1 + zh-CN/src/tests/write-tests.md | 1 + zh-CN/src/threads/atomic.md | 1 + zh-CN/src/threads/basic-using.md | 1 + zh-CN/src/threads/intro.md | 1 + zh-CN/src/threads/message-passing.md | 1 + zh-CN/src/threads/send-sync.md | 1 + zh-CN/src/threads/sync.md | 1 + zh-CN/src/type-conversion.md | 1 + zh-CN/src/unsafe.md | 1 + zh-CN/src/variables.md | 1 + zh-CN/src/weak.md | 1 + zh-CN/src/why-exercise.md | 1 + 176 files changed, 407 insertions(+), 1 deletion(-) rename .gitignore => en/.gitignore (100%) rename {assets => en/assets}/CNAME (100%) rename book.toml => en/book.toml (93%) rename deploy => en/deploy (100%) rename {src => en/src}/SUMMARY.md (100%) rename {src => en/src}/async/async-await.md (100%) rename {src => en/src}/async/future.md (100%) rename {src => en/src}/async/intro.md (100%) rename {src => en/src}/async/pin-unpin.md (100%) rename {src => en/src}/async/stream.md (100%) rename {src => en/src}/basic-types/char-bool-unit.md (100%) rename {src => en/src}/basic-types/functions.md (100%) rename {src => en/src}/basic-types/intro.md (100%) rename {src => en/src}/basic-types/numbers.md (100%) rename {src => en/src}/basic-types/statements-expressions.md (100%) rename {src => en/src}/circle-refer (100%) rename {src => en/src}/circle-reference/intro.md (100%) rename {src => en/src}/collections/hashmap.md (100%) rename {src => en/src}/collections/intro.md (100%) rename {src => en/src}/collections/vector.md (100%) rename {src => en/src}/comments-docs.md (100%) rename {src => en/src}/compound-types/array.md (100%) rename {src => en/src}/compound-types/enum.md (100%) rename {src => en/src}/compound-types/intro.md (100%) rename {src => en/src}/compound-types/string-slice.md (100%) rename {src => en/src}/compound-types/struct.md (100%) rename {src => en/src}/compound-types/tuple.md (100%) rename {src => en/src}/crate (100%) rename {src => en/src}/crate-module/crate.md (100%) rename {src => en/src}/crate-module/intro.md (100%) rename {src => en/src}/crate-module/module.md (100%) rename {src => en/src}/crate-module/use-pub.md (100%) rename {src => en/src}/errors.md (100%) rename {src => en/src}/flow-control.md (100%) rename {src => en/src}/formatted-output.md (100%) rename {src => en/src}/functional-programing/cloure.md (100%) rename {src => en/src}/functional-programing/intro.md (100%) rename {src => en/src}/functional-programing/iterator.md (100%) rename {src => en/src}/functional-programming/closure.md (100%) rename {src => en/src}/functional-programming/intro.md (100%) rename {src => en/src}/generics-traits/advance-traits.md (100%) rename {src => en/src}/generics-traits/generics.md (100%) rename {src => en/src}/generics-traits/intro.md (100%) rename {src => en/src}/generics-traits/trait-object.md (100%) rename {src => en/src}/generics-traits/traits.md (100%) rename {src => en/src}/global-variables.md (100%) rename {src => en/src}/lifetime/advance.md (100%) rename {src => en/src}/lifetime/basic.md (100%) rename {src => en/src}/lifetime/intro.md (100%) rename {src => en/src}/lifetime/static.md (100%) rename {src => en/src}/macro.md (100%) rename {src => en/src}/method.md (100%) rename {src => en/src}/newtype-sized.md (100%) rename {src => en/src}/ownership/borrowing.md (100%) rename {src => en/src}/ownership/intro.md (100%) rename {src => en/src}/ownership/ownership.md (100%) rename {src => en/src}/pattern-match/intro.md (100%) rename {src => en/src}/pattern-match/match-iflet.md (100%) rename {src => en/src}/pattern-match/option.md (100%) rename {src => en/src}/pattern-match/patterns.md (100%) rename {src => en/src}/resu (100%) rename {src => en/src}/result-panic/intro.md (100%) rename {src => en/src}/result-panic/panic.md (100%) rename {src => en/src}/result-panic/result.md (100%) rename {src => en/src}/self-referential.md (100%) rename {src => en/src}/smart-pointers/box.md (100%) rename {src => en/src}/smart-pointers/cell-refcell.md (100%) rename {src => en/src}/smart-pointers/deref.md (100%) rename {src => en/src}/smart-pointers/drop.md (100%) rename {src => en/src}/smart-pointers/intro.md (100%) rename {src => en/src}/smart-pointers/rc-arc.md (100%) rename {src => en/src}/tests/assertions.md (100%) rename {src => en/src}/tests/benchmark.md (100%) rename {src => en/src}/tests/intro.md (100%) rename {src => en/src}/tests/unit-integration.md (100%) rename {src => en/src}/tests/write-tests.md (100%) rename {src => en/src}/threads/atomic.md (100%) rename {src => en/src}/threads/basic-using.md (100%) rename {src => en/src}/threads/intro.md (100%) rename {src => en/src}/threads/message-passing.md (100%) rename {src => en/src}/threads/send-sync.md (100%) rename {src => en/src}/threads/sync.md (100%) rename {src => en/src}/type-conversion.md (100%) rename {src => en/src}/unsafe.md (100%) rename {src => en/src}/variables.md (100%) rename {src => en/src}/weak.md (100%) rename {src => en/src}/why-exercise.md (100%) create mode 100644 zh-CN/.gitignore create mode 100644 zh-CN/assets/CNAME create mode 100644 zh-CN/book.toml create mode 100755 zh-CN/deploy create mode 100644 zh-CN/src/SUMMARY.md create mode 100644 zh-CN/src/async/async-await.md create mode 100644 zh-CN/src/async/future.md create mode 100644 zh-CN/src/async/intro.md create mode 100644 zh-CN/src/async/pin-unpin.md create mode 100644 zh-CN/src/async/stream.md create mode 100644 zh-CN/src/basic-types/char-bool-unit.md create mode 100644 zh-CN/src/basic-types/functions.md create mode 100644 zh-CN/src/basic-types/intro.md create mode 100644 zh-CN/src/basic-types/numbers.md create mode 100644 zh-CN/src/basic-types/statements-expressions.md create mode 100644 zh-CN/src/circle-refer create mode 100644 zh-CN/src/circle-reference/intro.md create mode 100644 zh-CN/src/collections/hashmap.md create mode 100644 zh-CN/src/collections/intro.md create mode 100644 zh-CN/src/collections/vector.md create mode 100644 zh-CN/src/comments-docs.md create mode 100644 zh-CN/src/compound-types/array.md create mode 100644 zh-CN/src/compound-types/enum.md create mode 100644 zh-CN/src/compound-types/intro.md create mode 100644 zh-CN/src/compound-types/string-slice.md create mode 100644 zh-CN/src/compound-types/struct.md create mode 100644 zh-CN/src/compound-types/tuple.md create mode 100644 zh-CN/src/crate create mode 100644 zh-CN/src/crate-module/crate.md create mode 100644 zh-CN/src/crate-module/intro.md create mode 100644 zh-CN/src/crate-module/module.md create mode 100644 zh-CN/src/crate-module/use-pub.md create mode 100644 zh-CN/src/errors.md create mode 100644 zh-CN/src/flow-control.md create mode 100644 zh-CN/src/formatted-output.md create mode 100644 zh-CN/src/functional-programing/cloure.md create mode 100644 zh-CN/src/functional-programing/intro.md create mode 100644 zh-CN/src/functional-programing/iterator.md create mode 100644 zh-CN/src/functional-programming/closure.md create mode 100644 zh-CN/src/functional-programming/intro.md create mode 100644 zh-CN/src/generics-traits/advance-traits.md create mode 100644 zh-CN/src/generics-traits/generics.md create mode 100644 zh-CN/src/generics-traits/intro.md create mode 100644 zh-CN/src/generics-traits/trait-object.md create mode 100644 zh-CN/src/generics-traits/traits.md create mode 100644 zh-CN/src/global-variables.md create mode 100644 zh-CN/src/lifetime/advance.md create mode 100644 zh-CN/src/lifetime/basic.md create mode 100644 zh-CN/src/lifetime/intro.md create mode 100644 zh-CN/src/lifetime/static.md create mode 100644 zh-CN/src/macro.md create mode 100644 zh-CN/src/method.md create mode 100644 zh-CN/src/newtype-sized.md create mode 100644 zh-CN/src/ownership/borrowing.md create mode 100644 zh-CN/src/ownership/intro.md create mode 100644 zh-CN/src/ownership/ownership.md create mode 100644 zh-CN/src/pattern-match/intro.md create mode 100644 zh-CN/src/pattern-match/match-iflet.md create mode 100644 zh-CN/src/pattern-match/option.md create mode 100644 zh-CN/src/pattern-match/patterns.md create mode 100644 zh-CN/src/resu create mode 100644 zh-CN/src/result-panic/intro.md create mode 100644 zh-CN/src/result-panic/panic.md create mode 100644 zh-CN/src/result-panic/result.md create mode 100644 zh-CN/src/self-referential.md create mode 100644 zh-CN/src/smart-pointers/box.md create mode 100644 zh-CN/src/smart-pointers/cell-refcell.md create mode 100644 zh-CN/src/smart-pointers/deref.md create mode 100644 zh-CN/src/smart-pointers/drop.md create mode 100644 zh-CN/src/smart-pointers/intro.md create mode 100644 zh-CN/src/smart-pointers/rc-arc.md create mode 100644 zh-CN/src/tests/assertions.md create mode 100644 zh-CN/src/tests/benchmark.md create mode 100644 zh-CN/src/tests/intro.md create mode 100644 zh-CN/src/tests/unit-integration.md create mode 100644 zh-CN/src/tests/write-tests.md create mode 100644 zh-CN/src/threads/atomic.md create mode 100644 zh-CN/src/threads/basic-using.md create mode 100644 zh-CN/src/threads/intro.md create mode 100644 zh-CN/src/threads/message-passing.md create mode 100644 zh-CN/src/threads/send-sync.md create mode 100644 zh-CN/src/threads/sync.md create mode 100644 zh-CN/src/type-conversion.md create mode 100644 zh-CN/src/unsafe.md create mode 100644 zh-CN/src/variables.md create mode 100644 zh-CN/src/weak.md create mode 100644 zh-CN/src/why-exercise.md diff --git a/.DS_Store b/.DS_Store index 1c840f64c824bb41506efb253e87aaea32bc7984..e16b619aa2061ca57283a7db777c7558c4f29ac8 100644 GIT binary patch delta 47 zcmZoMXfc@JFUrioz`)4BAi%(o%aF>T2P9KGb0!~TT+Yb6*?{pn+r$Qy&Fmb1`2p`Z B3%dXS delta 80 zcmZoMXfc@JFUrEez`)4BAi$86lb-}+3jnd> +where + T: Fn(E) -> E, + E: Copy +{ + query: T, + value: Option, +} + +impl Cacher +where + T: Fn(E) -> E, + E: Copy +{ + fn new(query: T) -> Cacher { + Cacher { + query, + value: None, + } + } + + fn value(&mut self, arg: E) -> E { + match self.value { + Some(v) => v, + None => { + let v = (self.query)(arg); + self.value = Some(v); + v + } + } + } +} +fn main() { + +} + +#[test] +fn call_with_different_values() { + let mut c = Cacher::new(|a| a); + + let v1 = c.value(1); + let v2 = c.value(2); + + assert_eq!(v2, 1); +} +``` \ No newline at end of file diff --git a/zh-CN/src/functional-programing/intro.md b/zh-CN/src/functional-programing/intro.md new file mode 100644 index 0000000..6f326b8 --- /dev/null +++ b/zh-CN/src/functional-programing/intro.md @@ -0,0 +1 @@ +# Functional programing diff --git a/zh-CN/src/functional-programing/iterator.md b/zh-CN/src/functional-programing/iterator.md new file mode 100644 index 0000000..2a4a2aa --- /dev/null +++ b/zh-CN/src/functional-programing/iterator.md @@ -0,0 +1 @@ +# Iterator diff --git a/zh-CN/src/functional-programming/closure.md b/zh-CN/src/functional-programming/closure.md new file mode 100644 index 0000000..fb73740 --- /dev/null +++ b/zh-CN/src/functional-programming/closure.md @@ -0,0 +1,51 @@ +# Closure + +下面代码是Rust圣经课程中[闭包](http://course.rs/advance/functional-programing/closure.html#结构体中的闭包)章节的课内练习题答案: + +```rust +struct Cacher +where + T: Fn(E) -> E, + E: Copy +{ + query: T, + value: Option, +} + +impl Cacher +where + T: Fn(E) -> E, + E: Copy +{ + fn new(query: T) -> Cacher { + Cacher { + query, + value: None, + } + } + + fn value(&mut self, arg: E) -> E { + match self.value { + Some(v) => v, + None => { + let v = (self.query)(arg); + self.value = Some(v); + v + } + } + } +} +fn main() { + +} + +#[test] +fn call_with_different_values() { + let mut c = Cacher::new(|a| a); + + let v1 = c.value(1); + let v2 = c.value(2); + + assert_eq!(v2, 1); +} +``` \ No newline at end of file diff --git a/zh-CN/src/functional-programming/intro.md b/zh-CN/src/functional-programming/intro.md new file mode 100644 index 0000000..dca041e --- /dev/null +++ b/zh-CN/src/functional-programming/intro.md @@ -0,0 +1 @@ +# Functional Programming diff --git a/zh-CN/src/generics-traits/advance-traits.md b/zh-CN/src/generics-traits/advance-traits.md new file mode 100644 index 0000000..8cd2f63 --- /dev/null +++ b/zh-CN/src/generics-traits/advance-traits.md @@ -0,0 +1 @@ +# Advance Traits diff --git a/zh-CN/src/generics-traits/generics.md b/zh-CN/src/generics-traits/generics.md new file mode 100644 index 0000000..292d26b --- /dev/null +++ b/zh-CN/src/generics-traits/generics.md @@ -0,0 +1 @@ +# Generics diff --git a/zh-CN/src/generics-traits/intro.md b/zh-CN/src/generics-traits/intro.md new file mode 100644 index 0000000..340ad0e --- /dev/null +++ b/zh-CN/src/generics-traits/intro.md @@ -0,0 +1 @@ +# Generics and Traits diff --git a/zh-CN/src/generics-traits/trait-object.md b/zh-CN/src/generics-traits/trait-object.md new file mode 100644 index 0000000..38a0b34 --- /dev/null +++ b/zh-CN/src/generics-traits/trait-object.md @@ -0,0 +1 @@ +# Trait Object diff --git a/zh-CN/src/generics-traits/traits.md b/zh-CN/src/generics-traits/traits.md new file mode 100644 index 0000000..445d444 --- /dev/null +++ b/zh-CN/src/generics-traits/traits.md @@ -0,0 +1 @@ +# Traits diff --git a/zh-CN/src/global-variables.md b/zh-CN/src/global-variables.md new file mode 100644 index 0000000..ad85421 --- /dev/null +++ b/zh-CN/src/global-variables.md @@ -0,0 +1 @@ +# Global variables diff --git a/zh-CN/src/lifetime/advance.md b/zh-CN/src/lifetime/advance.md new file mode 100644 index 0000000..4ee0e07 --- /dev/null +++ b/zh-CN/src/lifetime/advance.md @@ -0,0 +1 @@ +# advance diff --git a/zh-CN/src/lifetime/basic.md b/zh-CN/src/lifetime/basic.md new file mode 100644 index 0000000..40439f4 --- /dev/null +++ b/zh-CN/src/lifetime/basic.md @@ -0,0 +1,26 @@ +## 生命周期消除 + +```rust +fn print(s: &str); // elided +fn print<'a>(s: &'a str); // expanded + +fn debug(lvl: usize, s: &str); // elided +fn debug<'a>(lvl: usize, s: &'a str); // expanded + +fn substr(s: &str, until: usize) -> &str; // elided +fn substr<'a>(s: &'a str, until: usize) -> &'a str; // expanded + +fn get_str() -> &str; // ILLEGAL + +fn frob(s: &str, t: &str) -> &str; // ILLEGAL + +fn get_mut(&mut self) -> &mut T; // elided +fn get_mut<'a>(&'a mut self) -> &'a mut T; // expanded + +fn args(&mut self, args: &[T]) -> &mut Command // elided +fn args<'a, 'b, T: ToCStr>(&'a mut self, args: &'b [T]) -> &'a mut Command // expanded + +fn new(buf: &mut [u8]) -> BufWriter; // elided +fn new(buf: &mut [u8]) -> BufWriter<'_>; // elided (with `rust_2018_idioms`) +fn new<'a>(buf: &'a mut [u8]) -> BufWriter<'a> // expanded +``` \ No newline at end of file diff --git a/zh-CN/src/lifetime/intro.md b/zh-CN/src/lifetime/intro.md new file mode 100644 index 0000000..2615315 --- /dev/null +++ b/zh-CN/src/lifetime/intro.md @@ -0,0 +1 @@ +# Lifetime diff --git a/zh-CN/src/lifetime/static.md b/zh-CN/src/lifetime/static.md new file mode 100644 index 0000000..782446e --- /dev/null +++ b/zh-CN/src/lifetime/static.md @@ -0,0 +1,49 @@ +# &'static and T: 'static + +```rust,editable +use std::fmt::Display; + +fn main() { + let mut string = "First".to_owned(); + + string.push_str(string.to_uppercase().as_str()); + print_a(&string); + print_b(&string); + print_c(&string); // Compilation error + print_d(&string); // Compilation error + print_e(&string); + print_f(&string); + print_g(&string); // Compilation error +} + +fn print_a(t: &T) { + println!("{}", t); +} + +fn print_b(t: &T) +where + T: Display + 'static, +{ + println!("{}", t); +} + +fn print_c(t: &'static dyn Display) { + println!("{}", t) +} + +fn print_d(t: &'static impl Display) { + println!("{}", t) +} + +fn print_e(t: &(dyn Display + 'static)) { + println!("{}", t) +} + +fn print_f(t: &(impl Display + 'static)) { + println!("{}", t) +} + +fn print_g(t: &'static String) { + println!("{}", t); +} +``` \ No newline at end of file diff --git a/zh-CN/src/macro.md b/zh-CN/src/macro.md new file mode 100644 index 0000000..20503ba --- /dev/null +++ b/zh-CN/src/macro.md @@ -0,0 +1 @@ +# macro diff --git a/zh-CN/src/method.md b/zh-CN/src/method.md new file mode 100644 index 0000000..81d5a1c --- /dev/null +++ b/zh-CN/src/method.md @@ -0,0 +1 @@ +# Method diff --git a/zh-CN/src/newtype-sized.md b/zh-CN/src/newtype-sized.md new file mode 100644 index 0000000..fc3f074 --- /dev/null +++ b/zh-CN/src/newtype-sized.md @@ -0,0 +1 @@ +# newtype and Sized diff --git a/zh-CN/src/ownership/borrowing.md b/zh-CN/src/ownership/borrowing.md new file mode 100644 index 0000000..9ce0535 --- /dev/null +++ b/zh-CN/src/ownership/borrowing.md @@ -0,0 +1 @@ +# Reference and Borrowing diff --git a/zh-CN/src/ownership/intro.md b/zh-CN/src/ownership/intro.md new file mode 100644 index 0000000..e749a67 --- /dev/null +++ b/zh-CN/src/ownership/intro.md @@ -0,0 +1 @@ +# Ownership and Borrowing diff --git a/zh-CN/src/ownership/ownership.md b/zh-CN/src/ownership/ownership.md new file mode 100644 index 0000000..77f5a52 --- /dev/null +++ b/zh-CN/src/ownership/ownership.md @@ -0,0 +1 @@ +# Ownership diff --git a/zh-CN/src/pattern-match/intro.md b/zh-CN/src/pattern-match/intro.md new file mode 100644 index 0000000..ee4bb18 --- /dev/null +++ b/zh-CN/src/pattern-match/intro.md @@ -0,0 +1 @@ +# Pattern Match diff --git a/zh-CN/src/pattern-match/match-iflet.md b/zh-CN/src/pattern-match/match-iflet.md new file mode 100644 index 0000000..18eed0e --- /dev/null +++ b/zh-CN/src/pattern-match/match-iflet.md @@ -0,0 +1 @@ +# match, if let diff --git a/zh-CN/src/pattern-match/option.md b/zh-CN/src/pattern-match/option.md new file mode 100644 index 0000000..cb5ffa1 --- /dev/null +++ b/zh-CN/src/pattern-match/option.md @@ -0,0 +1 @@ +# Option destructing diff --git a/zh-CN/src/pattern-match/patterns.md b/zh-CN/src/pattern-match/patterns.md new file mode 100644 index 0000000..3c9daa3 --- /dev/null +++ b/zh-CN/src/pattern-match/patterns.md @@ -0,0 +1 @@ +# Patterns diff --git a/zh-CN/src/resu b/zh-CN/src/resu new file mode 100644 index 0000000..b82dd9a --- /dev/null +++ b/zh-CN/src/resu @@ -0,0 +1 @@ +# panic! diff --git a/zh-CN/src/result-panic/intro.md b/zh-CN/src/result-panic/intro.md new file mode 100644 index 0000000..f724a70 --- /dev/null +++ b/zh-CN/src/result-panic/intro.md @@ -0,0 +1 @@ +# Result and panic diff --git a/zh-CN/src/result-panic/panic.md b/zh-CN/src/result-panic/panic.md new file mode 100644 index 0000000..b82dd9a --- /dev/null +++ b/zh-CN/src/result-panic/panic.md @@ -0,0 +1 @@ +# panic! diff --git a/zh-CN/src/result-panic/result.md b/zh-CN/src/result-panic/result.md new file mode 100644 index 0000000..7af6baf --- /dev/null +++ b/zh-CN/src/result-panic/result.md @@ -0,0 +1 @@ +# result and ? diff --git a/zh-CN/src/self-referential.md b/zh-CN/src/self-referential.md new file mode 100644 index 0000000..37a4784 --- /dev/null +++ b/zh-CN/src/self-referential.md @@ -0,0 +1 @@ +# Self referential diff --git a/zh-CN/src/smart-pointers/box.md b/zh-CN/src/smart-pointers/box.md new file mode 100644 index 0000000..2436f01 --- /dev/null +++ b/zh-CN/src/smart-pointers/box.md @@ -0,0 +1 @@ +# Box diff --git a/zh-CN/src/smart-pointers/cell-refcell.md b/zh-CN/src/smart-pointers/cell-refcell.md new file mode 100644 index 0000000..4e61a02 --- /dev/null +++ b/zh-CN/src/smart-pointers/cell-refcell.md @@ -0,0 +1 @@ +# Cell and RefCell diff --git a/zh-CN/src/smart-pointers/deref.md b/zh-CN/src/smart-pointers/deref.md new file mode 100644 index 0000000..8c709e8 --- /dev/null +++ b/zh-CN/src/smart-pointers/deref.md @@ -0,0 +1 @@ +# Deref diff --git a/zh-CN/src/smart-pointers/drop.md b/zh-CN/src/smart-pointers/drop.md new file mode 100644 index 0000000..c6ecf82 --- /dev/null +++ b/zh-CN/src/smart-pointers/drop.md @@ -0,0 +1 @@ +# Drop diff --git a/zh-CN/src/smart-pointers/intro.md b/zh-CN/src/smart-pointers/intro.md new file mode 100644 index 0000000..997d50c --- /dev/null +++ b/zh-CN/src/smart-pointers/intro.md @@ -0,0 +1 @@ +# Smart pointers diff --git a/zh-CN/src/smart-pointers/rc-arc.md b/zh-CN/src/smart-pointers/rc-arc.md new file mode 100644 index 0000000..8f723ed --- /dev/null +++ b/zh-CN/src/smart-pointers/rc-arc.md @@ -0,0 +1 @@ +# Rc and Arc diff --git a/zh-CN/src/tests/assertions.md b/zh-CN/src/tests/assertions.md new file mode 100644 index 0000000..f5743ab --- /dev/null +++ b/zh-CN/src/tests/assertions.md @@ -0,0 +1 @@ +# Assertions diff --git a/zh-CN/src/tests/benchmark.md b/zh-CN/src/tests/benchmark.md new file mode 100644 index 0000000..f883201 --- /dev/null +++ b/zh-CN/src/tests/benchmark.md @@ -0,0 +1,3 @@ +# Benchmark + +https://doc.rust-lang.org/unstable-book/library-features/test.html \ No newline at end of file diff --git a/zh-CN/src/tests/intro.md b/zh-CN/src/tests/intro.md new file mode 100644 index 0000000..007eb95 --- /dev/null +++ b/zh-CN/src/tests/intro.md @@ -0,0 +1 @@ +# Tests diff --git a/zh-CN/src/tests/unit-integration.md b/zh-CN/src/tests/unit-integration.md new file mode 100644 index 0000000..68df7e4 --- /dev/null +++ b/zh-CN/src/tests/unit-integration.md @@ -0,0 +1 @@ +# Unit and Integration diff --git a/zh-CN/src/tests/write-tests.md b/zh-CN/src/tests/write-tests.md new file mode 100644 index 0000000..245c701 --- /dev/null +++ b/zh-CN/src/tests/write-tests.md @@ -0,0 +1 @@ +# Write Tests diff --git a/zh-CN/src/threads/atomic.md b/zh-CN/src/threads/atomic.md new file mode 100644 index 0000000..eecfaa8 --- /dev/null +++ b/zh-CN/src/threads/atomic.md @@ -0,0 +1 @@ +# Atomic diff --git a/zh-CN/src/threads/basic-using.md b/zh-CN/src/threads/basic-using.md new file mode 100644 index 0000000..f0a2d46 --- /dev/null +++ b/zh-CN/src/threads/basic-using.md @@ -0,0 +1 @@ +# Basic using diff --git a/zh-CN/src/threads/intro.md b/zh-CN/src/threads/intro.md new file mode 100644 index 0000000..f60f399 --- /dev/null +++ b/zh-CN/src/threads/intro.md @@ -0,0 +1 @@ +# Threads diff --git a/zh-CN/src/threads/message-passing.md b/zh-CN/src/threads/message-passing.md new file mode 100644 index 0000000..4d33941 --- /dev/null +++ b/zh-CN/src/threads/message-passing.md @@ -0,0 +1 @@ +# Message passing diff --git a/zh-CN/src/threads/send-sync.md b/zh-CN/src/threads/send-sync.md new file mode 100644 index 0000000..171f95f --- /dev/null +++ b/zh-CN/src/threads/send-sync.md @@ -0,0 +1 @@ +# Send and Sync diff --git a/zh-CN/src/threads/sync.md b/zh-CN/src/threads/sync.md new file mode 100644 index 0000000..bc4491e --- /dev/null +++ b/zh-CN/src/threads/sync.md @@ -0,0 +1 @@ +# Sync diff --git a/zh-CN/src/type-conversion.md b/zh-CN/src/type-conversion.md new file mode 100644 index 0000000..7b930e5 --- /dev/null +++ b/zh-CN/src/type-conversion.md @@ -0,0 +1 @@ +# Type Conversion diff --git a/zh-CN/src/unsafe.md b/zh-CN/src/unsafe.md new file mode 100644 index 0000000..df49df6 --- /dev/null +++ b/zh-CN/src/unsafe.md @@ -0,0 +1 @@ +# unsafe diff --git a/zh-CN/src/variables.md b/zh-CN/src/variables.md new file mode 100644 index 0000000..ee1fba4 --- /dev/null +++ b/zh-CN/src/variables.md @@ -0,0 +1 @@ +# Variables diff --git a/zh-CN/src/weak.md b/zh-CN/src/weak.md new file mode 100644 index 0000000..04b7a8f --- /dev/null +++ b/zh-CN/src/weak.md @@ -0,0 +1 @@ +# Weak and Circle reference diff --git a/zh-CN/src/why-exercise.md b/zh-CN/src/why-exercise.md new file mode 100644 index 0000000..c3e5e3f --- /dev/null +++ b/zh-CN/src/why-exercise.md @@ -0,0 +1 @@ +# Why Exercise.rs