Generics 从新文件返回泛型结构
我想返回一个泛型结构。我的想法是,我希望按照标准将实际实现输出到STDIN,但出于测试目的,我希望用向量或其他东西来替换它,以便可以轻松地测试输出。到目前为止,我的解决方案是:Generics 从新文件返回泛型结构,generics,rust,Generics,Rust,我想返回一个泛型结构。我的想法是,我希望按照标准将实际实现输出到STDIN,但出于测试目的,我希望用向量或其他东西来替换它,以便可以轻松地测试输出。到目前为止,我的解决方案是: #[derive(Debug)] pub struct Sender<R, W> { pub reader: R, pub writer: W, } #[derive(Debug)] pub struct Sender<R, W> { pub reader: R,
#[derive(Debug)]
pub struct Sender<R, W> {
pub reader: R,
pub writer: W,
}
#[derive(Debug)]
pub struct Sender<R, W> {
pub reader: R,
pub writer: W,
}
impl<R, W> Sender<R, W> {
pub fn new<R, W>(reader: R, writer: W) -> Sender<R, W> {
Sender {
reader: R,
writer: W,
}
}
}
这不起作用,因为new
声明了不同的(但名称相同!)R
和W
有没有一种方法不需要我创建两个不同的
新的函数,一个用于内存读/写,另一个用于STDIN读/写?我想你可能误解了初始化结构所用的语法-就目前的情况而言,您的函数试图将结构的读写器和写写器字段设置为R
和W
,而不是您要传递的参数
应该是这样的:
impl<R, W> Sender<R, W> {
pub fn new(reader: R, writer: W) -> Sender<R, W> {
Sender {
reader: reader, // field name on the left, value on the right
writer: writer,
}
}
}
impl发送器{
发布fn新(读者:R,作者:W)->发件人{
寄件人{
reader:reader,//左边是字段名,右边是值
作者:作者,,
}
}
}
因为struct字段和参数具有相同的名称:
impl发送器{
发布fn新(读者:R,作者:W)->发件人{
发送者{读者,作者}
}
}
如果你还没有读过,我建议你读一读——它涵盖了所有这些东西
impl<R, W> Sender<R, W> {
pub fn new(reader: R, writer: W) -> Sender<R, W> {
Sender { reader, writer }
}
}