有没有办法在 Rust 中删除静态生命周期对象?

2023-12-04

在寻找答案时我发现这个问题,但是没有提到静态生命周期对象。这个答案中提到的方法可以吗(调用drop()在对象上)可用于静态生命周期对象吗?

我想象了一种类似链表的情况。您需要(可能)在程序的整个生命周期中保留列表的节点,但是您也可以从列表中删除项目。在程序的整个执行过程中将它们保留在内存中似乎很浪费。

Thanks!


不。最重要的是static它是静态的:它在内存中有一个固定的地址,不能从那里移动。因此,每个人都可以自由地引用该对象,因为只要程序正在执行,它就保证存在。这就是为什么你只能使用static以一个形式&'static-引用并且永远不能声明所有权。

此外,为了节省内存而这样做是没有意义的:该对象被烘焙到可执行文件中并在访问时映射到内存。所有这些could发生的情况是操作系统放弃内存mapping。然而,由于内存从一开始就没有从堆中分配,因此没有任何节省。

唯一的你could要做的就是使用不安全的可变访问来替换对象。这既危险(因为编译器可以自由地假设对象实际上没有改变),又毫无意义,因为内存无法释放,因为它是可执行文件内存映射的一部分。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法在 Rust 中删除静态生命周期对象? 的相关文章

随机推荐

  • 通过 PowerShell 命令获取返回对象的类 - 确定 cmdlet 的输出数据类型

    在PowerShell中 如果一个命令返回一个或多个对象的数组 我可以通过以下方法找出该对象的类 ab SampleCommand ab 0 getType 但是 如果命令没有返回任何内容 0 值的数组 我如何找出该命令的默认返回类型 注意
  • 我可以使用java在黑莓手机上打开“.pdf”文档吗?

    我可以使用java在黑莓手机上打开 pdf 文档吗 如果是 那么如何 黑莓中没有任何本地功能可以加载pdf文件 但是您可以在浏览器字段中加载谷歌查看器 这样就可以了 D public ScrLoad String url http docs
  • 如何更改 GitHub 上存储库的语言?

    GitHub 搜索允许按语言过滤存储库 如何将存储库设置为特定语言 您还可以覆盖某些文件 cat gitattributes rb linguist language Java Source
  • 更改最后一个字母的颜色

    示例代码 p class test string p 我想更改最后一个字母的颜色 在本例中为 g 但我需要 css 解决方案 我不需要 javascript 解决方案 我一个字母一个字母地显示字符串 但无法使用静态解决方案 大家都说做不到
  • 使用 PHP 八进制和字符串转换

    我正在使用一个数据库 该数据库包含一堆以前导 0 为前缀的序列号 因此 序列号可能类似于 00032432 或 56332432 问题在于 PHP 我不明白八进制转换系统是如何工作的 一个具体的例子是 我试图将所有这些基于整数的数字与字符串
  • 升级到 mac Big Sur 后,SnowSQL 失败,并显示“无法找到库安全性”

    升级到 macOS Big Sur 后 我的 Snowsql 脚本全部失败 并显示 无法找到库安全性 snowsql q select 1 x User me Password XXX The library Security could
  • 字符编码UTF-8和ISO-8859-1规则是什么

    我想知道是否有一篇文章讨论字符编码 UTF 8 和 ISO 8859 1 的规则 有人也可以指出我其他字符编码的规则吗 读这个 http www joelonsoftware com articles Unicode html 它将清除您对
  • 如何在注入的服务中访问用户令牌以重新编码密码?

    我有下面的代码 我试图在用户登录时重新编码密码 数据库已从旧网站迁移 但是 我不确定我做错了什么 因为我不断收到错误 尝试调用类 AppBundle Service HubAuthenticator 的名为 forward 的未定义方法 我
  • 如何将四元数转换为角度?

    有没有将四元数转换为角度的公式 希望使用 Core Motion API 和陀螺仪在 iPhone 上做一些事情 以便根据我从它收到的数据 以四元数的形式 我可以在屏幕上投影 UIView Thanks Yes see Quaternion
  • Google Cloud Functions 是否能够免受 DDoS 攻击?

    据我了解 我的 Google Cloud Functions 可以在全球范围内访问 如果我想控制对它们的访问 我需要将授权作为函数本身的一部分来实现 比如说 我可以使用基于不记名令牌的方法 这将保护该功能背后的资源免遭未经授权的访问 然而
  • iOS requestAccessToAccountsWithType 不显示权限提示/NSAlert

    据我了解 当我调用 ACAccountStore requestAccessToAccountsWithType options completion 用户应该会看到一个 UIAlert 询问他们是否授予我的应用程序权限 当我运行这段代码时
  • 实施 Google URL 缩短 API 的跨域问题

    我正在尝试在 jQuery 的帮助下通过 AJAX 调用来实现 Google URL 缩短器 API 我做过这样的事情 function btnshorten click function var longURL tboxLongURL v
  • 使用 PHP 获取 Discord 中的成员总数

    我有一个拥有 1361 名成员的 Discord 服务器 我想在我的网站上显示加入用户的总数 我已经弄清楚如何使用以下方法获取服务器上的所有在线会员 我应该采取什么不同的做法来获取已加入服务器的所有用户的总
  • 使用 TypeNameHandling 对 System.Drawing.Color 进行 JSON.NET 序列化

    我想序列化一个Dictionary
  • 属性号 10 超过列数 0

    此查询成功返回表中的所有行 大约 850 select from my db log where date trunc day creation date gt to date 2014 03 05 text yyyy mm dd 但是当我
  • Python 按字母顺序对字符串进行排序,小写在前

    我想使用 python 按字母顺序对给定的字符串数组进行排序 但小写单词应该首先出现 一个例子 usr local bin python2 7 arr A e a D f B arr sort for s in arr print s In
  • TabLayout 和 ViewPager 无法在 Android 片段内工作

    您好 我在片段中有一个 TabLayout 和 ViewPager 但我无法在选项卡之间滑动以到达子片段 在 活动 中正常工作 但在 片段 中不起作用 这是我在片段内的 Tablayout 代码 Override public View o
  • 将 RDD 转换为 JSON 对象

    我有一个 RDD String List String 类型的 RDD 例子 FRUIT List Apple Banana Mango VEGETABLE List Potato Tomato 我想将上面的输出转换为 json 对象 如下
  • 如何让JTextArea粘在窗口上

    您好 我想让这个 TextArea 在通过鼠标调整大小时坚持窗口大小 就像下部按钮一样 这是代码 它运行完美 没有错误 请看一下 import java awt BorderLayout import java awt Component
  • 有没有办法在 Rust 中删除静态生命周期对象?

    在寻找答案时我发现这个问题 但是没有提到静态生命周期对象 这个答案中提到的方法可以吗 调用drop 在对象上 可用于静态生命周期对象吗 我想象了一种类似链表的情况 您需要 可能 在程序的整个生命周期中保留列表的节点 但是您也可以从列表中删除