在中$e:expr,expr称为片段说明符。它告诉解析器该参数$e期望什么样的令牌。Rust提供了多种片段说明符,使输入非常灵活。
说明符 | 描述 | 例子 |
---|---|---|
ident | 识别码 | x, foo |
path | 合格名称 | std::collection::HashSet, Vec::new |
ty | 类型 | i32,&T,Vec<(char, String)> |
expr | 表达 | 2+2,f(42),if true { 1 } else { 2 } |
pat | 模式 | _,c @ 'a' ... 'z',(true, &x),Badger { age, .. } |
stmt | 声明 | let x = 3, return 42 |
block | 括号分隔的块 | { foo(); bar(); }, { x(); y(); z() } |
item | 项目 | fn foo() {},struct Bar;,use std::io; |
meta | 属性内部 | cfg!(windows), doc="comment" |
tt | 令牌树 | +,foo,5,[?!(???)] |
请注意,文档注释/// comment的处理方式与#[doc="comment"]宏相同。
macro_rules! declare_const_option_type { ( $(#[$attr:meta])* const $name:ident: $ty:ty as optional; ) => { $(#[$attr])* const $name: Option<$ty> = None; } } declare_const_option_type! { ///一些文档评论 const OPT_INT: i32 as optional; } // 以上内容将扩展为: #[doc="some doc comment"] const OPT_INT: Option<i32> = None;
某些片段说明符要求标记,它后面必须是一个受限制的集合之一,称为“跟随集合”。这为Rust的语法发展提供了一定的灵活性,而又不会破坏现有的宏。
说明符 | 按照设定 |
---|---|
expr, stmt | => , ; |
ty, path | => , = | ; : > [ { as where |
pat | => , = | if in |
ident,block,item,meta,tt | 任何令牌 |
macro_rules! invalid_macro { ($e:expr + $f:expr) => { $e + $f }; // ^ // +不在expr的跟随集中, // 因此编译器将不接受此宏定义。 ($($e:expr)/+) => { $($e)/+ }; // ^ // 分隔符`/`不在`expr`的跟随集中 // 因此编译器将不接受此宏定义。 }
说我想打印: 这是正确的。这: 或者这个: ? 事情是在其他地方,所以我遇到了这样的讨论: -即使ch变为无符号字符,代码的行为也不是由C标准定义的。这是因为无符号字符被提升为int(在普通的C实现中),所以int被传递给printf的说明符%u。但是,%u需要一个无符号int,所以类型不匹配,并且C标准没有定义该行为 -你的评论不正确。C11标准规定转换说明符必须与函数参数本身的类型相同,而不是
问题内容: 是什么使图像变成1x,2x或3x(@ 1x,@ 2x,@ 3x)?如何制作3x图像? 问题答案: iOS在其坐标系中使用点而不是像素。在原始的非视网膜设备(iPhone,iPhone3G,iPhone3GS,iPad,iPad 2,iPadmini和早期的iPodtouch)中,坐标系中的一个点映射到设备屏幕上的一个像素。那时,生活很简单,您为应用程序提供了映射到点大小的图像,并且一切
DoitPHP的CLI模式是指DoitPHP在命令行下运行。由于在命令行下,即不支持$_POST,也不支持$_GET等,所以注定了CLI模式下运行DoitPHP框架编写的程序有所不同。 首先、入口文件内容不一样。非CLI模式运行下的入口文件(默认index.php)的代码内容为: use doitphp\App; define('IN_DOIT', true); /** * 定义项目所在路径(根
本文向大家介绍Fortran 分配格式说明符,包括了Fortran 分配格式说明符的使用技巧和注意事项,需要的朋友参考一下 示例 在Fortran 95之前,可以将分配的格式用于输入或输出。考虑 该assign语句将语句标签分配给整数变量。以后将此整数变量用作print语句中的格式说明符。 在Fortran 95中删除了这种格式说明符分配。相反,更现代的代码可以使用其他形式的执行流控制 或字符变量
本文向大家介绍Django Model中字段(field)的各种选项说明,包括了Django Model中字段(field)的各种选项说明的使用技巧和注意事项,需要的朋友参考一下 字段与选项 CharField() 字符字段 max_length = xxx or None # 必选项 blank = True 和 default = '' # 如果不是必填项,可以设置 unique = True