gitextract_g9fgxovm/ ├── .github/ │ └── workflows/ │ ├── ci.yml │ └── deploy.yml ├── .gitignore ├── README.md ├── assets/ │ ├── CNAME │ ├── bigPicture.js │ ├── custom.js │ ├── rustlings-zh/ │ │ ├── .all-contributorsrc │ │ ├── .clog.toml │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .gitpod.yml │ │ ├── .replit │ │ ├── CHANGELOG.md │ │ ├── CONTRIBUTING.md │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── README.md │ │ ├── default_out.txt │ │ ├── exercises/ │ │ │ ├── README.md │ │ │ ├── advanced_errors/ │ │ │ │ ├── advanced_errs1.rs │ │ │ │ └── advanced_errs2.rs │ │ │ ├── clippy/ │ │ │ │ ├── README.md │ │ │ │ ├── clippy1.rs │ │ │ │ └── clippy2.rs │ │ │ ├── collections/ │ │ │ │ ├── README.md │ │ │ │ ├── hashmap1.rs │ │ │ │ ├── hashmap2.rs │ │ │ │ ├── vec1.rs │ │ │ │ └── vec2.rs │ │ │ ├── conversions/ │ │ │ │ ├── README.md │ │ │ │ ├── as_ref_mut.rs │ │ │ │ ├── from_into.rs │ │ │ │ ├── from_str.rs │ │ │ │ ├── try_from_into.rs │ │ │ │ └── using_as.rs │ │ │ ├── enums/ │ │ │ │ ├── README.md │ │ │ │ ├── enums1.rs │ │ │ │ ├── enums2.rs │ │ │ │ └── enums3.rs │ │ │ ├── error_handling/ │ │ │ │ ├── README.md │ │ │ │ ├── errors1.rs │ │ │ │ ├── errors2.rs │ │ │ │ ├── errors3.rs │ │ │ │ ├── errors4.rs │ │ │ │ ├── errors5.rs │ │ │ │ └── errors6.rs │ │ │ ├── functions/ │ │ │ │ ├── README.md │ │ │ │ ├── functions1.rs │ │ │ │ ├── functions2.rs │ │ │ │ ├── functions3.rs │ │ │ │ ├── functions4.rs │ │ │ │ └── functions5.rs │ │ │ ├── generics/ │ │ │ │ ├── README.md │ │ │ │ ├── generics1.rs │ │ │ │ ├── generics2.rs │ │ │ │ └── generics3.rs │ │ │ ├── if/ │ │ │ │ ├── README.md │ │ │ │ ├── if1.rs │ │ │ │ └── if2.rs │ │ │ ├── macros/ │ │ │ │ ├── README.md │ │ │ │ ├── macros1.rs │ │ │ │ ├── macros2.rs │ │ │ │ ├── macros3.rs │ │ │ │ └── macros4.rs │ │ │ ├── modules/ │ │ │ │ ├── README.md │ │ │ │ ├── modules1.rs │ │ │ │ ├── modules2.rs │ │ │ │ └── modules3.rs │ │ │ ├── move_semantics/ │ │ │ │ ├── README.md │ │ │ │ ├── move_semantics1.rs │ │ │ │ ├── move_semantics2.rs │ │ │ │ ├── move_semantics3.rs │ │ │ │ ├── move_semantics4.rs │ │ │ │ └── move_semantics5.rs │ │ │ ├── option/ │ │ │ │ ├── README.md │ │ │ │ ├── option1.rs │ │ │ │ ├── option2.rs │ │ │ │ └── option3.rs │ │ │ ├── primitive_types/ │ │ │ │ ├── README.md │ │ │ │ ├── primitive_types1.rs │ │ │ │ ├── primitive_types2.rs │ │ │ │ ├── primitive_types3.rs │ │ │ │ ├── primitive_types4.rs │ │ │ │ ├── primitive_types5.rs │ │ │ │ └── primitive_types6.rs │ │ │ ├── quiz1.rs │ │ │ ├── quiz2.rs │ │ │ ├── quiz3.rs │ │ │ ├── quiz4.rs │ │ │ ├── standard_library_types/ │ │ │ │ ├── README.md │ │ │ │ ├── arc1.rs │ │ │ │ ├── box1.rs │ │ │ │ ├── iterators1.rs │ │ │ │ ├── iterators2.rs │ │ │ │ ├── iterators3.rs │ │ │ │ ├── iterators4.rs │ │ │ │ └── iterators5.rs │ │ │ ├── strings/ │ │ │ │ ├── README.md │ │ │ │ ├── strings1.rs │ │ │ │ └── strings2.rs │ │ │ ├── structs/ │ │ │ │ ├── README.md │ │ │ │ ├── structs1.rs │ │ │ │ ├── structs2.rs │ │ │ │ └── structs3.rs │ │ │ ├── tests/ │ │ │ │ ├── README.md │ │ │ │ ├── tests1.rs │ │ │ │ ├── tests2.rs │ │ │ │ └── tests3.rs │ │ │ ├── threads/ │ │ │ │ ├── README.md │ │ │ │ └── threads1.rs │ │ │ ├── traits/ │ │ │ │ ├── README.md │ │ │ │ ├── traits1.rs │ │ │ │ └── traits2.rs │ │ │ └── variables/ │ │ │ ├── README.md │ │ │ ├── variables1.rs │ │ │ ├── variables2.rs │ │ │ ├── variables3.rs │ │ │ ├── variables4.rs │ │ │ ├── variables5.rs │ │ │ └── variables6.rs │ │ ├── info.toml │ │ ├── install.ps1 │ │ ├── install.sh │ │ ├── src/ │ │ │ ├── exercise.rs │ │ │ ├── main.rs │ │ │ ├── run.rs │ │ │ ├── ui.rs │ │ │ └── verify.rs │ │ └── tests/ │ │ ├── fixture/ │ │ │ ├── failure/ │ │ │ │ ├── compFailure.rs │ │ │ │ ├── compNoExercise.rs │ │ │ │ ├── info.toml │ │ │ │ ├── testFailure.rs │ │ │ │ └── testNotPassed.rs │ │ │ ├── state/ │ │ │ │ ├── finished_exercise.rs │ │ │ │ ├── info.toml │ │ │ │ ├── pending_exercise.rs │ │ │ │ └── pending_test_exercise.rs │ │ │ └── success/ │ │ │ ├── compSuccess.rs │ │ │ ├── info.toml │ │ │ └── testSuccess.rs │ │ └── integration_tests.rs │ ├── sitemap.xml │ └── writing-material/ │ ├── books.md │ ├── courses.md │ ├── demos_for_learning.md │ ├── good-sourcecode.md │ ├── posts/ │ │ ├── Iterator.md │ │ ├── SIMD.md │ │ ├── atomic.md │ │ ├── attributes.md │ │ ├── fight-with-compiler-check/ │ │ │ ├── borrow.md │ │ │ └── generic.md │ │ ├── file.md │ │ ├── function_signature.md │ │ ├── generics.md │ │ ├── hashmap.md │ │ ├── identifier.md │ │ ├── images.md │ │ ├── interview.md │ │ ├── io.md │ │ ├── lifetime.md │ │ ├── lifetime_elision_rules.md │ │ ├── non-lexical-lifetime.md │ │ ├── operators.md │ │ ├── package.md │ │ ├── performance.md │ │ ├── plugins.md │ │ ├── reference.md │ │ ├── rust-analyser.md │ │ ├── self-referential.md │ │ ├── string.md │ │ ├── system_command.md │ │ ├── tests/ │ │ │ ├── doc_test.md │ │ │ ├── integration_test.md │ │ │ ├── misc.md │ │ │ └── unit_test.md │ │ ├── threads.md │ │ ├── to_resolved.md │ │ ├── tokio.md │ │ ├── trivia.md │ │ └── wasm.md │ ├── style_guide/ │ │ ├── coding.md │ │ └── naming.md │ └── 读者疑惑的点记录.md ├── book.toml ├── ci/ │ └── copy-assets.sh ├── deploy.sh ├── genpdf.sh ├── src/ │ ├── SUMMARY.md │ ├── about-book.md │ ├── advance/ │ │ ├── async/ │ │ │ ├── async-await.md │ │ │ ├── future-excuting.md │ │ │ ├── getting-started.md │ │ │ ├── intro.md │ │ │ ├── multi-futures-simultaneous.md │ │ │ ├── pain-points-and-workarounds.md │ │ │ ├── pin-unpin.md │ │ │ └── web-server.md │ │ ├── circle-self-ref/ │ │ │ ├── circle-reference.md │ │ │ ├── intro.md │ │ │ └── self-referential.md │ │ ├── concurrency-with-threads/ │ │ │ ├── concurrency-parallelism.md │ │ │ ├── intro.md │ │ │ ├── message-passing.md │ │ │ ├── races.md │ │ │ ├── ref-counter-lock.md │ │ │ ├── send-sync.md │ │ │ ├── sync1.md │ │ │ ├── sync2.md │ │ │ └── thread.md │ │ ├── difficulties/ │ │ │ └── pointer.md │ │ ├── errors.md │ │ ├── functional-programing/ │ │ │ ├── closure.md │ │ │ ├── intro.md │ │ │ └── iterator.md │ │ ├── global-variable.md │ │ ├── hrtb.md │ │ ├── into-types/ │ │ │ ├── converse.md │ │ │ ├── custom-type.md │ │ │ ├── enum-int.md │ │ │ ├── intro.md │ │ │ └── sized.md │ │ ├── intro.md │ │ ├── lifetime/ │ │ │ ├── advance.md │ │ │ ├── intro.md │ │ │ ├── misconceptions.md │ │ │ └── static.md │ │ ├── macro.md │ │ ├── simd.md │ │ ├── smart-pointer/ │ │ │ ├── box.md │ │ │ ├── cell-refcell.md │ │ │ ├── deref.md │ │ │ ├── drop.md │ │ │ ├── intro.md │ │ │ └── rc-arc.md │ │ └── unsafe/ │ │ ├── inline-asm.md │ │ ├── intro.md │ │ ├── superpowers.md │ │ └── ub.md │ ├── advance-practice/ │ │ ├── async.md │ │ ├── bridging-with-sync.md │ │ ├── channels.md │ │ ├── design-pattern.md │ │ ├── frame.md │ │ ├── getting-startted.md │ │ ├── graceful-shutdown.md │ │ ├── intro.md │ │ ├── io.md │ │ ├── overview.md │ │ ├── select.md │ │ ├── shared-state.md │ │ ├── spawning.md │ │ └── stream.md │ ├── advance-practice1/ │ │ ├── graceful-shutdown.md │ │ ├── intro.md │ │ ├── multi-threads.md │ │ └── web-server.md │ ├── appendix/ │ │ ├── derive.md │ │ ├── difficulties.md │ │ ├── expressions.md │ │ ├── intro.md │ │ ├── keywords.md │ │ ├── operators.md │ │ ├── prelude.md │ │ ├── rust-version.md │ │ └── rust-versions/ │ │ ├── 1.58.md │ │ ├── 1.59.md │ │ ├── 1.60.md │ │ ├── 1.61.md │ │ ├── 1.62.md │ │ ├── 1.63.md │ │ ├── 1.64.md │ │ ├── 1.65.md │ │ ├── 1.66.md │ │ ├── 1.67.md │ │ ├── 1.68.md │ │ ├── 1.69.md │ │ ├── 1.70.md │ │ ├── 1.71.md │ │ ├── 1.72.md │ │ ├── 1.73.md │ │ ├── 1.74.md │ │ ├── 1.75.md │ │ ├── 1.76.md │ │ ├── 1.77.md │ │ ├── 1.78.md │ │ ├── 1.79.md │ │ ├── 1.80.md │ │ ├── 1.81.md │ │ ├── 1.82.md │ │ ├── 1.83.md │ │ ├── 1.84.md │ │ ├── 1.85.md │ │ ├── 1.86.md │ │ ├── 1.87.md │ │ ├── 1.88.md │ │ ├── 1.89.md │ │ └── intro.md │ ├── basic/ │ │ ├── base-type/ │ │ │ ├── char-bool.md │ │ │ ├── function.md │ │ │ ├── index.md │ │ │ ├── numbers.md │ │ │ └── statement-expression.md │ │ ├── collections/ │ │ │ ├── hashmap.md │ │ │ ├── intro.md │ │ │ └── vector.md │ │ ├── comment.md │ │ ├── compound-type/ │ │ │ ├── array.md │ │ │ ├── enum.md │ │ │ ├── intro.md │ │ │ ├── string-slice.md │ │ │ ├── struct.md │ │ │ └── tuple.md │ │ ├── crate-module/ │ │ │ ├── crate.md │ │ │ ├── intro.md │ │ │ ├── module.md │ │ │ └── use.md │ │ ├── flow-control.md │ │ ├── formatted-output.md │ │ ├── intro.md │ │ ├── lifetime.md │ │ ├── match-pattern/ │ │ │ ├── all-patterns.md │ │ │ ├── intro.md │ │ │ ├── match-if-let.md │ │ │ ├── option.md │ │ │ └── pattern-match.md │ │ ├── method.md │ │ ├── ownership/ │ │ │ ├── borrowing.md │ │ │ ├── index.md │ │ │ └── ownership.md │ │ ├── result-error/ │ │ │ ├── intro.md │ │ │ ├── panic.md │ │ │ └── result.md │ │ ├── trait/ │ │ │ ├── advance-trait.md │ │ │ ├── generic.md │ │ │ ├── intro.md │ │ │ ├── trait-object.md │ │ │ └── trait.md │ │ └── variable.md │ ├── basic-practice/ │ │ ├── base-features.md │ │ ├── envs.md │ │ ├── intro.md │ │ ├── iterators.md │ │ ├── refactoring.md │ │ ├── stderr.md │ │ └── tests.md │ ├── beat-ai.md │ ├── cargo/ │ │ ├── getting-started.md │ │ ├── git-auth.md │ │ ├── guide/ │ │ │ ├── build-cache.md │ │ │ ├── cargo-cache.md │ │ │ ├── cargo-toml-lock.md │ │ │ ├── dependencies.md │ │ │ ├── download-package.md │ │ │ ├── intro.md │ │ │ ├── package-layout.md │ │ │ ├── tests-ci.md │ │ │ └── why-exist.md │ │ ├── intro.md │ │ └── reference/ │ │ ├── build-script/ │ │ │ ├── examples.md │ │ │ └── intro.md │ │ ├── cargo-target.md │ │ ├── configuration.md │ │ ├── deps-overriding.md │ │ ├── env.md │ │ ├── features/ │ │ │ ├── examples.md │ │ │ └── intro.md │ │ ├── intro.md │ │ ├── manifest.md │ │ ├── package-id.md │ │ ├── profile.md │ │ ├── profiles.md │ │ ├── publishing-on-crates.io.md │ │ ├── specify-deps.md │ │ └── workspaces.md │ ├── community.md │ ├── compiler/ │ │ ├── fight-with-compiler/ │ │ │ ├── borrowing/ │ │ │ │ ├── borrow-distinct-fields-of-struct.md │ │ │ │ ├── intro.md │ │ │ │ └── ref-exist-in-out-fn.md │ │ │ ├── intro.md │ │ │ ├── lifetime/ │ │ │ │ ├── closure-with-static.md │ │ │ │ ├── intro.md │ │ │ │ ├── loop.md │ │ │ │ ├── too-long1.md │ │ │ │ └── too-long2.md │ │ │ ├── phantom-data.md │ │ │ └── unconstrained.md │ │ ├── intro.md │ │ └── pitfalls/ │ │ ├── arithmetic-overflow.md │ │ ├── closure-with-lifetime.md │ │ ├── index.md │ │ ├── iterator-everywhere.md │ │ ├── lazy-iterators.md │ │ ├── main-with-channel-blocked.md │ │ ├── multiple-mutable-references.md │ │ ├── stack-overflow.md │ │ ├── the-disabled-mutability.md │ │ ├── use-vec-in-for.md │ │ ├── utf8-performance.md │ │ └── weird-ranges.md │ ├── difficulties/ │ │ ├── cow.md │ │ ├── eq.md │ │ ├── intro.md │ │ ├── lifetime.md │ │ ├── move-copy.md │ │ ├── pointer.md │ │ ├── slice.md │ │ └── string.md │ ├── first-try/ │ │ ├── cargo.md │ │ ├── editor.md │ │ ├── hello-world.md │ │ ├── installation.md │ │ ├── intro.md │ │ ├── slowly-downloading.md │ │ └── sth-you-should-not-do.md │ ├── github.md │ ├── index-list.md │ ├── into-rust.md │ ├── libraries/ │ │ ├── command/ │ │ │ ├── intro.md │ │ │ └── structopt.md │ │ ├── http/ │ │ │ ├── intro.md │ │ │ └── reqwest.md │ │ ├── intro.md │ │ └── json/ │ │ ├── intro.md │ │ └── serde.md │ ├── logs/ │ │ ├── about-log.md │ │ ├── intro.md │ │ ├── log.md │ │ ├── observe/ │ │ │ ├── about-observe.md │ │ │ ├── intro.md │ │ │ └── trace.md │ │ ├── tracing-logger.md │ │ └── tracing.md │ ├── practice/ │ │ ├── best-pratice.md │ │ ├── interview.md │ │ ├── intro.md │ │ ├── naming.md │ │ └── third-party-libs.md │ ├── practice.md │ ├── profiling/ │ │ ├── compiler/ │ │ │ ├── attributes.md │ │ │ ├── intro.md │ │ │ ├── llvm.md │ │ │ ├── optimization/ │ │ │ │ ├── intro.md │ │ │ │ └── option.md │ │ │ ├── phantom-data.md │ │ │ └── speed-up.md │ │ ├── intro.md │ │ ├── memory/ │ │ │ ├── allocation.md │ │ │ ├── intro.md │ │ │ ├── layout.md │ │ │ ├── pointer-ref.md │ │ │ ├── uninit.md │ │ │ └── virtual.md │ │ ├── performance/ │ │ │ ├── allocator.md │ │ │ ├── calculate.md │ │ │ ├── clone-copy.md │ │ │ ├── cpu-cache.md │ │ │ ├── deep-into-move.md │ │ │ ├── early-optimise.md │ │ │ ├── enum.md │ │ │ ├── heap-stack.md │ │ │ ├── intro.md │ │ │ ├── runtime-check.md │ │ │ ├── string.md │ │ │ └── tools.md │ │ └── profiling/ │ │ └── performance/ │ │ └── benchmark.md │ ├── rust-weekly.md │ ├── rustt.md │ ├── rusty-book.md │ ├── some-thoughts.md │ ├── std/ │ │ ├── hashmap.md │ │ ├── intro.md │ │ ├── iterator.md │ │ ├── search.md │ │ └── vector.md │ ├── templates/ │ │ ├── files/ │ │ │ ├── dir.md │ │ │ └── intro.md │ │ ├── http/ │ │ │ └── intro.md │ │ └── intro.md │ ├── test/ │ │ ├── assertion.md │ │ ├── benchmark.md │ │ ├── ci.md │ │ ├── intro.md │ │ ├── unit-integration-test.md │ │ └── write-tests.md │ ├── too-many-lists/ │ │ ├── advanced-lists/ │ │ │ ├── double-singly.md │ │ │ ├── intro.md │ │ │ ├── stack-allocated.md │ │ │ └── unsafe-deque.md │ │ ├── bad-stack/ │ │ │ ├── basic-operations.md │ │ │ ├── final-code.md │ │ │ ├── intro.md │ │ │ └── layout.md │ │ ├── deque/ │ │ │ ├── final-code.md │ │ │ ├── intro.md │ │ │ ├── iterator.md │ │ │ ├── layout.md │ │ │ ├── peek.md │ │ │ └── symmetric.md │ │ ├── do-we-need-it.md │ │ ├── intro.md │ │ ├── ok-stack/ │ │ │ ├── intro.md │ │ │ ├── iter.md │ │ │ ├── itermut.md │ │ │ ├── peek.md │ │ │ └── type-optimizing.md │ │ ├── persistent-stack/ │ │ │ ├── drop-arc.md │ │ │ ├── intro.md │ │ │ └── layout.md │ │ ├── production-unsafe-deque/ │ │ │ ├── basics.md │ │ │ ├── boring-combinatorics.md │ │ │ ├── drop-and-panic-safety.md │ │ │ ├── filling-in-random-bits.md │ │ │ ├── final-code.md │ │ │ ├── implementing-cursors.md │ │ │ ├── intro.md │ │ │ ├── layout.md │ │ │ ├── send-sync-and-compile-tests.md │ │ │ ├── testing-cursors.md │ │ │ ├── testing.md │ │ │ └── variance-and-phantomData.md │ │ └── unsafe-queue/ │ │ ├── basics.md │ │ ├── extra-junk.md │ │ ├── final-code.md │ │ ├── intro.md │ │ ├── layout.md │ │ ├── layout2.md │ │ ├── miri.md │ │ ├── stacked-borrow.md │ │ └── testing-stacked-borrow.md │ └── usecases/ │ ├── aws-rust.md │ └── intro.md └── theme/ ├── index1.hbs └── style.css