我希望创建一个trait
,强制某些函数的返回类型为Result<T, E>
,但我无法确定定义此内容的语法。
我已经做到了这一步:
pub type NamedResult<T, E> = Result<T, E>;
pub trait Foo {
fn bar<T, E>(&self) -> NamedResult<T, E>;
}
pub struct Thing;
impl Foo for Thing {
pub fn bar<T, E>(&self) -> NamedResult<T, E> {
Ok(78i32)
}
}
产生以下错误:
error: mismatched types:
expected 'T',
found 'i32'
(expected type parameter, found i32) [E0308]
那么我接着尝试:
pub fn bar<i32, String>(&self) -> NamedResult<i32, String> {
Ok(78i32)
}
并收到以下错误:
error: user-defined types or type parameters cannot shadow the primitive types [E0317]
如何使用正确的语法,让实现该特性的人在某些函数中返回Result<T, E>
类型?
NamedResult
?那部分完全是一个干扰项。 - Chris MorganNamedResult<T> = Result<T, Error>
,但在我得到第一批错误后,我就放弃了这种方式。 - nathansizemore