【发布时间】:2014-09-25 15:43:33
【问题描述】:
我想以通用方式检查 C API 的返回码,并且结果必须不包含 libc::c_int 等 C 类型。有什么方法可以写出类似的函数
fn check<S: PartialOrd + std::num::Zero, T> (x: S) -> Option<T> {
if std::num::zero::<S>() <= x { Some(x as T) }
else { None }
}
当我确定S 和T 是check() 的所有用法的整数类型时?编译器拒绝我的代码抱怨error: non-scalar cast: `S` as `T`
【问题讨论】:
标签: casting rust parametric-polymorphism