在浏览Serde源代码时,我遇到了该missing_field
函数:
/// Report that the struct has a field that wasn't deserialized
fn missing_field<V>(&mut self, field: &'static str) -> Result<V, Self::Error>
where V: Deserialize,
{
Err(Error::missing_field(field))
}
为什么这有用?Result
如果无条件返回a,为什么还要返回Err
?
因为您不包括该函数的上下文:
pub trait MapVisitor {
// ...
fn missing_field<V>(&mut self, field: &'static str) -> Result<V, Self::Error>
where V: Deserialize,
{
Err(Error::missing_field(field))
}
}
这是默认的特征方法。每种实现此特征的类型如果没有做任何特殊的事情,都可以免费获得此方法,但可以选择重新实现它。大概大多数实现都不会实现该方法,但它也可能是理智的默认设置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句