1
Tanix2 2023-05-03 11:14:26 +08:00
就是要保证不会有空引用
|
2
aijam 2023-05-03 11:21:02 +08:00 19
你到底说了几句话
|
3
misaka 2023-05-03 11:36:42 +08:00 via iPhone 1
你这一句话好长啊
|
4
adoal 2023-05-03 11:40:58 +08:00 1
只听田七嘶声道:“李寻欢,你好长的气”
|
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 1
是生存期 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 1
循环引用怎么办?
|
17
Jirajine 2023-05-03 16:26:14 +08:00
用 RUST 最顺手的地方不是生命周期,而是和类型、强类型约束的错误处理。
|
18
defage 2023-05-03 17:05:05 +08:00 1
就是原来 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
我来我来
出来混,迟早要还的。 |