当 Option::unwrap_or_default 包含引用时,如何使用它?

Dyl*_*ler 7 rust

我有一个获取最后一个元素candle_series的类型Vec<Candle>,我尝试使用unwrap_or_default

self.candle_series.last().unwrap_or_default()
Run Code Online (Sandbox Code Playgroud)

但后来我得到这个错误:

self.candle_series.last().unwrap_or_default()
Run Code Online (Sandbox Code Playgroud)

如何获取unwrap_or_default结构而不是引用的行为?

我当前的解决方法是这样的,但它似乎不正确。如果正确,请告诉我:

self.candle_series.last().unwrap_or(&Candle::default())
Run Code Online (Sandbox Code Playgroud)

Mas*_*inn 4

如何获取unwrap_or_default结构而不是引用的行为?

您需要复制或移动引用(例如使用Option::cloned,假设您的结构是Clone),以便您的选项是Option<Candle>, 并且unwrap_or_default可以完成其工作。

我当前的解决方法是这样的,但它似乎不正确。

对我来说看起来不错,当然,Candle::new()如果您有这样的初始化程序,那么使用它可能会更短。