我应该写:
impl<'a> From<&'a Type> for OtherType
Run Code Online (Sandbox Code Playgroud)
或者应该是
impl From<Type> for OtherType
Run Code Online (Sandbox Code Playgroud)
我很难找到答案,也许是因为我的词汇失败。我真的并不特别关心论证的参考性/价值性。
在 C++ 中,我将在值上定义函数 over/method 并在 const 引用上调用它。
impl Trait<Type>是否有从to的自动推导impl<'a> Trait<&'a Type>?
\n\n\nRust 的 From/TryFrom 实现应该定位引用还是值?
\n
是的,他们应该这样做。
\n\n这里没有任何技巧:实现特征来转换您拥有的任何类型。如果您有 a String,请实现它以从Strings 进行转换。如果您有 a &str,请实现它以从&strs 进行转换。如果两者都有,请同时实施。
\n\n\n\n
impl Trait<Type>是否有从to的自动推导impl<'a> Trait<&'a Type>?
不,这是有充分理由的。例如,考虑以下转换:
\n\nstruct Filename(String);\n\nimpl From<String> for Filename {\n fn from(value: String) -> Filename {\n Filename(value)\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n编译器没有明显正确的方法来实现对String. 但是,您可以自己实现:
impl<'a> From<&'a str> for Filename {\n fn from(value: &'a str) -> Filename {\n String::into(value.to_owned())\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n如果您无法使用传入的分配,则没有太多理由按值接受参数,因此您不妨接受引用。然而,我想说的是,这种转换不太常见From,但 \xe2\x80\x94 并非闻所未闻。
| 归档时间: |
|
| 查看次数: |
2944 次 |
| 最近记录: |