Rust语言基础入门学习记录
听说微软有开发者开始从事C#转Rust语言想简单学习下非GC的软件开发做到能看得懂代码。这篇也是跟随微软的文档做的个人理解和记录Git链接https://github.com/microsoft/RustTraining该仓库包含多本“桥梁书”涉及C#、Python、C等转Rust的一些文档资料另有独立的在线指南由微软官方维护C#/.NET 开发者编写的 Rust 指南https://microsoft.github.io/rust-for-dotnet-devs/latest/Rust入门指南该中文版由Rust中文项目组维护持续跟随官方版本更新简体中文版https://rustwiki.org/zh-CN/book/有这几个文档入手的话应该够了这里记录的是看这几个文档中的一些思考记录。1.安装环境环境的安装windows需要访问 安装 Rust - Rust 程序设计语言 页面并按照说明安装 Rust安装完成后在命令行输入rustc --version将能够看到版本信息2.Rust 文件通常以.rs扩展名结尾联系C#是.cs结尾java就是.java结尾Python是.py结尾3.基础数据类型相差不大整型多个128位的Int128和UInt128。注意Rust中一个字符是4字节Unicode不再是两个字节UTF-16 encoding新的语言为了适应更多场景扩大了字节。4.Rust去掉了类的概念保留了结构体struct不必太在意继承和多态通过traits类似于接口实现因此没有等价于protected关键字5.Rust标准也注重简写其本身的关键字也是简写public被简写成了pubfunction简写为fn接口实现为impl6.Cargo 是 Rust 的构建系统和包管理器前面安装时会附带安上其作用类似maven之于springboot、npm之于node.js、pip之于python7. Rust 中变量默认是不可变的。一旦一个值绑定到一个名称 变量的值不能更改。变量可以通过以下方式使变量变动在变量名前添加 mut表示该变量定义的可变型变量let mut x 5; x 6;8.作为新语言融合了各种语法糖。为了降低歧义保留了分号作为一行代码的结束符没有像python、typescript那样。申明变量用let类比C#中var。9.代码中::不是继承因为没有继承用于关联函数和模块创建的命名空间我的理解其含义类似“来源于”也可用作大的库引用。10.所有权机制使 Rust 无需垃圾回收器也能提供内存安全保证。无需像C#和Java需要GCC需要亲自分配和释放内存。入栈比在堆上分配内存要快因为其位置总是在栈顶而堆上分配内存分配器必须首先找到一块足够存放。当代码调用一个函数时传递给函数的值和函数的局部变量被压入栈中当函数结束时这些值被移出栈。11.所有权规则Rust 中的每一个值都有一个 所有者owner值在任一时刻有且只有一个所有者当所有者离开作用域这个值将被丢弃。12.以下类型可以实现所有权的copy(我的理解就是值类型)所有整数类型比如u32。布尔类型bool它的值是true和false。所有浮点数类型比如f64。字符类型char。元组当且仅当其包含的类型也都实现Copy的时候。比如(i32, i32)实现了Copy但(i32, String)就没有。这个代码很有说明性fn main() { let s String::from(hello); // s 进入作用域 takes_ownership(s); // s 的值移动到函数里 ... // ... 所以到这里不再有效 let x 5; // x 进入作用域 makes_copy(x); // x 应该移动函数里 // 但 i32 是 Copy 的 println!({}, x); // 所以在后面可继续使用 x }13.Rust 并不允许直接println打印结构体这跟java、C#一致因为不确定显示的具体格式、内容等这点上区别于TypeScript14.相比其他语言枚举支持更多类型结构体和枚举还有另一个相似点就像可以使用impl来为结构体定义方法那样也可以在枚举上定义方法。15.Rust 并没有空值不过它确实拥有一个可以编码存在或不存在概念的枚举。这个枚举是OptionT而且它定义于标准库中如下enum OptionT { None, Some(T), }为了拥有一个可能为空的值你必须要显式的将其放入对应类型的OptionT中。接着当使用这个值时必须明确的处理值为空的情况。只要一个值不是OptionT类型你就可以安全的认定它的值不为空。这是 Rust 的一个经过深思熟虑的设计决策来限制空值的泛滥以增加 Rust 代码的安全性。16.match相比大部分语言的switch虽然都用于控制流结构match的力量来源于模式的表现力以及编译器能够确认所有可能情况均已被覆盖。对于if表达式必须返回一个布尔值而这里它可以是任何类型的。其中的other相当于其他语言的default只是other必须位于match中最末。17.Rust遍历集合更想让你知道这个地址的迭代遍历而不是值得循环例如下方遍历加了let v vec![100, 32, 57]; for i in v { println!({i}); }而要对此值进行赋值处理要采用解引用符号也就是必须先使用解引用运算符*取到i指向的值也含有此思想内核let mut v vec![100, 32, 57]; for i in mut v { *i 50; }18.在很多语言中通过索引来引用字符串中的单独字符是有效且常见的操作。然而在 Rust 中如果你尝试使用索引语法访问String的一部分会出现一个错误如下代码会报错let s1 String::from(hi); let h s1[0];19.Rust中遍历哈希 map 会以任意顺序进行Hash map 提供了一个特殊的 API叫做entry它接收你想检查的键作为参数。let mut scores HashMap::new(); scores.insert(String::from(Blue), 10); scores.entry(String::from(Blue)).or_insert(50);Entry上的or_insert方法被定义为如果对应Entry的键已经存在就返回该值的可变引用如果不存在就把参数作为这个键的新值插入并返回这个新值的可变引用。20.Rust使用ResultT, E类型来处理可恢复错误使用panic!宏在程序遇到不可恢复错误时停止执行。大多数语言并不区分可恢复的recoverable和不可恢复的unrecoverable错误而是使用诸如异常exception之类的机制以相同方式处理它们。21.特殊的生命周期值得讨论static其生命周期能够存活于整个程序期间。

相关新闻

Java工程师AI进阶实战:学习路线·项目实践·资源大全

Java工程师AI进阶实战:学习路线·项目实践·资源大全

Java工程师AI进阶实战:学习路线项目实践资源大全前言 作为一名Java工程师,面对AI大模型和智能体技术的浪潮,你不需要从零研究算法,也不需要转型为Python开发者。你的核心优势在于工程化能力——分布式系统、高并发处理、微服务治理…

2026/7/14 6:39:06阅读更多 →
电气隔离技术:TLP241A光耦与PIC18F46K80的工业应用

电气隔离技术:TLP241A光耦与PIC18F46K80的工业应用

1. 电气隔离系统设计背景与核心价值在工业自动化、电力电子和医疗设备等领域,电气隔离技术就像电路系统中的"防火墙",它能有效阻断危险电压、地线环路和电磁干扰对控制系统的破坏。我十年前第一次接触变频器维修时,就曾因忽视隔离设…

2026/7/14 6:39:06阅读更多 →
BepInEx框架深度解析:从Unity游戏模组原理到HarmonyX插件开发实战

BepInEx框架深度解析:从Unity游戏模组原理到HarmonyX插件开发实战

1. 项目概述:为什么BepInEx是Unity游戏修改的“瑞士军刀”?如果你玩过一些基于Unity引擎的PC游戏,比如《雨中冒险2》、《英灵神殿》或者《星露谷物语》的某些大型模组,那你很可能已经间接接触过BepInEx了。它不是一个直接面向玩家…

2026/7/14 6:39:06阅读更多 →
Python财经数据分析终极指南:如何用AKShare快速获取股票、基金、期货数据

Python财经数据分析终极指南:如何用AKShare快速获取股票、基金、期货数据

Python财经数据分析终极指南:如何用AKShare快速获取股票、基金、期货数据 【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcode.com…

2026/7/14 14:00:09阅读更多 →
从工具到伙伴:AI加持下HarmonyOS SDK窗口能力的体验升维之路

从工具到伙伴:AI加持下HarmonyOS SDK窗口能力的体验升维之路

在移动应用生态日益碎片化的当下,用户对“无缝、智能、高效”的交互体验需求持续攀升,而设备形态的多元化——从直板手机到折叠屏、从平板到PC,虽为用户带来了更多选择,却让开发者陷入了适配困境:如何在不同尺寸、不同…

2026/7/14 14:00:09阅读更多 →
5分钟掌握FigmaCN:让Figma中文界面变得简单高效的终极指南

5分钟掌握FigmaCN:让Figma中文界面变得简单高效的终极指南

5分钟掌握FigmaCN:让Figma中文界面变得简单高效的终极指南 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面感到困扰吗?面对密密麻麻的英文…

2026/7/14 14:00:09阅读更多 →
ModTheSpire终极指南:3步让《杀戮尖塔》模组加载变得如此简单

ModTheSpire终极指南:3步让《杀戮尖塔》模组加载变得如此简单

ModTheSpire终极指南:3步让《杀戮尖塔》模组加载变得如此简单 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire 你是否厌倦了《杀戮尖塔》原版游戏的限制?想要体验…

2026/7/14 14:00:09阅读更多 →
League Akari深度解析:3大核心技术架构与本地化智能工具实战指南

League Akari深度解析:3大核心技术架构与本地化智能工具实战指南

League Akari深度解析:3大核心技术架构与本地化智能工具实战指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一…

2026/7/14 14:00:09阅读更多 →
终极iOS激活锁绕过指南:5分钟解锁iPhone 6s-X的完整方案

终极iOS激活锁绕过指南:5分钟解锁iPhone 6s-X的完整方案

终极iOS激活锁绕过指南:5分钟解锁iPhone 6s-X的完整方案 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n applera1n是一款专为iOS 15-16系统设计的免费激活锁绕过工具,专门针对A…

2026/7/14 13:55:08阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/14 4:56:14阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/14 2:55:05阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/14 6:17:41阅读更多 →
【Cursor数据库安全红线】:自动执行SQL前必须校验的6项权限策略,金融级项目已强制落地

【Cursor数据库安全红线】:自动执行SQL前必须校验的6项权限策略,金融级项目已强制落地

更多请点击: https://intelliparadigm.com 第一章:Cursor数据库安全红线概览 Cursor 作为一款基于 AI 的智能编程助手,其本地数据库(SQLite 存储)承载着用户代码片段、会话历史、自定义规则及敏感上下文信息。理解其安…

2026/7/14 0:03:18阅读更多 →
【Notion AI写作避坑白皮书】:基于127份真实用户失败案例,总结6大致命误用陷阱

【Notion AI写作避坑白皮书】:基于127份真实用户失败案例,总结6大致命误用陷阱

更多请点击: https://codechina.net 第一章:Notion AI写作辅助的底层能力边界认知 Notion AI 并非通用大语言模型的直接封装,而是基于 Llama 系列与自研微调模型构建的轻量化推理服务,其输入上下文窗口严格限制在 8192 token&…

2026/7/14 0:03:18阅读更多 →
AI Agent数据越界行为如何被精准溯源?——基于GDPR/CCPA双合规的5层审计框架实战指南

AI Agent数据越界行为如何被精准溯源?——基于GDPR/CCPA双合规的5层审计框架实战指南

更多请点击: https://kaifayun.com 第一章:AI Agent数据越界行为的合规性挑战与溯源必要性 AI Agent在自主执行任务过程中,可能因提示注入、上下文污染或权限配置缺陷,无意或有意访问、缓存、传输受保护数据(如PII、G…

2026/7/14 0:03:18阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/13 4:21:17阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/14 4:45:36阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/14 2:42:17阅读更多 →