延长铁锈的使用寿命

2024-03-15

我有一些正在处理的代码。这是一个小辅助函数,应该返回一个Vec<&str>到调用函数。不过,我似乎无法正确地度过一生。

这是代码片段:

fn take_symbol<'a>(ch: &'a str, current: &'a mut String) -> &'a mut TokenList<'a> {
    let out = TokenList::<'a>::new();

    out.push(current.as_str());
    out.push(ch);

    *current = String::new();

    &mut out
}

编译器告诉我:error: 'out' does not live long enough并且引用必须在生命周期内有效'a,但在我看来它是为'a.

我也尝试过将其更改为:

let out = &mut TokenList::<'a>::new();

这不会改变任何错误消息。或者:

let out = &'a mut TokenList::<'a>::new();

编译器根本不喜欢它。

我如何定义out拥有一生'a?

有关更多详细信息,这是我对 TokenList 的定义:

pub type Token<'a> = &'a str;
pub type TokenList<'a> = Vec<Token<'a>>;

的寿命out is not 'a, since out在函数结束时被销毁。 Rust 不允许您返回对它的引用(它将允许访问已释放的内存!)。

尝试将您的功能更改为以下内容:

fn take_symbol<'a>(ch: &'a str, current: &'a mut String) -> TokenList<'a> {
    let out = TokenList::<'a>::new();

    out.push(current.as_str());
    out.push(ch);

    *current = String::new();

    out
}

这样您就可以传递所有权out给调用者,它会存活足够长的时间。

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

延长铁锈的使用寿命 的相关文章

随机推荐

  • Heroku:私人存储库中的 Python 依赖项,无需存储我的密码

    问题 我的问题就像如何安装 Python Heroku 项目的内部要求 https stackoverflow com q 9112784 1286628 and 如何在部署时在Heroku中自定义pip的requirements txt
  • 在 C# 中使用 DI 登录到控制台

    在这个简短的示例中 如果我只保留 AddConsole in ConfigureServices无论 LogLevel 如何 都不会记录到控制台 但如果我添加 AddConsole AddDebug 所有消息都会记录到控制台 3 次 我缺少
  • 如何将 Django HttpResponse 转换为 Django 渲染调用

    我有以下代码 def ajax login request request try request POST u login dictionary request POST except dictionary request GET use
  • 在单元测试中模拟 PHP 函数

    我正在使用 SimpleTest 对一些 PHP 代码进行单元测试 但遇到了麻烦 在我对数据库类的测试中 我希望能够为 PHP 设置期望mysql功能 在我对包装类的测试中mail我想模拟 PHP 的函数mail功能 这些只是一些例子 重点
  • 如何使用 PHP 将数据写入 Excel?

    是否可以使用 PHP 将内容附加到 xls 文件fwrite 当我尝试使用这个时fwrite 生成的文件会在 Excel 2007 中导致错误消息 我可以使用特定的分隔符来完成此操作吗 没有第三方库可以吗 您可以使用PHP电子表格 http
  • 我可以预编译 python 脚本吗?

    我有一个 python 脚本 可以说http domain com hello py 它只打印 Hello World 是否可以预编译这个Python文件 我每秒收到大约 300 个请求 编译的开销非常高 在 Java 中 服务器可以轻松处
  • 如何有效地定义基于 XML 的文本协议的传输结束?

    我想开发一个基于XML并通过TCP IP套接字传输的文本协议 假设我有一个简单的请求 响应机制 可以通过持久化发送 客户端和服务器之间的 TCP IP 连接如下
  • Maven LifeCycleExecutor 配置不完整错误

    我正在使用最新版本的 Hudson CI 1 341 来构建我的 maven 2 项目 使用 2 2 0 构建 但我收到一些警告 如果通过命令提示符执行 我看不到这些警告 有人可以告诉我如何调试这个问题吗 Executing Maven B
  • Matlab 相当于 Python 枚举

    在Python中 我们有一个方便的函数enumerate for i item in enumerate foo list do something 有没有相当于Matlab的enumerate 目前 我能想到的是如下 Matlab代码 i
  • Groovy:如何在使用 XMLSlurper() 读取的 XML 元素列表的开头插入节点

    我可能错过了一些明显的东西 因为我是 Groovy 的菜鸟 但我已经搜索过 但还没有找到我想要的东西 我有一个测试类 我正在其中读取一些 XML 我想插入一个元素一开始一系列的元素 我已经弄清楚如何replace第一个元素 我已经弄清楚如何
  • 使用未跟踪的 .env 文件部署到 Heroku

    我在 Heroku 上部署 Django 应用程序时遇到问题 出现问题是因为我正在使用python decouple library https pypi python org pypi python decouple 我使用它是为了不暴露
  • 如何获取当前滑动窗口的最大时间戳

    我正在使用 X 大小和 Y 周期的滑动时间窗口 为了标记每个窗口的输出 我想获取PCollection当前窗口的时间戳 PCollection
  • MySQL存储过程中是否有列表数据类型,或者模拟它们的方法?

    我想在 MySQL 中创建一个以列表作为参数的存储过程 例如 假设我希望能够在一次调用中为一个项目设置多个标签 那么我想要做的就是定义一个过程 该过程接受该项目的 ID 和要设置的标签列表 但是 我似乎找不到任何方法来做到这一点 据我所知
  • 仅大小写不同的 C# 自动实现属性和局部变量的最佳实践?

    让我举一个例子 public class MyClass public string MyProperty get set public MyClass string myProperty MyProperty myProperty bad
  • 使用pySNMP编写SNMP代理(适用于OpenNMS)

    我正在尝试编写一个 python SNMP 代理 我可以将其嵌入到我的 python 应用程序中 以便可以通过 OpenNMS 远程监控该应用程序 OpenNMS 期望 Agent 实现HOST RESOURCES MIB查询两个字段hrS
  • 如何禁用 ASP.NET MVC url 路由

    只是想知道如何在 asp net MVC 中禁用 URL 重写 我不需要在我的应用程序中重写 URL 并且想将其关闭 原因 我知道 url 重写使用反射 并且希望通过避免它来节省一些 cpu 周期 谢谢 如果您担心性能 那就不用担心 尽管使
  • 在抽屉式菜单的页脚中添加按钮

    我想在抽屉菜单下添加这些按钮 这些是我的 xml 文件 布局 activity main
  • Firebase 中的独特属性

    我有一个包含类别的 IOS 应用程序 我在 Firebase 上的存储如下所示 root Categories key color name sum Expenses key amount category date description
  • Python pynput - 程序在启动时滞后

    所以我一直在尝试制作一个简单的程序 在单击鼠标右键时 使鼠标以 0 5 秒的间隔单击左键 3 次 然而 当我启动该程序并右键单击时 该程序会按照指示执行操作 但也会开始严重滞后约 25 秒 完成滞后后 我尝试关闭该程序 它冻结了 迫使我通过
  • 延长铁锈的使用寿命

    我有一些正在处理的代码 这是一个小辅助函数 应该返回一个Vec lt str gt 到调用函数 不过 我似乎无法正确地度过一生 这是代码片段 fn take symbol lt a gt ch a str current a mut Str