pointers - 如何将可以为空的原始指针转换为选项?
问题描述
我写了以下宏:
macro_rules! ptr_to_opt {
($p: expr) => {
if $p.is_null() {
None
} else {
Some($p)
}
};
}
这使我可以检查 a 中的原始指针match
:
match ptr_to_opt!(myRawPtr) {
Some(ptr) => { ... },
None => { ... },
}
是否有任何内置功能可以替换我的ptr_to_opt
宏?
编辑:
在将指针转换为引用的意义上,这个问题与这个问题不同as_ref
,而我想保留指针。
解决方案
是的,您可以使用NonNull::new
从. 如果你只想要一个(你可能不需要考虑它可以做指针可以做的所有事情),那么你可以用.Option<NonNull<T>>
*mut T
Option<*mut T>
NonNull
NonNull::as_ptr
推荐阅读
- apache-spark - 如何使用 Pyspark 从 mongodb 中仅提取特定行?
- javascript - 桌面通知仅适用于 Chrome 浏览器?
- arrays - “字符串”类型上不存在属性“地图”
- java - 如何使用 Java 从 Firebase 实时数据库中删除数据?
- python - 按日期对多个数据框中的列求和
- powershell - 如何在 PowerShell 中检索 IIS 网站的 SSL 证书
- php - 如何检查多维数组中是否存在两个值?
- jquery - onRemove 事件未触发
- python - 对 LSTM 模型的 Jacobian 使用梯度磁带 - Python
- svg - 如何在 C# 中将 .EMF 转换为 .SVG 文件