【问题标题】:How do I implement Into<MyType> for &str如何为 &str 实现 Into<MyType>
【发布时间】:2015-07-29 04:43:12
【问题描述】:

我有一个自定义类型pub struct Foo,我希望能够将字符串转换为Foo 类型。我正在尝试做impl&lt;'a&gt; Into&lt;Foo&gt; for &amp;'a str,但我从this answer 知道我做不到。我还有哪些其他选择?

对于上下文,我正在尝试做类似的事情

trait Foo {
    type ArgType;
    fn new<I: Into<Self::ArgType>>(arg: I) -> Self;
}

struct MyType;
impl Into<MyType> for str {
    fn into(self) -> MyType { MyType }
}

struct Bar;
impl Foo for Bar {
    type ArgType = MyType;
    fn new<I: Into<MyType>>(arg: I) -> Bar { Bar }
}

【问题讨论】:

  • (对于从字符串转换,您通常应该使用 FromStr 特征;然后方法 str.parse() 也将能够生成您的类型。如果您有可以从字符串转换的类型如果没有错误的可能性,请忽略此建议。)
  • 例如,我希望new 能够接受转换为MyType 的参数。重点不是从字符串转换,而是从将字符串转换为我的类型

标签: rust


【解决方案1】:

正如 Chris Morgan 所说,FromStr 是一个选项,From&lt;&amp;str&gt; 是另一个选项。后者也会为您提供&amp;strInto&lt;Foo&gt; 的内置实现(因为有Into&lt;U&gt; For T where U: From&lt;T&gt; 的一揽子实现)。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 2016-11-05
  • 1970-01-01
  • 2014-07-26
  • 2019-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多