1 Tanix2 2023-05-03 11:14:26 +08:00 就是要保证不会有空引用 |
![]() | 2 aijam 2023-05-03 11:21:02 +08:00 ![]() 你到底说了几句话 |
![]() | 3 misaka 2023-05-03 11:36:42 +08:00 via iPhone ![]() 你这一句话好长啊 |
![]() | 4 adoal 2023-05-03 11:40:58 +08:00 ![]() 只听田七嘶声道:“李寻欢,你好长的气” |
![]() | 5 Mohanson 2023-05-03 11:49:56 +08:00 RAII 好像不是 Rust 独有的, 但强制使用 RAII 应该是独一家? |
![]() | 6 zeal7s 2023-05-03 12:04:40 +08:00 啊?没有垃圾回收的语言都有生命周期吧,无非就是需要开发者自己维护,否则就是空异常 |
![]() | 7 xtreme1 2023-05-03 12:10:15 +08:00 rustc 其实在相当多情况是帮你推理了生命周期的 如果意识不到这一点, 可以找个早期版本写一写 |
8 TWorldIsNButThis 2023-05-03 12:10:57 +08:00 via iPhone ![]() 是生存期 lifetime 不是生命周期 lifecycle 一个变量死了以后不会复活 |
9 gant 2023-05-03 12:43:36 +08:00 via Android 利益最大化?没了诚信你怎么利益最大化?你的的诚信一文不值?阴曹地府不讲诚信?判官让你投猪胎。 |
10 alne 2023-05-03 12:45:42 +08:00 重新定义一句话 |
11 vituralfuture 2023-05-03 13:25:51 +08:00 我觉得应该是类似一个有向树,就像软件的依赖一样,一个高级的对象引用了一些中级的对象,中级的对象引用了一些低级的对象,就像包管理器不能卸载一个被其他软件依赖的软件,要卸载软件,或者说要解除引用,应该先从最顶层开始 当然我并没有学过 rust ,只是个人理解 |
![]() | 12 zhez 2023-05-03 14:23:20 +08:00 关于“借”,更应该写明“借出”和“借入”或“借给我”和“我借给” |
13 e7 2023-05-03 14:32:19 +08:00 领导说“下面我简单说两句”,我们都错怪他了,确实只说了两句 |
![]() | 14 iorilu OP |
15 chtcrack 2023-05-03 15:02:23 +08:00 这么简单的问题,为什么要搞那么复杂?,你申请了一块内存来用,不用的时候记得回收,就这样而已.. 搞得花里胡哨没有一点意义.. |
![]() | 16 MrHyde 2023-05-03 15:59:09 +08:00 ![]() 循环引用怎么办? |
17 Jirajine 2023-05-03 16:26:14 +08:00 用 RUST 最顺手的地方不是生命周期,而是和类型、强类型约束的错误处理。 |
![]() | 18 defage 2023-05-03 17:05:05 +08:00 ![]() 就是原来 C++编译器要干的事现在让程序员干大头了(^_^) |
19 lmshl 2023-05-03 19:01:09 +08:00 你总结的不行,听我的一句话总结: Rust Ownership 的设计目的只有一个,就是应该将 drop() 插入到哪个位置。 |
20 liuguang 2023-05-03 19:01:41 +08:00 简而言之,rust 中的引用必须保证引用的内存有效,不能出现无效引用。 在 C/C++,如果你的结构体字段是一个指针,但是指针指向的内存可能早就已经释放了,这时候读写这块内存,就是内存安全问题。 在 rust 语言中,一个结构体的字段如果是引用,就必须保证这个结构体的对象存在时,字段的引用必须有效。 这个要经过编译器检查的,也就是说,能编译通过的 rust 程序,就不会出现上面说的无效引用,不会出现这种内存安全问题。 而且也并不是函数中有引用,就需要标注生命周期。只有函数的输入输出都有引用时,才需要标注生命周期。 而且有三种范式是比较常见的,可以省略标注,因为编译器能理解,其他情况才需要去标注。 |
21 liuguang 2023-05-03 19:15:19 +08:00 别人借我钱,别人必须活的比我长。如果别人先死了,我持有的借用就无效了。 我借别人钱,我必须活的比别人长。如果我先死了,别人持有的借用就无效了。 这两个是一样的! A 借钱给 B ,那么 A 的生命周期>=B 的生命周期。 一个结构体的字段如果持有三个引用,那么这个结构体的生命周期<=生周期最短的那个。这应该很好理解吧。 |
![]() | 22 815979670 2023-05-03 21:16:09 +08:00 进程不是也是这个概念,父进程 必须比子进程活得长,子进程必须在父进程关闭之前结束掉(如果没结束也会自动结束) |
23 fengjianxinghun 2023-05-04 11:22:46 +08:00 @Jirajine 类型系统比它强的多的是,其实好的部分就是 cargo 和 Resut/Option |
24 lynnharry 2023-05-04 15:22:17 +08:00 |
25 gp3098 2023-05-08 10:45:10 +08:00 via Android 我来我来 出来混,迟早要还的。 |