
Rust
文章平均质量分 52
喝了柠檬也不萌啊
这个作者很懒,什么都没留下…
展开
-
Rust的特征详解Trait
注意 dyn 不能单独作为特征对象的定义,例如下面的代码编译器会报错,原因是特征对象可以是任意实现了某个特征的类型,编译器在编译期不知道该类型的大小,不同的类型大小是不同的。另外一种情况,如果想要一个数组中存放不同的对象,但是这些对象都实现了相同的特征的话,那也得用到特征对象。如果要实现这种返回不同对象的话,就得使用如下的代码。也就是说作为返回值的时候,不能够返回两个不同类型的对象。如果想返回一个对象,这个对象实现了某一个特征。Rust中的特征和其他语言的接口非常相似。存放实现了相同特征的不同对象的数组。原创 2024-09-13 14:56:49 · 245 阅读 · 0 评论 -
Rust模式匹配
这段代码会报错,因为s的所有权转移到了_s上面,但是如果不用_s而是使用_的话,就不会报错了。当我们需要获取到这个T的时候,就可以用到模式绑定的语法特性。这个if let是只用于匹配match中单一的某一种类型的时候用的。在rust模式匹配中,单纯的下划线和下划线开头的变量有什么区别呢?上面这种情况汇总,if是不能解构出i的值的,只能是一个确定的值。每一个分支的最后一句话必须是一个语句,代表要返回的东西。在这个代码中,Option中的T被绑定到了i上面。在和这个例子中,所有分支的返回值类型都是相同的。原创 2024-09-12 14:49:47 · 177 阅读 · 0 评论 -
Rust的所有权和借用
什么样子的数据才会有所有权Rust中数据可以分为基本类型和非基本类型。可以通过以下两个方面来理解这些东西的所有权。就不会发生所有权的转化。也就是说所有权是针对于堆上分配的来说的。所有权转移是怎么样的每一个变量都是有作用域的。并且在离开这个作用域的时候,会调用Drop方法来释放这个变量所指代的内存。那么在这个作用域中,如果内存的所属权从一个变量转移到了另外一个变量。那就是发生了所有权的转移。所以,这也得出了以下的先决条件。这三条是所有权的规则。那在实际发生所有权转移的时候,内存中发生了什么事情呢。原创 2024-09-12 16:33:21 · 807 阅读 · 4 评论 -
Rust泛型
在 Rust 中,如果你想编写一个方法,将结构体中某个字段的所有权转移出去,你不可以使用 &mut self 作为参数,因为 &mut self 是一个可变借用,而不是所有权的转移。为了转移所有权,你需要使用 self 作为方法的接收者。在这段代码中为什么value函数要返回val的引用呢?不返回引用换句话说,就是要把val的所有权给转移出去。在这个代码中,val的所有权被转移了。那么要实现这一点要怎么做呢?可不可以不返回引用。原创 2024-09-06 16:21:46 · 255 阅读 · 0 评论 -
Rust中的方法和关联函数
只要在 impl 块中的都叫 associated functions,其中,有 self 参数的是 methods。Rust中跟struct有关的函数都叫关联函数。如果这个关联函数第一个参数是self的话,那么这个函数就是方法。可以看出,对于一个方法来说,第一个参数的类型很重要。原创 2024-09-06 15:46:28 · 294 阅读 · 0 评论 -
Rust中的match和模式匹配和解构
也就是说如果match匹配里面只想关注其中一个分支的话,那么就可以简写为上面这种形式。如果给age赋值给None,那么就不会匹配成功。就会进入else分支。这段代码的上半部分,我认为是既用到了解构,又用到了模式匹配。并且有人觉得这种等效的写法是没有意义的,其实是有意义的。所以if let语法也可以看成是一种简写。是把这两合并到了一起。这里的这种语法就是·原创 2024-09-05 11:17:31 · 345 阅读 · 0 评论