Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Struct 结构需要一个生命周期,因为?_Struct_Rust_Lifetime - Fatal编程技术网

Struct 结构需要一个生命周期,因为?

Struct 结构需要一个生命周期,因为?,struct,rust,lifetime,Struct,Rust,Lifetime,(每个标有?的语句都希望被断言) 我只是在慢慢地走 由于寿命省略有助于省略对寿命的明确描述(?),因此在某些情况下,我们需要对其进行描述 示例可能是包含引用的结构: struct Person<a'>{ car: &'a Car } struct Person相反:结构包含引用,因此它可能不会比引用所指向的东西更长寿 由于寿命省略有助于省略对寿命的明确描述(?),因此在某些情况下,我们需要对其进行描述 不,在这里,终身省略只是让你的生活更轻松(无论是作为作家还是读者)。生命

(每个标有的语句都希望被断言)

我只是在慢慢地走

由于寿命省略有助于省略对寿命的明确描述(),因此在某些情况下,我们需要对其进行描述

示例可能是包含引用的结构:

struct Person<a'>{
car: &'a Car
}

struct Person相反:结构包含引用,因此它可能不会比引用所指向的东西更长寿

由于寿命省略有助于省略对寿命的明确描述(),因此在某些情况下,我们需要对其进行描述

不,在这里,终身省略只是让你的生活更轻松(无论是作为作家还是读者)。生命期仍然存在(语义上),但不需要显式表示(语法上)

据我所知,生存期省略在
struct
定义中不起作用。它在功能和机构中起作用

但是,由于这个结构包含一个对汽车的引用,并且这个引用可能会被借用到其他地方,所以只要汽车引用还在使用,这个结构就需要保持活动状态

否。生存期的目标是避免挂起引用,并指示借用关系

  • 悬空引用是引用(长)死值的引用,可能在释放的内存中,或者在重用的内存中(更糟)
  • 借用关系由借用检查器用于跟踪某人是否仍有对某个值的引用;当有人对某个值进行引用时,不应将其移动或更改为另一种类型,以免所述引用悬空
对于悬空引用的更深入解释

因此,生命周期就是要确保引用永远不会超过它所引用的值


因此,约束条件与您的信念相反:
'a
的目标是让编译器确保您的
永远不会比它所指的
汽车
活得更长。

作为旁注;您关于“结构是一种值类型,因此其内存位于堆栈上”的说法也不完全正确。值类型仅分配为“内联”。如果包含
Person
struct的变量是函数的局部变量,则该结构将在堆栈上分配。但是
Person
结构很可能被装箱,可能在
中,可能在
向量
中,等等,因此在堆上被分配。您认为
struct
关键字不会使某些内容驻留在堆上,但也不会阻止它,这是正确的。感谢您的澄清!