当前位置: 首页 > 知识库问答 >
问题:

不安全指定寿命的例子有哪些?[副本]

安承教
2023-03-14

在过去的三天里,我一直在学习生命周期主题,现在它们对我来说开始有意义了。然而,我做了很多实验,但没有设法以一种会导致运行时不安全行为的方式指定生命周期,因为编译器似乎足够聪明,可以通过不编译来防止此类情况。因此我有以下问题链:

Rust编译器会抓住每一个使用不安全生命周期说明符的情况,这是真的吗?

  • 如果是的话,那么为什么Rust需要手动指定生命周期,而它可以通过推断不安全的场景来自行指定生命周期?或者它只是一个遗迹,一旦编译器变得足够强大,可以在任何地方进行终身省略,它就会消失吗

共有1个答案

东方化
2023-03-14

除非使用不安全的代码(在函数中或其他地方),否则不可能(除非有任何编译器错误)使用生存期说明符引发未定义的行为。然而,生命周期说明符仍然是必要的,因为有时正确的生命周期应该是什么存在歧义。例如:

fn foo(bar: &i32, baz: &i32) -> &i32 {
    // ...
}

返回类型的生存期应该是什么?编译器无法推断这一点,因为它可能与条形图或baz相关联,每种情况都会影响返回值的持续时间,从而影响函数的使用方式。函数体不能用于推断生存期,因为只有使用函数的签名才能完成类型和生存期检查。消除这种歧义的唯一方法是明确说明返回值应具有的生存期:

fn foo<'a>(bar: &i32, baz: &'a i32) -> &'a i32 {
    // ...
}

您可以在此处阅读有关终身省略规则的更多信息。

 类似资料:
  • 本文向大家介绍你有写过自定义指令吗?自定义指令的生命周期(钩子函数)有哪些?相关面试题,主要包含被问及你有写过自定义指令吗?自定义指令的生命周期(钩子函数)有哪些?时的应答技巧和注意事项,需要的朋友参考一下 v-focus; 自定义指令的钩子函数

  • 图形对于建模真实世界的现象和关系非常有用。 从广义上讲,图数据结构和算法分为两类: 那些对稀疏图有用的(例如邻接列表,约翰逊算法) 那些对稠密图有用的(例如邻接矩阵、Floyd-Warisher)。 然而,在我能想到的每种情况下,现实世界的图表都是稀疏的。例如: Web网络形成稀疏图(每个站点都链接到其他几个站点) 社交网络形成稀疏图(每个人都认识几个其他人) 电气网络形成稀疏图(大多数电路元件只

  • 问题内容: 用户可以控制的任何变量,攻击者也可以控制,因此是攻击的源头。这称为“污染”变量,并且不安全。 使用时,可以控制许多变量。,,,和许多其它的是由客户端发送的HTTP请求报头的一部分。 有人知道“安全列表”或变量列表吗? 问题答案: 就没有这样的“安全”或“不安全”值。只有服务器控制的值和用户控制的值,您需要知道值的来源,因此是否可以出于特定目的信任该值。例如,将其存储在数据库中是完全安全

  • 我对不同类型的标识符案例以及人们对它们的称呼感兴趣。你知道这个名单上还有其他名字吗? :骆驼大小写(例如在java变量名中) :大写的骆驼大小写(例如在java类名中) :Snake大小写(例如在python变量名中) : Kebab大小写(例如球拍名称) :平面大小写(例如在java包名称) :大写(例如C常量名称)

  • 我们目前已经在服务器上启用了CORS,并且只允许某些源、标头和方法通过CORS。 我们计划允许通过CORS允许所有标头,即将EnableCorsAttribute.headers设置为*。 我是否应该注意任何安全问题/风险? 谢谢

  • 问题内容: 在许多地方,我已经看到人们谈论过跨域XMLHttpRequest,由于某些 安全原因 ,这是不可能的。但是,我还没有找到表明这些 安全原因 实际上是什么的帖子? 人们提到JSONP是不错的选择之一。另一种选择是使用和标头。 但是,我只想知道由于跨域XMLHttpRequest的使用会引起哪些安全问题? 问题答案: 我认为最好回答您的问题的示例,为什么这太糟糕了。 您转到我的网站(exa