Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 什么是'@';你在生锈吗?_Rust - Fatal编程技术网

Rust 什么是'@';你在生锈吗?

Rust 什么是'@';你在生锈吗?,rust,Rust,我忘记指定参数的类型,错误消息如下: 错误:应为`:`或`@`中的一个,找到`)` -->src/main.rs:2:12 | 2 | fn func(arg) |^此处应为“:”或“@”之一 这就提出了一个问题:你能用@符号做什么?我不记得读过关于在任何事情上使用@符号的文章。我也在谷歌上搜索了一下,什么也没找到。@做什么?您可以使用@符号将图案绑定到名称。作为: 防锈作业(前提是完整的)和。在@的特定情况下,这不是很有用,因为您已经可以命名匹配的参数。但是,为了完整起见,以下是一个示例:

我忘记指定参数的类型,错误消息如下:

错误:应为`:`或`@`中的一个,找到`)`
-->src/main.rs:2:12
|
2 | fn func(arg)
|^此处应为“:”或“@”之一

这就提出了一个问题:你能用
@
符号做什么?我不记得读过关于在任何事情上使用
@
符号的文章。我也在谷歌上搜索了一下,什么也没找到。
@
做什么?

您可以使用
@
符号将图案绑定到名称。作为:

防锈作业(前提是完整的)和。在
@
的特定情况下,这不是很有用,因为您已经可以命名匹配的参数。但是,为了完整起见,以下是一个示例:

enum MyEnum {
    TheOnlyCase(u8),
}

fn my_fn(x @ MyEnum::TheOnlyCase(_): MyEnum) {}

“这是我的,”谢普马斯特,太酷了,谢谢!当我阅读时,我想它终于为我点击了——但我说带
@
的模式绑定是警卫的简写,对吗?例如,
E如果1@SeanAllred,那肯定是一种看待它的方式。在我给出的例子中,你基本上是正确的。我唯一要提到的是,模式可以嵌套,让我们将结构的不同部分绑定到不同的名称:
a@Some(p@Point{x=5,…})
现在
a
有type
选项
p
有type
enum MyEnum {
    TheOnlyCase(u8),
}

fn my_fn(x @ MyEnum::TheOnlyCase(_): MyEnum) {}