如何简化这段代码(请不要问它是用来做什么的):
pub fn f<'a>(p: *mut Option<u64>) -> Option<&'a mut u64> {
match unsafe { &mut *(p.add(5)) } {
Some(p) => Some(p),
None => None,
}
}
我期望将指向Option
的指针转换为内部带有引用的Option
。它以这种方式完美地工作,但是有一个明显的冗余。我已经有了Option
,创建一个新的是多余的步骤。我可以把指针转换成结构体吗?
1条答案
按热度按时间bakd9h0s1#
首先,这个功能不安全。如果存在另一个对
p
+ 5的引用,或者它不是一个初始化的或有效的Option<u64>
,则不能调用它。您可以简单地解引用该值,然后对其调用
as_mut
。