【发布时间】:2017-10-06 00:04:18
【问题描述】:
鉴于这个特点:
use std::io::{self, Read};
use std::fs::File;
pub trait Asset<D> {
fn load_data(path: &str) -> io::Result<D>
where
D: From<Vec<u8>>
{
let file = File::open(path)?;
let bytes_result: io::Result<Vec<u8>> = file.bytes().collect();
Ok(D::from(bytes_result?))
}
// many more methods...
}
load_data 方法仅在D 实现From<Vec<u8>> 时可用,这是有道理的。但是,我希望每个实现Asset<D> 的类型都有load_data,如果D 实现From<Vec<u8>>,那么它使用默认实现。否则,该类型必须自己实现 load_data。
【问题讨论】: