会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
阿初
博客园
首页
新随笔
联系
管理
订阅
随笔分类 -
Rust
rust cjb语言
Rust 智能指针
摘要:智能指针 Box, RC, RefCell 智能指针是数据结构,表现类似于指针,但也拥有额外的数据结构。 引用和智能指针的区别:引用只是只借用数据的指针,而智能指针则是拥有它们指向的数据。 Box box值是放在堆上,而指向的堆上的数据的指针是留在栈上。 fn main() { // v存在栈上,5
阅读全文
posted @
2021-12-08 14:17
阿初
阅读(174)
评论(0)
推荐(0)
编辑
Rust 迭代器
摘要:迭代器 迭代器是惰性的,调用方法使用迭代器之前,不会有任何的效果。 每个迭代器都实现了iterator trait,这个 trait 定义在标准库里。 trait Iterator { type Item; // type Item和Self::Item这种用法叫做定义trait的关联类型。这里只定
阅读全文
posted @
2021-12-06 16:52
阿初
阅读(274)
评论(0)
推荐(0)
编辑
Rust 闭包
摘要:闭包 创建闭包 fn main() { let use_closure = || { println!("Hello, world!"); }; use_closure() } 语法格式 let func = |函数参数| -> 返回值 {逻辑}; let func = |x: u32| -> u3
阅读全文
posted @
2021-12-06 15:47
阿初
阅读(127)
评论(0)
推荐(0)
编辑
Rust 一些笔记
摘要:阶段性笔记(理解) 引用和借用 泛型 struct trait 引用和借用 引用和借用都有生命周期。引用是作为参数传递给函数的地址。 创建一个变量,借用/引用都是指向同一个内存地址。只不过所有权不一样。 借用&: let b = &3; 引用ref: let ref c: i32 = 2; 这两种类
阅读全文
posted @
2021-12-02 17:27
阿初
阅读(70)
评论(0)
推荐(0)
编辑
Rust 生命周期
摘要:生命周期 避免悬垂引用。 rust可以提前声明,即声明一个变量但不初始化,因为没有赋值,所以也用不了,rust也不存在空值。 借用检查器 比较作用域来判断所有的借用是否合法。被引用的数据存活时间,必须比引用者的长。 函数中的泛型生命周期 手动设置生命周期,当函数返回一个引用的时候,它不会知道这个引用
阅读全文
posted @
2021-12-02 10:26
阿初
阅读(279)
评论(0)
推荐(0)
编辑
Rust Trait
摘要:Trait Trait告诉rust编译器某种类型具有哪些并且可以与其他类型共享的功能。抽象的定义共享行为。 有点类似继承。 定义一个Trait trait Summary { // 只创建方法,声明签名 fn summarize(&self) -> String; } 在类型实现trait impl
阅读全文
posted @
2021-12-01 14:23
阿初
阅读(200)
评论(0)
推荐(0)
编辑
Rust 泛型
摘要:重复代码 提取函数。 fn largest(list: &[i32]) -> i32 { let mut largeNumber = list[0]; for item in list { if *item > largeNumber { largeNumber = *item } } largeN
阅读全文
posted @
2021-12-01 10:49
阿初
阅读(96)
评论(0)
推荐(0)
编辑
Rust panic
摘要:错误处理 其他语言使用了异常处理来处理错误,但rust里没有。rust把错误分成了可恢复/不可恢复。 可恢复错误 Result<T, E> Result<T, E>枚举类型来处理可恢复错误。 T返回数据的操作类型 E返回错误的操作类型。 Result是与导入模块。使用match去匹配。 匹配不同的错
阅读全文
posted @
2021-11-30 16:29
阿初
阅读(534)
评论(0)
推荐(0)
编辑
Rust 常用的集合
摘要:常用的集合 数组和tuple是存在栈上的,这里写的集合是存储在heap上的,也就是说在运行是存储大小是不定的。 Vector 不定长数组 类型签名: Vec 由标准库提供,可存储多个值,只能存储相同类型的数据,值在内存中连续存放。 创建Vector 当想创建一个不定长的数组时,可以使用Vector。
阅读全文
posted @
2021-11-29 17:18
阿初
阅读(314)
评论(0)
推荐(0)
编辑
Rust Package Crate Moudle
摘要:模块系统 Package 包:构建,测试,共享crate。 Crate 单元包:一个模块树,可以产生一个library或可执行文件。 Module 模块,use:代码组织,作用域,私有路径。 path:为struct, function, module 等项目命名的方式。 Package 包含: 1
阅读全文
posted @
2021-11-28 20:50
阿初
阅读(90)
评论(0)
推荐(0)
编辑
Rust 枚举
摘要:枚举 枚举允许我们列举所有可能的值来定义一个类型。 定义枚举 枚举里面的字段被称为变体。 enum IP{ V4, V6, } 枚举值 let fout = IP::V4 将枚举传入函数 enum IP{ V4, V6, } fn main(){ let four = IP::V4; route(f
阅读全文
posted @
2021-11-28 18:19
阿初
阅读(250)
评论(0)
推荐(0)
编辑
Rust struct
摘要:struct 结构体 自定义的数据类型,为相关联的值命名,打包成有意义的组合。 类似python的dict,但是赋值的时候可以不按顺序。初始化的时候一定要全部赋值完,不能缺少。先要创建结构体,再实例化结构体。 取值时使用点标记法。修改结构体里的值必须要求结构体是可变的 mut。一旦struct的实例
阅读全文
posted @
2021-11-26 19:35
阿初
阅读(300)
评论(0)
推荐(0)
编辑
Rust所有权
摘要:Rust 所有权 无需GC就能保证内存的安全。 函数中借用是因为不需要转移所有权,只需要使用实参的数据。 Stack and Heap 储存数据 在rust里,一个值在栈还是堆上对语言的行为和为什么做这些决定有重大影响。 栈,后进先出,必须拥有已知的固定大小。未知的数据或运行时的大小可能发生改变的数
阅读全文
posted @
2021-11-25 20:42
阿初
阅读(137)
评论(0)
推荐(0)
编辑
Rust基础
摘要:Rust基础 基础 两个冒号调用静态方法 声明变量的关键字 let,rust里的的变量默认是不可变的(immutable),不可变变量;让变量可修改就加上个 mut let a = 1 let mut a = 1 传参 // 传一个字符串 read_line(guess) // 传一个可变字符串 r
阅读全文
posted @
2021-11-25 17:09
阿初
阅读(235)
评论(0)
推荐(0)
编辑
Rust概念
摘要:Rust概要 简单的注意点 main函数很特别,它是每个Rust可执行程序最先运行的代码。 缩进是4个空格。 println! 这里个有个 !,代表这个是宏,而不是一个函数。 要写分号; 编译和运行是单独的两步 运行rust程序之前必须先编译,命令:rustc 源文件名 编译成功后会有个二进制文件(
阅读全文
posted @
2021-11-25 10:48
阿初
阅读(161)
评论(0)
推荐(0)
编辑
公告