1.rust里绑定变量是let,默认绑定了的变量是不可更改的,所以如果想让变量可变就要加上mut。
let x = 1; let mut y = 2;
2.match 相当于erlang中的case,但是case的每一项后都是分号,但是rust的match却是逗号。
3.match 的每一项最后都要加逗号,但是最后一项不加也不会报错,所有结尾加逗号的用法都是类似。
4.每个语句结尾都要加分号,但是当函数指定了返回值之后,这个函数的最后一个表达式不能加分号,负责会报错。
5.rust中除了两种声明之外其他的都是表达式。第一种声明是绑定声明:let x = 1;它不是表达式,所以没有返回值,所以不能这么写let x = (let y = 1); ,如果对一个已经绑定了德变量赋值,那么这个赋值的语句就是一个表达式,而不是声明,而所有赋值表达式的值都是空元祖 () = (y = 5);
另一种声明就是表达式声明,凡是以分号结尾的表达式都是表达式声明,所以几乎所有的函数内部的语句都是表达式声明,除了下面这种情况:
fn add_one(x: i32) -> i32 { x + 1 }
函数要求德返回值类型是i32,但是如果在x+1后加分号,那么就是个表达式声明,所有的表达式声明的值都是空元祖,所以返回值就是空元祖,所以与返回值类型不一致,所以报错。
6.数字类型里的isize和usize,指的是有符号整数和无符号整数。
7.let绑定时,就会对绑定的变量进行类型指定,即便是mut绑定,再次重新绑定的时候,类型也必须是第一次绑定的类型。
let mut x = (1, 2); // x: (i32, i32) let y = (2, 3); // y: (i32, i32) x = y; //正确 let z = (2, "3"); x = z; //错误,因为x的类型是(i32, i32) z的类型是 (i32, &str)
8.单个元素的元组是这样写:(0,) 而不是(0).
9.rust的基本类型只有: bool, arry, numeric, slice, str, tuple, function,7种
10.函数指针 :
fn foo(x: i32) -> i32 { x } let x: fn(i32) -> i32 = foo;
11. 0..10指的是从0到9,不包括10.
12. 对于绑定
let b = a;
来说rust有两中方式,一种是move一种是copy,当一个绑定a是指针时,为了保证消除数据竞争,同一个内存实例只能同时有一个指针指向它,原有的指针a会被销毁,新的指针会b代替原指针指向内存实例。这就是move操作。当a本身就是内存实例的时候(例如 let a= 1;),再次绑定一个变量b到a的时候,b会新创建一个内存实例,这时,a和b分别是两个内存实例,这个操作就是copy。到底是执行move还是copy取决于原有绑定的类型。
13. 关于引用:
引用有两种一种是&T一种是&mut T,两种引用在同一个作用域中不能同时存在,在同一个作用域中只能存在下列情况中的一种:
1) 0个或者多个&T
2) 0个或者1个&mut T
一个引用的生命周期和被引用的变量一样,所以如果变量提前结束生命周期,那么引用也是无效的了。如果引用定义在了变量之前,也会出现这种问题,因为有效的引用必须是指向一个内存地址的:
let y: &i32; let x = 5; y = &x; println!("{}", y);
14.不同的字符串在程序中只有一份,“a”这个字符串只在heap中存一份。
相关推荐
Rust 学习笔记.zip,关于锈语的注记
资源Rust学习笔记_78实用知识库分享知识分享
这份学习笔记是在学习Rust的过程中的记录,主要基于《Rust程序设计语言-简体中文版》和《RustPrimer》两份开源书籍。 上面两本书籍相对全面但对部分初学者可能更为深奥一些,尤其是之前没有接触过C/C++ 和Rust语言...
Rust学习笔记内容介绍Rust 是一种安全、并发、实用的编程语言,有着惊人的运行速度,能够防止段错误,并保证线程安全, 能够构建可靠高效的软件。访问方式这是个人学习Rust的笔记,请点击下面的链接阅读::hugo格式,...
Rust新手学习笔记,主要记录一些常见的编程例子和Rust库的基本使用
声明的:其中变量类型如 i32 一般都是可以省略的,因为Rust使用了类型推断Rust还通过模式匹配 (pattern matching) 对变量进行解构,这允
笔记文摘 用 markdown 书写的笔记(部分来源于互联网),共享出来给大家!...Rust 学习笔记及示例代码: Learning Rust 。 Bash 相关: 本人翻译的 Bash 中文指南 ,不错的 linux bash 命令入门材料。 Vue 相关: Vu
Rust 学习笔记及示例代码: 。 Bash 相关: 本人翻译的 ,不错的 linux bash 命令入门材料。 Vue 相关: Vue.js 学习示例及笔记: 。 JAVA 相关: 学习 Java 示例及笔记: Simple restful API service Demo: ...
Rust实战课程笔记课程链接: 我的Rust学习经历:Rust入门资料Rust入门书目录08 | 语法面面观:面向表达式(下) 09 | 语法面面观:数据类型 (上)10 | 语法面面观:数据类型 (下)11 | 语法面面观:函数与闭包(上)...
我的锈路这里是我学习Rust后的一些留存Rust学习笔记 :ledger:Git学习笔记 :ledger:Rust中的清单过多 :ledger:设计模式自制搜索引擎 :magnifying_glass_tilted_left:Rust刷算法题(翻译)rust设计模式
RClicker是我为了学习更多关于 Rust 编程语言而编写的。如果您愿意,您可以打开PR以添加更多支持和/或清理代码。特征这个自动点击器目前非常准系统,它目前包括:最大/最小 CPS(向上/向下箭头更改)切换自动点击器...
linfa旨在提供一个全面的工具包来使用 Rust 构建机器学习应用程序。在精神上与 Python 的scikit-learn相似,它专注于日常 ML 任务的常见预处理任务和经典 ML 算法。文档:最新的社区聊天:Zulip当前状态linfa现在站...
介绍了Rust编程语言的流行库与框架,包括标准库、Cargo、Serde、Tokio、Tide、Diesel、Actix-Web等。这些工具和框架涵盖了从基本数据类型和集合到网络编程、异步处理、数据库访问等各个方面。文章通过实际应用场景和...
锈迹 目录
Marko Editor是一个简单的WYSIWYG编辑器,用于用Rust和GTK 4编写笔记。...背景Marko Editor是一个学习项目,由我的个人笔记需求驱动。 来自C ++和Qt背景,这是我第一次更深入地研究Rust和GTK。 所以你应该期待一些缺点
这是我尝试整理在试图弄清楚Rust /嵌入式时所做的笔记的尝试。 CI用于帮助跟踪工作正常与否。 此处的示例和注释可能对他人有用。 Web上有很多令人困惑的过时信息,因此我希望,当此项目变旧或崩溃时,CI链接将警告...
这个想法来自我目前学习的课程(PHYS 498 计算物理学),我们在脚本语言中实现了 Quantum Shor 算法(教授使用 python,而我使用 typescript)。一般的逻辑已经在 typescript 和(Zhaiyuqing2003/Quantum_Shor_...
Rust语言学习笔记 摘录片段: Rust代码非常接近自然语言。 5.times(|| println!("Hello Rust")); 2.days().from_now(); Rust一切皆表达式。 闭包 闭包语法:由管道符和花括号组合而成。管道符里是闭包函数的参数,花...
出色的锈蚀机器学习 很棒的Rust Machine Learning板条箱列表,其编写目的是从Python迁移。 这是一个列表,其中主要项目位于顶部。 总目录 起落架 Jupyter笔记本 -Rust的评估环境。 生锈的Jupyter扩展。 阴谋 -...
学习资源 笔记注意:OpenCL 1.0 不是线程安全的。 我们不会支持它。 注意:调查有关 OpenCL 的num crate 的数量和安全性的 OpenCL 限制。 注意:实施采样器。 注意:为(clCreateUserEvent,clSetUserEventStatus)...