11 2021 档案

摘要:错误处理 其他语言使用了异常处理来处理错误,但rust里没有。rust把错误分成了可恢复/不可恢复。 可恢复错误 Result<T, E> Result<T, E>枚举类型来处理可恢复错误。 T返回数据的操作类型 E返回错误的操作类型。 Result是与导入模块。使用match去匹配。 匹配不同的错 阅读全文
posted @ 2021-11-30 16:29 阿初 阅读(534) 评论(0) 推荐(0) 编辑
摘要:常用的集合 数组和tuple是存在栈上的,这里写的集合是存储在heap上的,也就是说在运行是存储大小是不定的。 Vector 不定长数组 类型签名: Vec 由标准库提供,可存储多个值,只能存储相同类型的数据,值在内存中连续存放。 创建Vector 当想创建一个不定长的数组时,可以使用Vector。 阅读全文
posted @ 2021-11-29 17:18 阿初 阅读(314) 评论(0) 推荐(0) 编辑
摘要:模块系统 Package 包:构建,测试,共享crate。 Crate 单元包:一个模块树,可以产生一个library或可执行文件。 Module 模块,use:代码组织,作用域,私有路径。 path:为struct, function, module 等项目命名的方式。 Package 包含: 1 阅读全文
posted @ 2021-11-28 20:50 阿初 阅读(90) 评论(0) 推荐(0) 编辑
摘要:枚举 枚举允许我们列举所有可能的值来定义一个类型。 定义枚举 枚举里面的字段被称为变体。 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) 编辑
摘要:struct 结构体 自定义的数据类型,为相关联的值命名,打包成有意义的组合。 类似python的dict,但是赋值的时候可以不按顺序。初始化的时候一定要全部赋值完,不能缺少。先要创建结构体,再实例化结构体。 取值时使用点标记法。修改结构体里的值必须要求结构体是可变的 mut。一旦struct的实例 阅读全文
posted @ 2021-11-26 19:35 阿初 阅读(300) 评论(0) 推荐(0) 编辑
摘要:Rust 所有权 无需GC就能保证内存的安全。 函数中借用是因为不需要转移所有权,只需要使用实参的数据。 Stack and Heap 储存数据 在rust里,一个值在栈还是堆上对语言的行为和为什么做这些决定有重大影响。 栈,后进先出,必须拥有已知的固定大小。未知的数据或运行时的大小可能发生改变的数 阅读全文
posted @ 2021-11-25 20:42 阿初 阅读(137) 评论(0) 推荐(0) 编辑
摘要: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概要 简单的注意点 main函数很特别,它是每个Rust可执行程序最先运行的代码。 缩进是4个空格。 println! 这里个有个 !,代表这个是宏,而不是一个函数。 要写分号; 编译和运行是单独的两步 运行rust程序之前必须先编译,命令:rustc 源文件名 编译成功后会有个二进制文件( 阅读全文
posted @ 2021-11-25 10:48 阿初 阅读(161) 评论(0) 推荐(0) 编辑
摘要:计算机系统层次 五层结构 M0 微程序机器(微指令) M1 传统机器(机器语言) M2 操作系统机器(向上提供广义指令) M3 汇编语言机器(汇编语言) M4 高级语言机器(高级语言) 语言 计算从高级到低级依次可以分为机器语言,汇编语言和高级语言。 机器语言 机器语言是二进制数据。只有机器语言CP 阅读全文
posted @ 2021-11-14 21:00 阿初 阅读(447) 评论(0) 推荐(0) 编辑
摘要:## 渲染管线概述 ### 渲染管线功能 1. 图形渲染管线的主要功能是在给定一个虚拟相机,三维物体,光源和其他信息的情况下,渲染一幅二维图像。 2. 在二维图像中:物体的位置取决于物体的三维位置,环境的一些性质和相机的位置。 3. 在二维图像中:物体的颜色取决于材质的属性,光源,纹理和着色器等。 阅读全文
posted @ 2021-11-10 12:06 阿初 阅读(89) 评论(0) 推荐(0) 编辑
摘要:迭代器 迭代器类型的定义: 当类中定义了__iter__和__next__两个方法。 __iter__方法需要返回对象本身,即返回self。 __next__方法,返回下一个数据,如果没有数据了,则需要抛出一个StopIteration的异常。 # 创建 迭代器类型 class IterExampl 阅读全文
posted @ 2021-11-04 11:31 阿初 阅读(45) 评论(0) 推荐(0) 编辑
摘要:单例模式 在类中增加一个标识符,存储当前实例。如果为空就创建,如果已经被创建了就不重新创建,直接返回实例化。 如果同时创建了两个,那么两个对象都是一样的(包括数据和内存地址)。保证一个类仅有一个实例,并提供与一个访问它的全局访问点,避免一个全局使用的类频繁的创建与销毁。 class MyType(t 阅读全文
posted @ 2021-11-03 16:17 阿初 阅读(136) 评论(0) 推荐(0) 编辑
摘要:元类的定义及初始化类的流程 类默认由type创建。 怎么让一个类的创建改成其他的东西?用元类。 默认创建类 # 默认创建类,一般写法 class Foo(object): pass # type 创建类 type('Foo', (object, ), {'v1': 123, 'func': lamb 阅读全文
posted @ 2021-11-03 11:10 阿初 阅读(130) 评论(0) 推荐(0) 编辑