相关疑难解决方法(0)

为什么以及何时应该在块的末尾使用逗号?

在代码块可以以逗号结束或不以逗号结束时,Rust中存在许多情况.例如:

enum WithoutComma 
{
    x,
    y
}
Run Code Online (Sandbox Code Playgroud)

要么

enum WithComma
{
    x,
    y,
}
Run Code Online (Sandbox Code Playgroud)

还有其他"匹配"等的例子.似乎两种变体都会产生相同的结果.现在我知道放置或删除逗号更改行为的唯一情况,它是1元素元组声明(但它不是块):

let just_int = (5);
let tuple = (5,);
Run Code Online (Sandbox Code Playgroud)

问题是为什么在块的末尾可以使用逗号?为什么语言中存在这种二元论,其原因是什么?

syntax idioms rust

5
推荐指数
1
解决办法
659
查看次数

为什么我们使用方括号而不是定义它的括号来调用 vec 宏?

我正在学习 Rust 宏,并且在使用vec. 实现的源代码vec!

macro_rules! vec {
    ($elem:expr; $n:expr) => (
        $crate::vec::from_elem($elem, $n)
    );
    ($($x:expr),*) => (
        <[_]>::into_vec(box [$($x),*])
    );
    ($($x:expr,)*) => (vec![$($x),*])
}
Run Code Online (Sandbox Code Playgroud)

让我们忘记使用它的标准方法:

let v0 = vec![1, 2, 3];
Run Code Online (Sandbox Code Playgroud)

如果我们查看源代码,我们不应该像下面那样使用它吗?

let v1 = vec!(3; 1);
let v2 = vec!(1, 2, 3); 
Run Code Online (Sandbox Code Playgroud)

为什么我们使用[]而不是()inv1v2与 进行比较v0

macros rust

5
推荐指数
1
解决办法
966
查看次数

标签 统计

rust ×2

idioms ×1

macros ×1

syntax ×1