Rust注释
Rust 注释Rust 中的注释方式与其它语言(C、Java)一样,支持两种注释方式:实例// 这是第一种注释方式 /* 这是第二种注释方式 */ /* * 多行注释 * 多行注释 * 多行注释 */ 用于说明文档的注释在 Rust 中使用 // 可以使其之后到第一个换行符的内容变成注释。在这种规则下,三个正斜杠 /// 依然是合法的注释开始。所以 Rust 可以用 /// 作为说明文档注释的开头:实例/// Adds one to the number given.////// # Examples////// /// let x = add(1, 2); /// /// fn add(a: i32, b: i32) -> i32 { return a +...
Rust泛型与特性
Rust 泛型与特性泛型是一个编程语言不可或缺的机制。C++ 语言中用”模板”来实现泛型,而 C 语言中没有泛型的机制,这也导致 C...
Rust枚举类
Rust 枚举类枚举类在 Rust 中并不像其他编程语言中的概念那样简单,但依然可以十分简单的使用:实例#[derive(Debug)] enum Book { Papery, Electronic} fn main() { let book = Book::Papery; println!(“{:?}”, book);} 运行结果:Papery书分为纸质书(Papery book)和电子书(Electronic book)。如果你现在正在开发一个图书管理系统,你需要描述两种书的不同属性(纸质书有索书号,电子书只有 URL),你可以为枚举类成员添加元组属性描述: enum Book { Papery(u32), Electronic(String),} let book = Book::Papery(1001);let ebook = Book::Electronic(String::from(“url://…”)); 如果你想为属性命名,可以用结构体语法:enum Book { Papery...
Rust条件语句
Rust 条件语句 在 Rust 语言中的条件语句是这种格式的:实例fn main() { let number = 3; if number < 5 { println!(“条件为 true”); } else { println!(“条件为 false”); }} 在上述程序中有条件 if 语句,这个语法在很多其它语言中很常见,但也有一些区别:首先,条件表达式 number < 5 不需要用小括号包括(注意,不需要不是不允许);但是 Rust 中的 if 不存在单语句不用加 {} 的规则,不允许使用一个语句代替一个块。尽管如此,Rust 还是支持传统 else-if 语法的:实例fn main() { let a = 12; let b; if a > 0 { b = 1; } else if a < 0 { b = -1; } else { b =...
Rust智能指针
Rust 智能指针智能指针(Smart pointers)是一种在 Rust 中常见的数据结构,它们提供了额外的功能和安全性保证,以帮助管理内存和数据。在 Rust 中,智能指针是一种封装了对动态分配内存的所有权和生命周期管理的数据类型。智能指针通常封装了一个原始指针,并提供了一些额外的功能,比如引用计数、所有权转移、生命周期管理等。在 Rust 中,标准库提供了几种常见的智能指针类型,例如 Box、Rc、Arc 和 RefCell。智能指针的使用场景: 当需要在堆上分配内存时,使用 Box。当需要多处共享所有权时,使用 Rc 或 Arc。当需要内部可变性时,使用 RefCell。当需要线程安全的共享所有权时,使用 Arc。当需要互斥访问数据时,使用 Mutex。当需要读取-写入访问数据时,使用 RwLock。当需要解决循环引用问题时,使用 Weak。 Box 智能指针Box 是 Rust 中最简单的智能指针之一,它允许在堆上分配一块内存,并将值存储在这个内存中。由于 Rust 的所有权规则,使用 Box 可以在堆上创建具有已知大小的数据。实例let b =...
Rust文件与IO
Rust 文件与 IO本章介绍 Rust 语言的 I/O 操作。接收命令行参数命令行程序是计算机程序最基础的存在形式,几乎所有的操作系统都支持命令行程序并将可视化程序的运行基于命令行机制。命令行程序必须能够接收来自命令行环境的参数,这些参数往往在一条命令行的命令之后以空格符分隔。在很多语言中(如 Java 和 C/C++)环境参数是以主函数的参数(常常是一个字符串数组)传递给程序的,但在 Rust 中主函数是个无参函数,环境参数需要开发者通过 std::env 模块取出,过程十分简单:实例fn main() { let args = std::env::args(); println!(“{:?}”, args);} 现在直接运行程序:Args { inner: [“D:\rust\greeting\target\debug\greeting.exe”] }也许你得到的结果比这个要长的多,这很正常,这个结果中 Args 结构体中有一个 inner...
Rust数据类型
Rust 数据类型Rust 语言中的基础数据类型有以下几种。整数型(Integer)整数型简称整型,按照比特位长度和有无符号分为以下种类: 位长度 有符号 无符号 8-bit i8 u8 16-bit i16 u16 32-bit i32 u32 64-bit i64 u64 128-bit i128 u128 arch isize usize isize 和 usize 两种整数类型是用来衡量数据大小的,它们的位长度取决于所运行的目标平台,如果是 32 位架构的处理器将使用 32 位位长度整型。整数的表述方法有以下几种: 进制 例 十进制 98_222 十六进制 0xff ...
Rust教程
Rust 教程 Rust 是由 Mozilla 主导开发的高性能编译型编程语言,遵循”安全、并发、实用”的设计原则。 Rust 语言由 Mozilla 开发,首次发布于 2010 年。Rust 支持多种编程范式,包括函数式、并发式、过程式和面向对象风格。Rust 速度惊人且内存利用率极高。由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。Rust 系列文章内容由 Sobin 收集整理。 Rust 语言的特点 内存安全:Rust 的所有权系统在编译时防止空悬指针、数据竞争等内存错误,无需垃圾收集器。 并发编程:Rust 提供了现代的语言特性来支持并发编程,如线程和消息传递,使得编写并发程序更加安全和容易。 性能:Rust 编译为机器码,没有运行时或垃圾收集器,能够提供接近 C 和 C++ 的性能。 类型系统:Rust 的类型系统和模式匹配提供了强大的抽象能力,有助于编写更安全、更可预测的代码。 错误处理:Rust 的错误处理模型鼓励显式处理所有可能的错误情况。 宏系统:Rust...
Rust所有权
Rust 所有权计算机程序必须在运行时管理它们所使用的内存资源。大多数的编程语言都有管理内存的功能:C/C++ 这样的语言主要通过手动方式管理内存,开发者需要手动的申请和释放内存资源。但为了提高开发效率,只要不影响程序功能的实现,许多开发者没有及时释放内存的习惯。所以手动管理内存的方式常常造成资源浪费。Java 语言编写的程序在虚拟机(JVM)中运行,JVM 具备自动回收内存资源的功能。但这种方式常常会降低运行时效率,所以 JVM 会尽可能少的回收资源,这样也会使程序占用较大的内存资源。所有权对大多数开发者而言是一个新颖的概念,它是 Rust 语言为高效使用内存而设计的语法机制。所有权概念是为了让 Rust 在编译阶段更有效地分析内存资源的有用性以实现内存管理而诞生的概念。所有权规则所有权有以下三条规则: Rust 中的每个值都有一个变量,称为其所有者。一次只能有一个所有者。当所有者不在程序运行范围时,该值将被删除。这三条规则是所有权概念的基础。接下来将介绍与所有权概念有关的概念。变量范围我们用下面这段程序描述变量范围的概念:{ //...
Rust循环
Rust 循环 Rust 除了灵活的条件语句以外,循环结构的设计也十分成熟。这一点作为身经百战的开发者应该能感觉出来。while 循环while 循环是最典型的条件语句循环:实例fn main() { let mut number = 1; while number != 4 { println!(“{}”, number); number += 1; } println!(“EXIT”);} 运行结果:123EXITRust 语言到此教程编撰之日还没有 do-while 的用法,但是 do 被规定为保留字,也许以后的版本中会用到。在 C 语言中 for 循环使用三元语句控制循环,但是 Rust 中没有这种用法,需要用 while 循环来代替:C 语言int i;for (i = 0; i < 10; i++) { // 循环体} Rustlet mut i = 0;while i < 10 { //...