文章分类 - 代码世界 / rust / rust基础
摘要:在 Rust 中,方法的参数传递方式非常讲究所有权、借用和可变性。 通过以下几种方式来传递方法的参数: &self(不可变引用) &mut self(可变引用) self(值传递) mut self(可变的值传递) 1. &self — 不可变引用 语法:fn method(&self) 说明:&s
阅读全文
摘要:Rust 的 trait 它定义了一组方法,允许不同类型实现这些方法,提供行为的抽象。用于泛型约束、共享行为和多态,类似于一种父接口(默认实现、多重继承、关联类型和泛型),trait还可以为已有stract进行扩展方法使用。 既可以看作一种接口,也可以用于为现有类型添加方法。 举例: // 定义一个
阅读全文
摘要:Rust 泛型 Rust 中的泛型允许你编写更通用、灵活和可重用的代码。通过使用泛型,函数、结构体、枚举和方法可以操作多种数据类型,而无需为每种数据类型编写单独的实现。以下是对 Rust 泛型的全面学习总结,包含其基础概念、用法及常见应用。 1. 泛型基础 在 Rust 中,泛型用于函数、结构体、枚
阅读全文
摘要:Rust 中的错误处理,主要可以分为两部分:错误类型(如 Result 和 Option)和 错误处理方式(如 match、unwrap、map_err 等方法)。 1. 错误类型 Rust 中有两种主要的类型来处理错误:Option 和 Result。 1.1 Option 类型 Option 类
阅读全文
摘要:Rust 中的 Option<T> 类型学习 Option<T> 是 Rust 标准库中的一个枚举类型,表示一个值要么是 某个类型的值 (Some(T)),要么是 空 (None)。它用于处理可能不存在的值,而不是使用 null(Rust 没有 null)。 Option<T> 是 Rust 处理
阅读全文
摘要:在 Rust 中,:: 是 路径分隔符,它的作用是用于访问某个模块、类型、方法或关联函数。它的使用场景包括以下几种情况: 1. 访问类型或函数的关联项 :: 用来访问某个类型(例如结构体、枚举、trait)的关联函数或者常量。例如,Vec::new() 访问 Vec 类型的 new 关联函数,i32
阅读全文
摘要:HashMap 是 Rust 标准库中提供的一个哈希表实现,属于 std::collections 模块。它以键值对的形式存储数据,其中键是唯一的,每个键对应一个值。它通常用于存储不重复的值,并能够根据键快速访问值。 HashMap 提供了许多方法来方便地操作数据,下面是对 HashMap 的详细学
阅读全文
摘要:Rust 中的模块(Module) 模块(Module) 是 Rust 中用来组织代码的主要工具,它允许你将代码划分为多个逻辑单元,从而提高可读性和可维护性。模块可以包含函数、结构体、枚举、常量、trait 等,也可以嵌套子模块。 模块的定义与使用 1. 模块的定义 可以使用 mod 关键字定义一个
阅读全文
摘要:String 类型的概述 在 Rust 中,String 是一种可变的、堆分配的、动态大小的字符串类型。与 &str(字符串切片)不同,String 允许你对字符串进行修改,并且可以动态地增长或缩小。 String 的特性 堆分配: String 类型将数据存储在堆上,意味着它可以动态地分配和释放内
阅读全文
摘要:在 Rust 中,enum 是一种非常强大的类型,它允许定义一组具有关联性的可能值。与许多编程语言中的枚举不同,Rust 的枚举不仅可以是简单的枚举值,还可以包含数据,甚至可以和结构体一样复杂。 以下是对 enum 的全面学习和总结: 1. 基本枚举 枚举的基本形式是定义一组可能的值: enum D
阅读全文
摘要:在 Rust 中,结构体(struct)是定义数据类型和管理复杂数据的核心工具,类似于其他语言中的类,但它不支持内置继承。Rust 提供了三种基本的结构体形式:常规结构体(regular struct)、元组结构体(tuple struct)和单元结构体(unit struct)。下面详细讲解: 1
阅读全文
摘要:可变性、所有权和借用 在 Rust 中,可变性(mutability)、所有权(ownership)和借用(borrowing)是三个核心概念,它们在一起决定了如何在内存中管理数据、避免数据竞争以及确保程序的安全性。这些概念互相联系,共同维护了 Rust 的内存安全性。 让我们逐一展开这些概念,并了
阅读全文
摘要:Rust 中的 move semantics(移动语义) 是其所有权系统的核心特性之一。它决定了数据的所有权如何在程序中转移以及如何在程序执行过程中确保内存安全。 1. 基本概念:所有权(Ownership) Rust 的所有权系统要求每个值都有一个所有者,并且该值在同一时间只能有一个所有者。这就引
阅读全文
摘要:iter() 是 Rust 中的一个方法,它可以用于 可迭代的集合,返回一个 不可变的迭代器。这个方法使得你可以遍历集合中的元素。通常,iter() 适用于以下几种类型: 1. 数组(Array) 数组是固定大小的集合,iter() 可以用来遍历数组中的元素。 示例: let arr = [1, 2
阅读全文
摘要:Vec 基本知识 定义 Vec 是一个存储堆分配的数据类型,可以动态改变大小。你可以将元素推送到 Vec 中,或者从其中删除元素。 动态大小 不像数组([T; N])那样大小固定,Vec 的大小在运行时是可变的。你可以向 Vec 添加元素,也可以删除元素,甚至将它的容量增加或减少。 如何使用 Vec
阅读全文
摘要:Rust 切片字面量(Slice Literals)详解 切片字面量是 Rust 中用于表示固定长度数组的一部分的引用。切片是一种轻量级的、对底层数组数据的引用,它的设计目的是操作集合中的部分数据,而不复制数据本身。 1. 什么是切片字面量? 切片字面量是 &[T] 类型的引用,用来表示对一个数组或
阅读全文
摘要:Booleans (bool) let is_morning = true; if is_morning { println!("Good morning!"); } Characters (char) fn main() { let c1 = 'a'; // 字母 let c2 = '中'; //
阅读全文
摘要:return-返回的使用 这里只讲我遇到的一些function使用和其他语言的区别 fn is_even(num: i64) -> bool { num % 2 == 0 } fn sale_price(price: i64) -> i64 { if is_even(price) { price -
阅读全文
摘要:声明变量let的使用 let 关键字用于声明变量。它是语言的核心部分,因为 Rust 的变量是默认不可变的,let 用于引入变量并赋予它初始值。 不可变量 let variable_name = value; 可变变量 要想修改,在加关键字mut let mut x = 5; x = x + 1;
阅读全文