struct - 如何从结构上的 getter 方法返回 Option<_, _>?
问题描述
我已将泛型应用于结构,并希望Option<_, _>
使用在结构上实现的 getter 方法以类型获取其输出。
struct Point<T, U> {
x: T,
y: U,
}
impl<T, U> Point<T, U> {
fn x(&self) -> Option<T, U> {
let z = &self.x;
z.get(5);
}
}
fn main() {
let p = Point { x: 5, y: 10.0 };
println!("p.x = {}", p.x());
}
(游乐场)
上述代码的输出是
error[E0107]: wrong number of type arguments: expected 1, found 2
--> src/main.rs:6:30
|
6 | fn x(&self) -> Option<T, U> {
| ^ unexpected type argument
解决方案
花时间阅读您正在使用的类型的文档。Option
只有一种泛型类型:
pub enum Option<T> {
None,
Some(T),
}
作为有根据的猜测,您可能打算使用tuple:
fn x(&self) -> Option<(T, U)> {
unimplemented!()
}
其他可能性是Result
:
fn x(&self) -> Result<T, U> {
unimplemented!()
}
或者也许Either
:
fn x(&self) -> either::Either<T, U> {
unimplemented!()
}
也可以看看:
您的代码有许多问题会阻止它编译:
- 您不能在不执行某种复制/克隆的情况下返回拥有的
T
或U
类型的方法。&self
- 你不能
get
在没有某种特征边界的情况下调用泛型类型的方法 ()。该方法似乎甚至没有定义。 - 您不能使用
Display
格式化程序格式化元组。
推荐阅读
- amazon-web-services - Dockerfile 中的 AWS 凭证
- c# - 在 ICollection 中绑定附加元素
不破坏 EF EDMX - http-live-streaming - MPEG-DASH 使用编码流缓冲区实时流式传输
- java - 使用 Firebase 和 Android 的通知
- slideshow - w3.css 幻灯片:如何在自动幻灯片中添加放大图像
- javascript - 将固定尺寸的物品放入固定尺寸的父代中,并留下不适合的物品
- ruby - Rails:在任何源中都找不到 concurrent-ruby-1.0.5 (Bundler::GemNotFound)
- firebase - Firebase Cloud Functions 使用 NPM 8 部署异步函数
- python - Tensorflow:无法使用数据集 API 创建具有相应标签的数据集
- javascript - JavaScript:是否可以将 JavaScript 变量作为文件发布