rust for begginers
Rust 初学者指南从安装到核心概念帮你快速上手。一、安装 Rustbash# 官方推荐方式使用 rustup curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh # 验证安装 rustc --version cargo --version二、第一个程序rust// main.rs fn main() { println!(Hello, Rust!); }bash# 编译运行 rustc main.rs ./main # 或用 Cargo推荐 cargo new hello cd hello cargo run三、核心概念Rust 的灵魂1. 变量与可变性rustlet x 5; // 不可变默认 let mut y 10; // 可变 y 20; const MAX: u32 100; // 常量必须标注类型 let z 5 3; // 可以覆盖shadowing let z hello; // 甚至可以改变类型2. 所有权Ownership—— Rust 最核心的机制三条规则每个值都有一个所有者同一时间只能有一个所有者所有者离开作用域值被自动释放rustfn main() { let s1 String::from(hello); // s1 拥有这个字符串 let s2 s1; // 所有权转移给 s2move // println!({}, s1); // ❌ 错误s1 不再有效 let x 5; let y x; // ✅ 可以因为 i32 实现了 Copy trait println!(x {}, y {}, x, y); }3. 借用Borrowing不想转移所有权用引用rustfn main() { let s String::from(hello); let len calculate_length(s); // 不可变借用 println!({} 长度是 {}, s, len); // ✅ s 还能用 change(mut s); // 可变借用 } fn calculate_length(s: String) - usize { s.len() // 不获取所有权只是借用 } fn change(s: mut String) { s.push_str(, world); }借用规则要么一个可变引用要么多个不可变引用引用必须始终有效编译器检查防止悬空指针4. 切片Slicerustlet s String::from(hello world); let hello s[0..5]; // 字符串切片 let world s[6..11]; let arr [1, 2, 3, 4, 5]; let slice arr[1..3]; // [2, 3]四、控制流rustlet number 6; if number % 4 0 { println!(能被4整除); } else if number % 3 0 { println!(能被3整除); } else { println!(都不行); } // if 是表达式可以返回值 let condition true; let x if condition { 5 } else { 6 }; // 循环 loop { // 无限循环 break; } while condition { // while 循环 } for i in 1..4 { // 1, 2, 3推荐 println!({}, i); } let arr [10, 20, 30]; for element in arr.iter() { println!(值: {}, element); }五、函数rustfn main() { let result add(5, 3); println!(结果: {}, result); } // 参数类型必须标注返回类型用 - fn add(a: i32, b: i32) - i32 { a b // 表达式无分号就是返回值 }六、结构体与枚举rust// 结构体 struct User { username: String, email: String, sign_in_count: u64, active: bool, } let user1 User { email: String::from(ab.com), username: String::from(alice), active: true, sign_in_count: 1, }; // 元组结构体 struct Point(i32, i32, i32); // 枚举非常强大 enum Message { Quit, Move { x: i32, y: i32 }, Write(String), ChangeColor(i32, i32, i32), } // OptionRust 没有 null let some_number Some(5); let absent_number: Optioni32 None; // Result错误处理 enum ResultT, E { Ok(T), Err(E), }七、模式匹配matchrustenum Coin { Penny, Nickel, Dime, Quarter, } fn value_in_cents(coin: Coin) - u8 { match coin { Coin::Penny { println!(Lucky penny!); 1 } Coin::Nickel 5, Coin::Dime 10, Coin::Quarter 25, } } // if let 简化版 let some_value Some(3); if let Some(3) some_value { println!(三); }八、错误处理rustuse std::fs::File; // Result 类型 let f File::open(hello.txt); match f { Ok(file) file, Err(error) panic!(打开文件失败: {:?}, error), } // 简写? 运算符 fn read_username_from_file() - ResultString, io::Error { let mut f File::open(hello.txt)?; // 失败时直接返回 Err let mut s String::new(); f.read_to_string(mut s)?; Ok(s) } // 更简 fn read_username_from_file() - ResultString, io::Error { fs::read_to_string(hello.txt) } // unwrap() / expect() —— 快速但不安全 let f File::open(hello.txt).unwrap(); let f File::open(hello.txt).expect(无法打开文件);九、集合类型rust// Vector let mut v vec![1, 2, 3]; v.push(4); let third v[2]; // 可能 panic let third v.get(2); // 返回 OptionT // String let mut s String::from(foo); s.push_str(bar); let s2 format!({}-{}, s, baz); // HashMap use std::collections::HashMap; let mut scores HashMap::new(); scores.insert(Blue, 10); scores.entry(Yellow).or_insert(50); // 不存在才插入十、生命周期Lifetimesrust// 告诉编译器返回的引用和参数活得一样久 fn longesta(x: a str, y: a str) - a str { if x.len() y.len() { x } else { y } } // 结构体中的生命周期 struct ImportantExcerpta { part: a str, }十一、常用 Cargo 命令bashcargo new project_name # 创建新项目 cargo build # 编译 cargo build --release # 优化编译生产环境 cargo run # 编译并运行 cargo check # 快速检查不生成可执行文件 cargo test # 运行测试 cargo doc --open # 生成并打开文档 cargo add crate_name # 添加依赖十二、学习路线图plain第1周变量、类型、函数、控制流 第2周所有权、借用、切片重点 第3周结构体、枚举、模式匹配 第4周集合类型、错误处理 第5周生命周期、trait、泛型 第6周闭包、迭代器、智能指针 第7周并发编程 fearless concurrency 第8周unsafe Rust、FFI推荐资源表格资源说明The Rust Book官方教程最权威Rustlings小练习边做边学Rust by Example示例驱动Exercism Rust编程练习Rust 的编译器很严格但报错信息非常友好。拥抱编译器错误它们是在帮你避免运行时 bug

相关新闻

快鲸_【v2.1.0】_云商店-智慧园区云平台是什么?

快鲸_【v2.1.0】_云商店-智慧园区云平台是什么?

一、品牌定位:快鲸在智慧园区中的定位与受众快鲸定位为面向园区管理方、运维团队与入驻企业的轻量化一体化智能运营中枢。产品定位清晰:为产业园区、工业园区、科技园区与物流园区提供可快速执行的管理平台。功能点与卖点体现在四大方向:安全…

2026/8/14 4:00:59 阅读更多 →
从Claude Code源码泄漏看AI Agent架构:TypeScript工程化实践与安全设计

从Claude Code源码泄漏看AI Agent架构:TypeScript工程化实践与安全设计

1. 项目概述:从一次“意外”的源码泄漏说起最近,AI圈子里发生了一件不大不小但足够引人深思的事:Anthropic公司内部一个名为“Claude Code”的AI Agent项目源码,在GitHub上被意外公开了。虽然很快被删除,但互联网是有记…

2026/8/14 4:00:59 阅读更多 →
工业自动化流程设计新范式:从被动执行到主动进攻的智能控制

工业自动化流程设计新范式:从被动执行到主动进攻的智能控制

1. 项目概述:从“进攻”视角重构设备动作流程在工业自动化、机器人控制乃至智能家居领域,我们常常听到“流程”、“时序”、“控制逻辑”这些词。大多数文档和教程都习惯于从“设计者”或“维护者”的视角,平铺直叙地描述设备应该先做什么、再…

2026/8/14 3:59:59 阅读更多 →

最新新闻

企业数字化转型指南:几十到几百人规模如何适配钉钉,找到最适合的办公系统

企业数字化转型指南:几十到几百人规模如何适配钉钉,找到最适合的办公系统

引言:为什么企业需要合适的办公系统? 在当今数字化时代,无论是几十人的初创团队还是几百人的成长型企业,都面临着同样的挑战:如何高效协同、规范管理、提升生产力。一个合适的办公系统不仅能解决日常沟通问题&#xff…

2026/8/14 5:00:32 阅读更多 →
网易《我的世界》自定义皮肤上传教程:从图片准备到游戏生效全流程

网易《我的世界》自定义皮肤上传教程:从图片准备到游戏生效全流程

这次我们来看一个关于网易皮肤上传的教程项目。这个项目来自 ETHAN 工作室,主要解决的是玩家如何将自己设计或拥有的皮肤文件,上传到网易相关平台(如《我的世界》中国版)进行使用的需求。对于喜欢自定义角色外观的玩家来说&#x…

2026/8/14 5:00:32 阅读更多 →
Vue项目打包上线全攻略:从构建优化到Nginx部署避坑指南

Vue项目打包上线全攻略:从构建优化到Nginx部署避坑指南

1. 项目概述:从开发到上线的最后一公里做前端开发的朋友,尤其是用Vue的,肯定都经历过这个阶段:本地开发一切顺利,页面丝滑流畅,功能完美无缺,但一到要打包上线,各种问题就冒出来了。…

2026/8/14 5:00:32 阅读更多 →
基于LLM与向量数据库构建自动化个人知识库系统

基于LLM与向量数据库构建自动化个人知识库系统

1. 项目概述:从信息焦虑到知识内化你有没有过这样的体验?在浏览网页、阅读文章时,看到一段精彩的论述、一个实用的代码片段或一个颠覆认知的观点,下意识地点击了收藏按钮。然后呢?然后它们就永远沉睡在了浏览器的收藏夹…

2026/8/14 5:00:32 阅读更多 →
从网文标题到内容工程学:解构高概念故事的角色动力学模型

从网文标题到内容工程学:解构高概念故事的角色动力学模型

你点开一篇小说,标题是《天杀的,请给这个沈孝下载反诈app!恋爱脑上头什么小三面首驸马也不管了,就要和公主在一起!冰山男就该和小太阳搭配,这都是祖上传下来的规矩!!》。你大概率会心…

2026/8/14 5:00:32 阅读更多 →
做网站不找正规公司?鲁斌 42450745 网站建设揭秘中小企业转型的残酷真相

做网站不找正规公司?鲁斌 42450745 网站建设揭秘中小企业转型的残酷真相

今天咱们不聊那些虚头巴脑的宏大叙事,就聊点实在的。聊点咱们中小企业主、创业者,还有那些打算把自己那点宝贝业务搬上网的朋友,真正关心、却又往往被忽悠得晕头转向的问题。你知道现在市面上做网站的多如牛毛,报价从几百块到几万块不等,为什么?因为信息差,因为人性里的…

2026/8/14 4:59:32 阅读更多 →

日新闻

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

在这个流量为王、视觉至上的互联网时代,对于临沂乃至整个山东乃至全国的传统中小企业来说,拥有一张精美的“数字名片”早已不再是可选项,而是生存的必答题。每当夜幕降临,沂河两岸灯火辉煌,物流之都的喧嚣逐渐沉淀为对未来的思考。我们常常听到老板们在茶余饭后探讨:为什…

2026/8/14 0:00:26 阅读更多 →
Flutter与OpenHarmony实现剧本杀组队表单开发实战

Flutter与OpenHarmony实现剧本杀组队表单开发实战

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

2026/8/14 0:00:26 阅读更多 →
大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

在这个数字化浪潮席卷全球的今天,企业想要在激烈的市场竞争中站稳脚跟,拥有一张好看的“数字名片”已经远远不够了。很多老板在刚开始接触互联网业务时,都有一个共同的困惑:为什么我花了钱建的网站,就像是在真空中自嗨?访客进来转了两圈就跑了,线索石沉大海,甚至连客服…

2026/8/14 0:01:27 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/13 10:41:50 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/13 10:41:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/13 10:41:49 阅读更多 →