首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
Rust
超人不怕冷
创建于2024-09-03
订阅专栏
Rust学习
等 1 人订阅
共23篇文章
创建于2024-09-03
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
[rust]项目结构
包(package) 默认创建一个二进制package,package其实就是一个项目,是cargo的一个功能,允许我们创建,测试和分享crate 小结: 我们通过cargo创建的hello_rust
[rust]生命周期
介绍 生命周期是一个描述引用有效作用域的注解,它用来告知编译器不同引用在函数或方法间传递的关系及其有效时间段,并确保所有引用在其作用域内是有效的,其主要目的是为了避免悬垂引用 函数或者方法参数的生命周
[rust]所有权
小结: 作用域范围结束之后rust会隐式调用drop()方法释放内存 指针移动之后之前的数据就不能再访问了 栈上的数据赋值后还能继续访问,这是因为数据直接被copy了一份 常见的具有copy trai
[rust]函数
``` fn main() { func1(); func2(1, 2); let sum = func3(2, 3); println!("sum={}", sum) } fn func1() {
[rust]slice
字符串slice是String类型中的部分引用 字符串字面值就是slice,字面值简单来说就是直接表示值的数据。一般的字面值有字符串,数字,布尔,字符等
[rust]Vector
Vector通过简称Vec,是Rust标准库提供的一个标准动态数组类型,并且可以存储不同的数据类型 创建Vec 读取Vec 通过索引下标读取 通过match匹配 通过for in循环读取变量 vec与
[rust]HashMap
hashmap更新值的方式有两种: 直接插入,如果存在相同的key则覆盖 选择插入,如果key不存在则插入 hashmap不仅可以通过HashMap包直接创建,也可以通过Vector去创建
[rust]闭包
定义 闭包(Closure)是可以保存进变量或者作为参数传递给其他函数的匿名函数 闭包和函数不同的是,闭包允许捕获调用者作用域中的值 基础使用 不带参数,不带返回值 带参数,带返回值 简写:入参和出参
[rust]测试
创建一个库package: 通过#[cfg(test)]标识测试模块 通过#[test]标识测试方法 可以通过通配符*的方式导入所有公共子模块 src/lib.rs src/america.rs
[rust]迭代器
定义 支持遍历序列中的每一项和决定序列何时结束的逻辑 创建迭代器是惰性的,在调用方法使用迭代器之前不会有任何效果 每个迭代器都实现了iterator trait,定义在标准库中 type Item和S
[rust]控制流
小结: if{} else{} 或者 if{} else if{} else{} 条件表达式可以有返回值 loop 循环表达式可以有返回值
[Rust]二次释放
当 s2 和 s1 离开作用域,他们都会尝试释放相同的内存。这是一个叫做 二次释放(double free)的错误,也是之前提到过的内存安全性 bug 之一。两次释放(相同)内存会导致内存污染,它可能
[rust]引用与借用
在只读的情况下,引用可以让我们避免所有权的转移,从而多次重复的读取同一个变量 变量必须声明是可变的mutable才允许被借用,且一个变量在同一作用域内只能被借用一次 可变引用mutable和不可变引用
[rust]结构体方法
通过impl关键字来定义一个类型的实现块,通过这个块可以: 为类型定义方法 定义关联函数 为类型实现某个trait
[rust]String
创建String 更新String 字符串索引 字符串不支持直接通过索引小标的方式获取字符,我们可以通过slice的方式获取,或者通过for循环遍历 如果字符串中有汉字,使用slice的方式获取需要注
[rust]错误和处理方式
可恢复错误(非panic) Result是Rust中用于处理错误的核心类型之一,封装了一个成功的值或者一个错误 Ok(T)表示操作成功,并包含一个类型为T的值 Err(E)表示操作失败,并包含一个类型
[rust]泛型
泛型并不会造成程序性能上的损失: Rust通过在编译时进行泛型代码的单态化来保证效率 在编译时获取使用的具体类型通用代码转换为特定代码的过程表示为单态化 在函数中使用 普通函数求最大值 泛型函数求最大
[rust]trait
定义 trait翻译过来叫“特征”,用于定义与其他类型共享的功能,类似于golang里面的inteface{} 抽象定义共享行为 trait bounds指定泛型必须是拥有特定行为的类型 实现 值得注
[rust]变量
小结: 常量的定义必须声明类型 通过 let 关键字来定义一个变量 通过 let 关键字加 mut 关键字来定义一个可变变量 编译器会自动推导变量类型 支持定义不同类型的同名变量,这样会隐藏掉原有变量
[rust]基本数据类型
小结: rust中的字符类型是32位,一个字母是一个字符,一个汉字也是一个字符 数组定义中的 size 也是数组的一部分,在形参中指定了数组size为5,就必须要传入size同样为5的实参
下一页