我不知道如何将Option <&T>转换为Option。
我使用reqwest。
这是我的代码:
let body: Option<Body> = request.body();
但是我收到mismatched type
错误。
如何将Option<&Body>
转换为<Option<Body>>
答案 0 :(得分:2)
拥有Option<&T>
时,实际上并没有 object 本身。您可能有对所述对象的引用。显然,如果没有中间的技巧,您将无法从“引用”转到“成熟的拥有的对象”。您目前只有对象的指针,而不是对象本身,因此,您唯一的办法就是找到一种方法来复制它。
如果T
实现了Clone
,则理论上您可以clone()
将对象命名为一天-这会将您的Option<&T>
变成Option<T>
完整内存副本的成本。从类型签名的角度来看,这可能是一个hyper
问题,而Body
并没有实现这种特征。
所有其他解决方案将失败:
self
,因为这会使您在&T
上拥有的借用无效&T
转到T