如何给出多个功能参数相同的类型?

时间:2017-12-19 19:16:49

标签: rust

在Go中声明一个函数时,可以给出多个相同类型的参数:

func test(a, b, c uint8) { }

Rust是否有办法为多个参数提供相同的类型,而无需手动明确指定每个参数?

这似乎不起作用:

fn test(a, b, c: u8) { }

1 个答案:

答案 0 :(得分:6)

简单地:

fn test(a: u8, b: u8, c: u8) {}

如果您想单独为每个语法命名,则没有可用的快捷语法。

如果您不关心个人姓名:

fn test(a: &[u8; 3]) {}

如果物品的数量应该是动态的:

fn test(a: &[u8]) {}

我会注意到,就个人而言,我通常会发现在没有命名参数的情况下,将相同类型的多个参数传递给函数的想法是一个相当脆弱的设计。

除非这些参数可以互换,在这种情况下交换它们并不重要,我建议避免使用这些函数签名。而且,通过扩展,我认为不需要特殊的语法来适应脆弱性。

作为交换,Rust具有元组结构:struct X(u8);,允许人们快速掀起新类型来代表新概念,而不是陷入原始的痴迷。