Rust 如何转换选项<&;T>;选择<;T>;?
我不知道如何将Rust 如何转换选项<&;T>;选择<;T>;?,rust,Rust,我不知道如何将选项转换为选项。我在用箱子。这是我的代码: let body: Option<Body> = request.body(); let body:Option=request.body(); 但是我得到了不匹配的类型错误。如何将选项转换为?当您有选项时,您实际上没有对象本身。你可能有一个对所说对象的引用。显然,如果不在“引用”和“完全拥有的对象”之间添加一些技巧,就无法从“引用”转换为“完全拥有的对象”。您当前只有指向对象的指针,而不是对象本身,因此,您唯一的办法就是
选项
转换为选项
。我在用箱子。这是我的代码:
let body: Option<Body> = request.body();
let body:Option=request.body();
但是我得到了
不匹配的类型
错误。如何将选项
转换为
?当您有选项
时,您实际上没有对象本身。你可能有一个对所说对象的引用。显然,如果不在“引用”和“完全拥有的对象”之间添加一些技巧,就无法从“引用”转换为“完全拥有的对象”。您当前只有指向对象的指针,而不是对象本身,因此,您唯一的办法就是找到一种复制它的方法
如果T
实现了Clone
,理论上你可以Clone()
你的对象,并把它叫停一天-这将把你的选项变成选项,代价是一个完整的内存拷贝。从类型签名判断,这可能是一个hyper
问题,但是Body
并没有实现这样的特性
所有其他解决方案都将失败:
- 您不能在对象上创建一个方法来对其进行分解并返回
self
,因为这将使您在&T
- 你没有办法直接从
&T
转到T
,因为你只有一张借阅卡
您的问题不包含选项,我们无法回答您,但通常尝试回答以下问题:为什么您需要一个选项
?这可能是对所有权的误解,也可能是XY问题