在Rust中返回具有内部引用的对象
我目前正在与rusqlite合作。我希望有一个实现Iterator
并返回应用程序结构的对象,该对象的值由DB查询中的行构造。
显而易见的方法是在rusqlite API中围绕Rows
或MappedRows
对象包装一个结构。然而,这些类型中的每一个都包含对它们派生的Statement
对象的引用,而Statement
又引用Connection
。因此,假设只有一个长寿命的Connection
,Statement
对象必须至少保留我包装的任何Rows
对象的生命周期。
我知道,由于担心对象被移动,通常不允许在对象内有内部引用。但我能想到的构造这段代码的唯一方法是将Statement
保存在我在Rows
对象周围使用的相同包装中。我该如何处理?
在Rust中返回具有内部引用的对象的更多相关文章
-
在Swift代码中使用Rust库的最佳方式是什么?
我希望能够在Swift中使用Rust对象,当Rust对象发生变化或事件发生时,通知Swift,并利用Swift的ARC来保护Rust对象。到目前为止,我想到的是为Rust对象编写一个简单的CAPI,然后为CAPI编写一个Objective-C包装器,然后将其导出为Swift,如下所示:有没有一个乏味的方式?可以自动生成包装函数和C头文件的东西?唯一合理的方法是将“C”你的Rust接口外部编写一个简单的.h文件,并为它们创建一个简单的ObjC类包装。然后弹出#import进入目标C到Swift绑定头,这一切
-
PHP7内核之Reference详解
这篇文章主要介绍了PHP7内核之Reference,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
-
Kotlin密封类Jackson在记忆中的不同位置
最近,我开始使用Kotlin,在使用Spring测试JSON映射时遇到了一些奇怪的行为value=插孔集成测试$SealedObject@6727e0cd<-------------结果(弹簧)=千斤顶集成测试$SealedObject@6727e0cd<;-----相同内存位置结果测试=插孔集成测试$SealedObject@3c8e3f98正如您所看到的,spring-objectmapper返回的值在内存中具有与基值相同的引用。但自己创建的objectmapper返回的对象在内存中的不同位置
-
循环通用引用(auto&;&;)到元组的基于范围的引用语义
为什么在以下代码中edges被解释为对for中元组的引用:我知道在元组上调用.begin()是无效的。我知道autol=[&]{for{/*...*/}};l;是有效的,可能会提供我想要的东西。但我的问题是,为什么我对edges的迭代返回引用而不是值。我从相应的错误中了解到:没有用于调用“begin”的匹配函数我的最低理解水平要求将auto&&转换为auto应该编译,但事实并非如此。我还尝试使用std::apply;代替for循环,但无法提取i和j。
-
当Rust中的断言失败时,如何以消耗局部变量的方式打印数据?
我有一些测试,其中包含一些保存一些重要数据的变量,我想在断言失败时打印它们的数据。获取所需的数据会消耗变量,因此打印代码必须拥有这些变量。在本例中,我希望在断言失败时调用dump_foo_data:我可以通过使dump_foo_data不返回和恐慌来做出非常糟糕的解决方案:然后,我没有使用assert!实际上,我有不止一个像f这样的变量需要从中转储数据,所以在每次检查中列出一个相关的局部变量不是很好。在Rust有什么好办法吗?
-
返回Rust中的结果类型
我对Rust很陌生,因为我决定直接从Python跳出来挑战自己。我无法确定Result返回类型,所以我想也许在这里我会找到一些帮助。我目前正在编写一个实现输入(消息)功能的程序,如下所示:。代码运行良好,但我正试图找出如何使用std::result::Result而不是io::Result,只是因为。我尝试将其转换为:但是编译器告诉我问号运算符不能将其错误转换为std::fmt::Error。我只是想知道如何正确使用Result作为返回类型。我应该指定Err返回吗?我需要一个关于到底发生了什么的清晰解释。
-
在Rust中返回具有内部引用的对象
我目前正在与rusqlite合作。显而易见的方法是在rusqliteAPI中围绕Rows或MappedRows对象包装一个结构。然而,这些类型中的每一个都包含对它们派生的Statement对象的引用,而Statement又引用Connection。因此,假设只有一个长寿命的Connection,Statement对象必须至少保留我包装的任何Rows对象的生命周期。我知道,由于担心对象被移动,通常不允许在对象内有内部引用。但我能想到的构造这段代码的唯一方法是将Statement保存在我在Rows对象周围使用
-
顺序一致的不同定义是如何相互关联的?
我看到的主要解释是:1.它为您提供了获取和释放关系的同步,并且所有线程的所有隔离都以相同的顺序发生。它可以防止当前线程上的所有内存读取或写入与围栏另一侧的内存重新排序。这些定义是什么意思?我发现同步是一种思考获取和释放的有用方式,seq_cst是否也有一种类似优雅的思维模式?
-
c – Rust中的侵入式算法等价物
所以我不确定如何将这些设计模式转换为在C/C++中习惯的Rust.任何有成功的人都了解了这一点?解决方法Rust想让你考虑所有权和生命周期.谁拥有会员,他们会活多久?在Dlist的问题上,答案是“容器”.使用入侵算法没有明确的答案.一个列表的成员可能会在另一个列表中重用,而其他列表的成员可能被第一个列表破坏.最终你可能想使用引用计数.
-
多线程 – Rust为线程或函数创建超时的正确方法是什么?
这是我的代码:如果连接未在N秒内完成,如何创建线程将被终止或终止的情况?
随机推荐
-
如何扩展ATmega324PB微控制器的以下宏寄存器?
我目前正在学习嵌入式,我有以下练习:展开以下宏寄存器:如果有人解决了这个问题,我将不胜感激,以便将来参考
-
Python将ONNX运行时设置为返回张量而不是numpy数组
在python中,我正在加载预定义的模型:然后我加载一些数据并运行它:到目前为止,它仍在正常工作,但我希望它默认返回Tensor列表,而不是numpy数组。我对ONNX和PyTorch都是新手,我觉得这是我在这里缺少的基本内容。这将使转换中的一些开销相同。
-
在macOS上的终端中使用Shell查找文件中的单词
我有一个文本文件,其中有一行:我需要找到ID并将其提取到变量中。我想出了一个RexEx模式:但它似乎对我尝试过的任何东西都不起作用:grep、sed——不管怎样。我的一个尝试是:我为这样一个看似愚蠢的问题感到抱歉,但我在互联网上找不到任何东西:我在SO和SE上读了几十个类似的问题,并在谷歌上搜索了几个教程,但仍然无法找到答案。欢迎提供任何指导!
-
react-chartjs-2甜甜圈图中只有标题未更新
我正在使用react-chartjs-2在我的网站中实现甜甜圈图。下面是我用来呈现图表的代码。我将甜甜圈图的详细信息从父组件传递到子组件,所有道具都正确传递。当我在beforeDraw函数外部记录props.title时,它会记录正确的值,但当我在beforeDraw函数内部记录props.title时,它将记录标题的前一个值,从而呈现标题的前值。我在这里做错了什么?
-
如何在tkinter中使用Python生成器函数?
生成器函数承诺使某些代码更易于编写。但我并不总是知道如何使用它们。假设我有一个斐波那契生成器函数fib(),我想要一个显示第一个结果的tkinter应用程序。当我点击“下一步”按钮时,它会显示第二个数字,依此类推。我如何构建应用程序来实现这一点?我可能需要在线程中运行生成器。但如何将其连接回GUI?
-
如何为每次提交将存储库历史记录拆分为一行?
我正在尝试获取存储库的历史记录,但结果仅以单行文本的形式返回给我。
-
尝试在颤振项目上初始化Firebase时出错
当尝试在我的颤振项目上初始化firebase时,我收到了这个错误有人知道我能做什么吗?应用程序分级Gradle插件Gradle项目颤振相关性我已经将firebase设置为Google文档已经在另一个模拟器上尝试过,已经尝试过创建一个全新的模拟器,已经在不同的设备上尝试过了,已经尝试了特定版本的firebase,已经尝试添加但没有任何效果,已经在youtube上看到了关于它的每一个视频,该应用程序在android和iOS两个平台上都抛出了这个错误
-
在unix中基于当前日期添加新列
我试图在unix中基于时间戳列在最后一个单元格中添加一个状态列。我不确定如何继续。
-
麦克斯·蒙特利。我一直得到UncaughtReferenceError:当我在终端中写入node-v时,节点未定义
如果这是您应该知道的,请确认:我已将所有shell更改为默认为zsh。当我在终端中写入node-v时,我一直收到“UncaughtReferenceError:nodeisnotdefined”。但它显示节点已安装。我是个新手,在这方面经验不足。
-
如何在前端单击按钮时调用后端中的函数?
那么如何在后端添加一个新的端点,点击按钮调用这个函数。