如何返回使用特征作为类型/接口的值?

时间:2017-10-29 17:02:43

标签: rust traits

具体来说,我想将File::open()io::Read用作use std::io::{self, Error}; use std::fs::File; struct Config<T: io::Read> { source: T, dest: T, } impl<T> Config<T> where T: io::Read, { fn new(args: &[String]) -> Result<Config, Box<Error>> { if args.len() == 1 { Ok(Config { source: io::stdin(), dest: io::stdout(), }) } else if args.len() == 2 { Ok(Config { source: File::open(args[1])?, dest: io::stdout(), }) } } } fn main() { let mut config = Config::new(&[""]); }

我是Rust的新手,可能会遗漏一些概念,但我无法找到有关如何返回包含特征的结构的任何文档。

我想要实现的例子:

error[E0243]: wrong number of type arguments: expected 1, found 0
  --> src/main.rs:13:39
   |
13 |     fn new(args: &[String]) -> Result<Config, Box<Error>> {
   |                                       ^^^^^^ expected 1 type argument

这给了我以下错误:

{{1}}

0 个答案:

没有答案