Rust 很难将匹配项聚合到|

Rust 很难将匹配项聚合到|,rust,match,Rust,Match,我正在尝试打包列数据,以便将其发送到服务器 我希望能够将任何合适的向量传递给发送函数,所以我这样做了(简短版本): enum列{ 短(Vec), Int(Vec), } impl列{ fn作为字节(&mut self)->和[u8]{ 使用列::*;//行 匹配自我{ Short(vec)=>unsafe{(vec.align_to::()).1},//为什么是::? Int(vec)=>unsafe{(vec.align_to::()).1}, } } } 这样行。但是,如果我使用或管道重写

我正在尝试打包列数据,以便将其发送到服务器

我希望能够将任何合适的向量传递给发送函数,所以我这样做了(简短版本):

enum列{
短(Vec),
Int(Vec),
}
impl列{
fn作为字节(&mut self)->和[u8]{
使用列::*;//行
匹配自我{
Short(vec)=>unsafe{(vec.align_to::()).1},//为什么是::?
Int(vec)=>unsafe{(vec.align_to::()).1},
}
}
}
这样行。但是,如果我使用或管道重写匹配:

impl列{
fn作为字节简洁(&mut self)->和[u8]{
使用列::*;
匹配自我{
Short(vec)| Int(vec)=>unsafe{(vec.align_to::()).1},
}
}
}
我明白了

预期的
i16
,发现的
i32


简短的编写与显式的编写有何不同?Rust是一种静态类型的语言,因此每个对象在编译时都有一个已知的类型。上一个示例中的匹配相当于以下代码:

让vec:vec=匹配自身{
短(v)| Int(v)=>v,
};
不安全{vec.align_to()}.1

那么
vec
应该有什么类型?此外,
align_to
有两种不同的路径,即
::align_to
::align_to
,它们可能具有不同的功能实现。

Rust是一种静态类型的语言,因此每个对象在编译时都有一个已知的类型。上一个示例中的匹配相当于以下代码:

让vec:vec=匹配自身{
短(v)| Int(v)=>v,
};
不安全{vec.align_to()}.1

那么
vec
应该有什么类型?此外,
align_to
有两种不同的路径,即
::align_to
::align_to
,这两种路径可能具有不同的功能实现。

分支中的
vec
是否必须符合单个类型?不,我想根据其类型进行转换,看起来,
align_to
对我所需要的大多数向量类型都起作用。我知道你想做什么,但我不确定锈蚀是否很酷,因为
vec
是一个分支中的几种类型之一。它将希望以一种方式编译代码,并且只以一种方式编译。在其他情况下,代码可能看起来相同,但编译后的版本将非常不同。在分支中,
vec
是否必须符合单个类型?不,我想根据它的类型进行转换,只是看起来,
align_to
对大多数向量类型都有效我需要我知道你要做什么,但我不确定锈蚀是否酷,因为
vec
是单个分支中的几种类型之一。它将希望以一种方式编译代码,并且只以一种方式编译。在其他情况下,代码可能看起来完全相同,但编译后的版本将非常不同。我想我能理解。我认为在匹配时会涉及到某种形式的泛型,一遍又一遍地写同一行是很奇怪的。你能说出我的名字或指给我看吗???语法?我找不到它,它只是一个占位符,没有这样的语法,仅供参考。有效的等效语法应该是
Vec
(尽管仍然编译时出错)。也许我的设计有缺陷。我希望用户能够根据数据库模式传递不同类型的列,并且该方法将打包并发送它们。所以,我想我会使用
列:Vec
,但我想我无法更好地理解。我认为在匹配时会涉及到某种形式的泛型,一遍又一遍地写同一行是很奇怪的。你能说出我的名字或指给我看吗???语法?我找不到它,它只是一个占位符,没有这样的语法,仅供参考。有效的等效语法应该是
Vec
(尽管仍然编译时出错)。也许我的设计有缺陷。我希望用户能够根据数据库模式传递不同类型的列,并且该方法将打包并发送它们。所以我想我将使用
列:Vec
,找不出更好的