引数に基づいていくつかのポートを作成していますが、ポートは次の関数に渡すのに十分長くは存続しません。より良いことに、これを静的にディスパッチするために適応させる方法は?Rustで入力ソースを切り替える最も良い方法
fn init<'a>(matches: getopts::Matches) {
let in_port: &mut Read = match matches.opt_str("i") {
Some(filename) => &mut File::open(filename).expect("Couldn't open input file.") as &mut Read,
_ => &mut io::stdin() as &mut Read,
};
let out_port: &mut Write = match matches.opt_str("o") {
Some(filename) => &mut File::create(filename).expect("Couln't open output file") as &mut Write,
_ => &mut io::stdout() as &mut Write,
};
run(in_port, out_port);
}
が意図A' ' '雑多ですか? –