[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"knowledge-\u002Fapi\u002Fknowledge\u002Fbooklet\u002Fend\u002Frust\u002Fbase":3,"knowledge-related-\u002Fknowledge\u002Fbooklet\u002Fend\u002Frust\u002Fbase":1056,"knowledge-series-\u002Fknowledge\u002Fbooklet\u002Fend\u002Frust\u002Fbase":1075},{"source":4,"connector":5,"page":6},"sqlite","better-sqlite3",{"path":7,"title":8,"description":9,"category":10,"tags":11,"date":13,"pinned":14,"draft":14,"body":15,"seo":1052,"stem":1053,"id":1054,"extension":1055},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Frust\u002Fbase","Rust 基础","Rust 是注重内存安全与并发安全的系统级语言，通过所有权在编译期保证安全，无 GC。见 后端入门概览。","技能小册",[12],"rust","2020-07-21",false,{"type":16,"value":17,"toc":1029},"minimark",[18,22,51,54,58,235,239,244,247,252,255,279,284,287,291,296,314,317,366,374,380,424,428,431,449,458,461,479,482,486,500,504,507,522,529,537,557,564,585,614,617,620,643,650,668,671,675,678,682,706,709,712,786,795,805,815,860,863,867,877,883,918,927,930,964,972,975,978,1025],[19,20,8],"h1",{"id":21},"rust-基础",[23,24,25,32,33,37,38,41,42,45,46,50],"p",{},[26,27,31],"a",{"href":28,"rel":29},"https:\u002F\u002Fwww.rust-lang.org\u002F",[30],"nofollow","Rust"," 是注重",[34,35,36],"strong",{},"内存安全","与",[34,39,40],{},"并发安全","的系统级语言，通过",[34,43,44],{},"所有权","在编译期保证安全，无 GC。见 ",[26,47,49],{"href":48},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fbasics","后端入门概览","。",[23,52,53],{},"本章介绍工具链安装与 Cargo，从认识语言到写出第一个程序。",[55,56,57],"h2",{"id":57},"学习路径",[59,60,61,77],"table",{},[62,63,64],"thead",{},[65,66,67,71,74],"tr",{},[68,69,70],"th",{},"顺序",[68,72,73],{},"主题",[68,75,76],{},"文档",[78,79,80,92,106,120,134,148,169,183,200,217],"tbody",{},[65,81,82,86,89],{},[83,84,85],"td",{},"1",[83,87,88],{},"安装、Cargo、第一个程序",[83,90,91],{},"本文",[65,93,94,97,100],{},[83,95,96],{},"2",[83,98,99],{},"变量、标量、控制流",[83,101,102],{},[26,103,105],{"href":104},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Frust\u002Ftype","语法与类型",[65,107,108,111,114],{},[83,109,110],{},"3",[83,112,113],{},"所有权、借用、生命周期",[83,115,116],{},[26,117,119],{"href":118},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Frust\u002Fcore","核心概念",[65,121,122,125,128],{},[83,123,124],{},"4",[83,126,127],{},"结构体、枚举、集合",[83,129,130],{},[26,131,133],{"href":132},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Frust\u002Fdata-type","复合类型",[65,135,136,139,142],{},[83,137,138],{},"5",[83,140,141],{},"泛型、trait",[83,143,144],{},[26,145,147],{"href":146},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Frust\u002Ft","泛型与 Trait",[65,149,150,153,163],{},[83,151,152],{},"6",[83,154,155,159,160],{},[156,157,158],"code",{},"Result"," \u002F ",[156,161,162],{},"Option",[83,164,165],{},[26,166,168],{"href":167},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Frust\u002Ferror","错误处理",[65,170,171,174,177],{},[83,172,173],{},"7",[83,175,176],{},"模块、crate、工作空间",[83,178,179],{},[26,180,182],{"href":181},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Frust\u002Fpackage","包管理",[65,184,185,188,194],{},[83,186,187],{},"8",[83,189,190,191],{},"线程、",[156,192,193],{},"async",[83,195,196],{},[26,197,199],{"href":198},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Frust\u002Fasync","异步",[65,201,202,205,211],{},[83,203,204],{},"9",[83,206,207,208],{},"测试、",[156,209,210],{},"cargo doc",[83,212,213],{},[26,214,216],{"href":215},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Frust\u002Fdocs","测试与文档",[65,218,219,222,229],{},[83,220,221],{},"10",[83,223,224,225,228],{},"宏、",[156,226,227],{},"unsafe","、FFI",[83,230,231],{},[26,232,234],{"href":233},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Frust\u002Fother","进阶",[55,236,238],{"id":237},"_11-rust-是什么","1.1 Rust 是什么",[23,240,241],{},[34,242,243],{},"系统编程语言：性能、安全、并发",[23,245,246],{},"Rust 的设计目标非常明确：像 C 和 C++ 那样对硬件有精细的控制力，同时在语言层面消除一大类常见错误。它天生适合编写操作系统、浏览器引擎、嵌入式固件、WebAssembly 模块、CLI 工具和高性能网络服务。",[23,248,249],{},[34,250,251],{},"零成本抽象、无 GC、内存安全（通过所有权）",[23,253,254],{},"这三点是 Rust 最核心的承诺：",[256,257,258,265,271],"ul",{},[259,260,261,264],"li",{},[34,262,263],{},"零成本抽象","：高阶语法不会引入额外运行时开销。你用的迭代器、闭包在编译后通常能优化得和手写循环一样快。",[259,266,267,270],{},[34,268,269],{},"无垃圾回收（GC）","：Rust 没有全局垃圾收集器，内存管理完全在编译期确定，保证了运行时的稳定低延迟。",[259,272,273,275,276,278],{},[34,274,36],{},"：Rust 通过一套",[34,277,44],{},"概念，让编译器在编译时就能拒绝悬垂指针、二次释放、数据竞争等问题，无需垃圾回收器也不需要手动小心翼翼。",[23,280,281],{},[34,282,283],{},"应用领域",[23,285,286],{},"除了上面提到的操作系统、嵌入式、WebAssembly、CLI、网络服务，Rust 也越来越多地出现在数据分析管道、区块链、游戏引擎甚至前端工具链中。其“一旦编译通过，就能安全稳定运行”的特性，特别适合需要长期维护的基础设施项目。",[55,288,290],{"id":289},"_12-安装与配置","1.2 安装与配置",[292,293,295],"h3",{"id":294},"rustup管理工具链","rustup：管理工具链",[23,297,298,301,302,305,306,309,310,313],{},[156,299,300],{},"rustup"," 是 Rust 的官方安装器和工具链管理器。一行命令就能完成安装，并随时切换 ",[156,303,304],{},"stable","、",[156,307,308],{},"beta"," 或 ",[156,311,312],{},"nightly"," 通道。",[23,315,316],{},"在 Linux \u002F macOS 上打开终端执行：",[318,319,324],"pre",{"className":320,"code":321,"language":322,"meta":323,"style":323},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","curl --proto '=https' --tlsv1.2 -sSf https:\u002F\u002Fsh.rustup.rs | sh\n","bash","",[156,325,326],{"__ignoreMap":323},[327,328,331,335,339,343,347,350,353,356,359,363],"span",{"class":329,"line":330},"line",1,[327,332,334],{"class":333},"sbgvK","curl",[327,336,338],{"class":337},"stzsN"," --proto",[327,340,342],{"class":341},"sjJ54"," '",[327,344,346],{"class":345},"s_sjI","=https",[327,348,349],{"class":341},"'",[327,351,352],{"class":337}," --tlsv1.2",[327,354,355],{"class":337}," -sSf",[327,357,358],{"class":345}," https:\u002F\u002Fsh.rustup.rs",[327,360,362],{"class":361},"smGrS"," |",[327,364,365],{"class":333}," sh\n",[23,367,368,369,50],{},"Windows 用户可以直接下载并运行 ",[26,370,373],{"href":371,"rel":372},"https:\u002F\u002Frustup.rs\u002F",[30],"rustup-init.exe",[23,375,376,377,379],{},"安装完成后，可以通过 ",[156,378,300],{}," 查看、安装和切换工具链：",[318,381,383],{"className":320,"code":382,"language":322,"meta":323,"style":323},"rustup toolchain list          # 查看已安装的工具链\nrustup default stable          # 将 stable 设为默认\nrustup update                  # 更新工具链\n",[156,384,385,399,413],{"__ignoreMap":323},[327,386,387,389,392,395],{"class":329,"line":330},[327,388,300],{"class":333},[327,390,391],{"class":345}," toolchain",[327,393,394],{"class":345}," list",[327,396,398],{"class":397},"sutJx","          # 查看已安装的工具链\n",[327,400,402,404,407,410],{"class":329,"line":401},2,[327,403,300],{"class":333},[327,405,406],{"class":345}," default",[327,408,409],{"class":345}," stable",[327,411,412],{"class":397},"          # 将 stable 设为默认\n",[327,414,416,418,421],{"class":329,"line":415},3,[327,417,300],{"class":333},[327,419,420],{"class":345}," update",[327,422,423],{"class":397},"                  # 更新工具链\n",[292,425,427],{"id":426},"rustc-与-cargo","rustc 与 cargo",[23,429,430],{},"安装 Rust 后你会获得两个核心命令：",[256,432,433,443],{},[259,434,435,438,439,442],{},[34,436,437],{},"rustc","：Rust 编译器，可以直接把 ",[156,440,441],{},".rs"," 文件编译成可执行文件或库。",[259,444,445,448],{},[34,446,447],{},"cargo","：Rust 的包管理与构建系统，负责创建项目、下载依赖、运行测试、生成文档等。",[23,450,451,452,454,455,457],{},"日常开发中几乎总是通过 ",[156,453,447],{}," 与 Rust 交互，直接调用 ",[156,456,437],{}," 的情况很少。",[292,459,460],{"id":460},"验证安装",[318,462,464],{"className":320,"code":463,"language":322,"meta":323,"style":323},"rustc --version\ncargo --version\n",[156,465,466,473],{"__ignoreMap":323},[327,467,468,470],{"class":329,"line":330},[327,469,437],{"class":333},[327,471,472],{"class":337}," --version\n",[327,474,475,477],{"class":329,"line":401},[327,476,447],{"class":333},[327,478,472],{"class":337},[23,480,481],{},"如果两条命令都正常输出版本号，说明环境就绪。",[292,483,485],{"id":484},"编辑器-ide-推荐","编辑器 \u002F IDE 推荐",[256,487,488,494],{},[259,489,490,493],{},[34,491,492],{},"VS Code + rust-analyzer","：安装 VS Code 后，在扩展市场搜索“rust-analyzer”并安装。它提供代码补全、实时错误提示、跳转定义、悬停类型等信息，是目前最主流的 Rust 开发环境。",[259,495,496,499],{},[34,497,498],{},"IntelliJ Rust","：如果习惯 JetBrains 生态，使用 CLion 或 IntelliJ IDEA 并安装 Rust 插件，也能获得优秀的开发体验。",[55,501,503],{"id":502},"_13-第一个程序","1.3 第一个程序",[292,505,506],{"id":506},"创建项目",[318,508,510],{"className":320,"code":509,"language":322,"meta":323,"style":323},"cargo new hello_world\n",[156,511,512],{"__ignoreMap":323},[327,513,514,516,519],{"class":329,"line":330},[327,515,447],{"class":333},[327,517,518],{"class":345}," new",[327,520,521],{"class":345}," hello_world\n",[23,523,524,525,528],{},"这条命令会生成一个名为 ",[156,526,527],{},"hello_world"," 的目录，包含：",[318,530,535],{"className":531,"code":533,"language":534},[532],"language-text","hello_world\n├── Cargo.toml      # 项目清单文件\n└── src\n    └── main.rs     # 程序入口\n","text",[156,536,533],{"__ignoreMap":323},[256,538,539,551],{},[259,540,541,544,545,550],{},[34,542,543],{},"Cargo.toml","：采用 ",[26,546,549],{"href":547,"rel":548},"https:\u002F\u002Ftoml.io",[30],"TOML"," 格式，记录项目名称、版本、作者、依赖等信息。",[259,552,553,556],{},[34,554,555],{},"src\u002Fmain.rs","：默认的二进制入口文件。",[23,558,559,560,563],{},"打开 ",[156,561,562],{},"main.rs","，你会看到：",[318,565,568],{"className":566,"code":567,"language":12,"meta":323,"style":323},"language-rust shiki shiki-themes material-theme-lighter github-light github-dark","fn main() {\n    println!(\"Hello, world!\");\n}\n",[156,569,570,575,580],{"__ignoreMap":323},[327,571,572],{"class":329,"line":330},[327,573,574],{},"fn main() {\n",[327,576,577],{"class":329,"line":401},[327,578,579],{},"    println!(\"Hello, world!\");\n",[327,581,582],{"class":329,"line":415},[327,583,584],{},"}\n",[256,586,587,597],{},[259,588,589,592,593,596],{},[156,590,591],{},"fn main()"," 是 Rust 程序的入口点，每个可执行程序必须有且仅有一个 ",[156,594,595],{},"main"," 函数。",[259,598,599,602,603,606,607,610,611,613],{},[156,600,601],{},"println!"," 是一个",[34,604,605],{},"宏","（以 ",[156,608,609],{},"!"," 结尾），而非普通函数。宏能生成重复代码或实现变长参数，",[156,612,601],{}," 是使用这类宏的最常见例子。",[292,615,616],{"id":616},"编译与运行",[23,618,619],{},"在项目目录下可以使用以下命令：",[256,621,622,628,637],{},[259,623,624,627],{},[156,625,626],{},"cargo run","：编译并运行程序。如果代码未改动，下次会直接运行编译结果。",[259,629,630,633,634,50],{},[156,631,632],{},"cargo build","：仅编译（默认创建 debug 版本），生成结果位于 ",[156,635,636],{},"target\u002Fdebug\u002F",[259,638,639,642],{},[156,640,641],{},"cargo check","：快速检查代码是否可编译，但不生成最终可执行文件。适合开发过程中频繁验证语法和类型。",[23,644,645,646,649],{},"如果想编译为优化后的发布版本，可以加上 ",[156,647,648],{},"--release","：",[318,651,653],{"className":320,"code":652,"language":322,"meta":323,"style":323},"cargo build --release   # 生成到 target\u002Frelease\u002F\n",[156,654,655],{"__ignoreMap":323},[327,656,657,659,662,665],{"class":329,"line":330},[327,658,447],{"class":333},[327,660,661],{"class":345}," build",[327,663,664],{"class":337}," --release",[327,666,667],{"class":397},"   # 生成到 target\u002Frelease\u002F\n",[23,669,670],{},"release 版编译时间更长，但运行效率远高于 debug 版，适合最终分发。",[55,672,674],{"id":673},"_14-cargo-进阶","1.4 Cargo 进阶",[23,676,677],{},"日常开发不仅仅是“编译运行”，Cargo 提供了一整套从依赖管理到发布的工作流。",[292,679,681],{"id":680},"cargotoml-与-cargolock","Cargo.toml 与 Cargo.lock",[256,683,684,693],{},[259,685,686,688,689,692],{},[34,687,543],{},"：供开发者编辑的清单，声明了项目元数据和所需依赖的版本范围（例如 ",[156,690,691],{},"\"0.8\""," 表示兼容 0.8.x）。",[259,694,695,698,699,702,703,705],{},[34,696,697],{},"Cargo.lock","：由 Cargo 自动生成，精确锁定了每一次构建中每个依赖的具体版本。",[34,700,701],{},"二进制项目","建议将 ",[156,704,697],{}," 提交版本控制，以保证所有环境和 CI 的构建一致性；库项目则通常不提交，由使用方自行解析。",[292,707,708],{"id":708},"添加依赖",[23,710,711],{},"有两种方式为项目添加依赖：",[713,714,715,757],"ol",{},[259,716,717,720,721],{},[34,718,719],{},"使用 cargo add","（Rust 1.62.0 起内置）：",[318,722,724],{"className":320,"code":723,"language":322,"meta":323,"style":323},"cargo add serde           # 添加最新版 serde\ncargo add tokio --features full   # 添加时启用 features\n",[156,725,726,739],{"__ignoreMap":323},[327,727,728,730,733,736],{"class":329,"line":330},[327,729,447],{"class":333},[327,731,732],{"class":345}," add",[327,734,735],{"class":345}," serde",[327,737,738],{"class":397},"           # 添加最新版 serde\n",[327,740,741,743,745,748,751,754],{"class":329,"line":401},[327,742,447],{"class":333},[327,744,732],{"class":345},[327,746,747],{"class":345}," tokio",[327,749,750],{"class":337}," --features",[327,752,753],{"class":345}," full",[327,755,756],{"class":397},"   # 添加时启用 features\n",[259,758,759,649,762,779,782,783,785],{},[34,760,761],{},"手动编辑 Cargo.toml",[318,763,767],{"className":764,"code":765,"language":766,"meta":323,"style":323},"language-toml shiki shiki-themes material-theme-lighter github-light github-dark","[dependencies]\nserde = \"1.0\"\n","toml",[156,768,769,774],{"__ignoreMap":323},[327,770,771],{"class":329,"line":330},[327,772,773],{},"[dependencies]\n",[327,775,776],{"class":329,"line":401},[327,777,778],{},"serde = \"1.0\"\n",[780,781],"br",{},"然后运行 ",[156,784,632],{},"，Cargo 会自动下载并编译依赖。",[23,787,788,789,794],{},"包都发布在社区注册中心 ",[26,790,793],{"href":791,"rel":792},"https:\u002F\u002Fcrates.io",[30],"crates.io","，Cargo 默认从这里拉取。",[292,796,798,799,159,802],{"id":797},"构建配置profiledev-profilerelease","构建配置：",[327,800,801],{},"profile.dev",[327,803,804],{},"profile.release",[23,806,807,808,810,811,814],{},"在 ",[156,809,543],{}," 中可以通过 ",[156,812,813],{},"[profile]"," 小节覆盖默认的编译选项：",[318,816,818],{"className":764,"code":817,"language":766,"meta":323,"style":323},"[profile.dev]\nopt-level = 0   # 无优化，编译快\ndebug = true    # 包含调试信息\n\n[profile.release]\nopt-level = 3   # 最大化优化\ndebug = false   # 不包含调试信息\n",[156,819,820,825,830,835,842,848,854],{"__ignoreMap":323},[327,821,822],{"class":329,"line":330},[327,823,824],{},"[profile.dev]\n",[327,826,827],{"class":329,"line":401},[327,828,829],{},"opt-level = 0   # 无优化，编译快\n",[327,831,832],{"class":329,"line":415},[327,833,834],{},"debug = true    # 包含调试信息\n",[327,836,838],{"class":329,"line":837},4,[327,839,841],{"emptyLinePlaceholder":840},true,"\n",[327,843,845],{"class":329,"line":844},5,[327,846,847],{},"[profile.release]\n",[327,849,851],{"class":329,"line":850},6,[327,852,853],{},"opt-level = 3   # 最大化优化\n",[327,855,857],{"class":329,"line":856},7,[327,858,859],{},"debug = false   # 不包含调试信息\n",[23,861,862],{},"你还可以调整 LTO、代码展开程度、溢出检查等，以满足不同场景的需求。",[292,864,866],{"id":865},"工作空间workspace","工作空间（workspace）",[23,868,869,870,872,873,876],{},"当项目逐渐庞大，可能拆分为多个相互依赖的 crate。工作空间能让它们共享同一个 ",[156,871,697],{}," 和 ",[156,874,875],{},"target"," 目录，统一构建。",[23,878,879,880,882],{},"根目录的 ",[156,881,543],{}," 声明工作空间成员：",[318,884,886],{"className":764,"code":885,"language":766,"meta":323,"style":323},"[workspace]\nmembers = [\n    \"core\",\n    \"cli\",\n    \"web\",\n]\n",[156,887,888,893,898,903,908,913],{"__ignoreMap":323},[327,889,890],{"class":329,"line":330},[327,891,892],{},"[workspace]\n",[327,894,895],{"class":329,"line":401},[327,896,897],{},"members = [\n",[327,899,900],{"class":329,"line":415},[327,901,902],{},"    \"core\",\n",[327,904,905],{"class":329,"line":837},[327,906,907],{},"    \"cli\",\n",[327,909,910],{"class":329,"line":844},[327,911,912],{},"    \"web\",\n",[327,914,915],{"class":329,"line":850},[327,916,917],{},"]\n",[23,919,920,921,923,924,926],{},"每个子目录都是独立的 crate（有自己的 ",[156,922,543],{},"）。在根目录执行 ",[156,925,632],{}," 将一次性构建所有成员，并自动处理内部依赖。",[292,928,929],{"id":929},"常用命令速览",[256,931,932,940,952],{},[259,933,934,939],{},[34,935,936],{},[156,937,938],{},"cargo test","：运行项目中的单元测试、集成测试和文档测试。",[259,941,942,947,948,951],{},[34,943,944],{},[156,945,946],{},"cargo doc --open","：为所有依赖和本地代码生成 HTML 文档，并自动在浏览器中打开。文档注释 ",[156,949,950],{},"\u002F\u002F\u002F"," 会被编译为漂亮文档页，这是 Rust 生态的优良传统。",[259,953,954,959,960,963],{},[34,955,956],{},[156,957,958],{},"cargo publish","：将 crate 发布到 crates.io。发布前需要先登录、确保清单信息完整。发布后，社区即可通过 ",[156,961,962],{},"cargo add"," 使用你的代码。",[23,965,966,967,305,970,50],{},"继续学习：",[26,968,969],{"href":104},"类型",[26,971,147],{"href":146},[55,973,974],{"id":974},"参考文献",[23,976,977],{},"以下链接在编写时均可正常访问：",[59,979,980,990],{},[62,981,982],{},[65,983,984,987],{},[68,985,986],{},"资料",[68,988,989],{},"说明",[78,991,992,1004,1014],{},[65,993,994,1001],{},[83,995,996],{},[26,997,1000],{"href":998,"rel":999},"https:\u002F\u002Fdoc.rust-lang.org\u002Fbook\u002F",[30],"Rust 程序设计语言",[83,1002,1003],{},"官方书",[65,1005,1006,1011],{},[83,1007,1008],{},[26,1009,300],{"href":371,"rel":1010},[30],[83,1012,1013],{},"工具链安装",[65,1015,1016,1023],{},[83,1017,1018],{},[26,1019,1022],{"href":1020,"rel":1021},"https:\u002F\u002Fdoc.rust-lang.org\u002Fcargo\u002F",[30],"Cargo 手册",[83,1024,182],{},[1026,1027,1028],"style",{},"html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}",{"title":323,"searchDepth":401,"depth":401,"links":1030},[1031,1032,1033,1039,1043,1051],{"id":57,"depth":401,"text":57},{"id":237,"depth":401,"text":238},{"id":289,"depth":401,"text":290,"children":1034},[1035,1036,1037,1038],{"id":294,"depth":415,"text":295},{"id":426,"depth":415,"text":427},{"id":460,"depth":415,"text":460},{"id":484,"depth":415,"text":485},{"id":502,"depth":401,"text":503,"children":1040},[1041,1042],{"id":506,"depth":415,"text":506},{"id":616,"depth":415,"text":616},{"id":673,"depth":401,"text":674,"children":1044},[1045,1046,1047,1049,1050],{"id":680,"depth":415,"text":681},{"id":708,"depth":415,"text":708},{"id":797,"depth":415,"text":1048},"构建配置：profile.dev \u002F profile.release",{"id":865,"depth":415,"text":866},{"id":929,"depth":415,"text":929},{"id":974,"depth":401,"text":974},{"title":8,"description":9},"knowledge\u002Fbooklet\u002Fend\u002FRust\u002Fbase","knowledge\u002Fknowledge\u002Fbooklet\u002Fend\u002FRust\u002Fbase.md","md",{"items":1057},[1058,1061,1063,1066,1069,1072],{"path":215,"title":1059,"description":1060,"category":10,"score":850},"第八章：测试、文档与质量","Rust 将测试和文档视为语言的一等公民。通过内置的测试框架，你可以在项目里编写单元测试、集成测试以及随文档一起运行的示例测试，三者共用 cargo test 命令。配合 cargo doc 生成文档，形成了一套确保代码质量与可维护性…",{"path":146,"title":147,"description":1062,"category":10,"score":850},"泛型和 trait 是 Rust 实现代码复用与多态的两大支柱。前置：Rust 基础。泛型让代码可以工作在多种类型上而不牺牲性能，trait 定义了类型间的共享行为，二者结合形成了零成本抽象的强大表达能力。本章将深入泛型定义、trai…",{"path":104,"title":1064,"description":1065,"category":10,"score":850},"第二章：基础语法与类型","Rust 的类型系统和语法设计处处体现着“安全”与“显式”的理念。这一章你将掌握变量绑定、基本类型、复合类型、函数定义以及所有基础控制流结构，它们是你写出任何 Rust 程序的基石。",{"path":181,"title":1067,"description":1068,"category":10,"score":850},"第七章：模块系统与包管理","Rust 的模块系统为代码组织、封装和复用提供了一套严谨但灵活的机制。包、crate、模块以及 use 路径相互配合，让你能够把项目拆解成清晰的功能单元，同时精确控制哪些对外可见。本章将带你系统掌握这些构建大型 Rust 项目所必需的…",{"path":233,"title":1070,"description":1071,"category":10,"score":850},"第十章：进阶特性与模式","Rust 的核心安全保证覆盖了绝大多数日常编程场景。但当你需要打破常规——无论是编写极致通用的抽象、与 C 库交互，还是内联优化——本章将带你进入 Rust 的深层能力：声明宏与过程宏、unsafe 的超能力与封装、高级类型系统技巧…",{"path":167,"title":1073,"description":1074,"category":10,"score":850},"第五章：错误处理","Rust 将错误明确分为两类：不可恢复的错误与可恢复的错误。通过 panic! 处理前一种，Result 处理后一种，这让程序的错误路径不再是隐式的控制流，而是强类型、必须处理的代码分支。配合 Option 对缺失值的处理以及丰富的组…",{"series":1076,"title":12,"items":1077,"index":330,"prev":1100,"next":1101},"booklet\u002Fend\u002Frust",[1078,1081,1082,1085,1088,1090,1092,1094,1096,1098],{"path":198,"title":1079,"date":1080,"pinned":14},"第九章：并发与异步","2020-05-22",{"path":7,"title":8,"date":13,"pinned":14},{"path":118,"title":1083,"date":1084,"pinned":14},"第三章：所有权、借用与生命周期（核心）","2023-05-09",{"path":132,"title":1086,"date":1087,"pinned":14},"第四章：复合数据类型","2021-02-24",{"path":215,"title":1059,"date":1089,"pinned":14},"2026-01-11",{"path":167,"title":1073,"date":1091,"pinned":14},"2023-11-03",{"path":233,"title":1070,"date":1093,"pinned":14},"2023-12-29",{"path":181,"title":1067,"date":1095,"pinned":14},"2024-05-26",{"path":146,"title":147,"date":1097,"pinned":14},"2024-10-31",{"path":104,"title":1064,"date":1099,"pinned":14},"2024-08-31",{"path":198,"title":1079,"date":1080,"pinned":14},{"path":118,"title":1083,"date":1084,"pinned":14}]