Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 如何转换选项<&;T>;选择<;T>;?_Rust - Fatal编程技术网

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问题