所以我有以下宏代码我正在尝试调试.我是从Rust Book的"The Deep end"一节中读到的.我重命名宏中的变量,以更密切地关注这篇文章.
我的目标是让程序打印出BCT程序的每一行.我很清楚这是编译器很重.
rustc给我的唯一错误是:
user@debian:~/rust/macros$ rustc --pretty expanded src/main.rs -Z unstable-options > src/main.precomp.rs
src/main.rs:151:34: 151:35 error: no rules expected the token `0`
src/main.rs:151 bct!(0, 1, 1, 1, 0, 0, 0; 1, 0);
Run Code Online (Sandbox Code Playgroud)
我可以采取什么步骤,以找出其中的宏观问题是从哪里来的?
这是我的代码:
fn main() {
{
// "Bitwise Cyclic Tag" automation through macros
macro_rules! bct {
// cmd 0: 0 ... => ...
(0, $($program:tt),* ; $_head:tt)
=> (bct_p!($($program),*, 0 ; ));
(0, $($program:tt),* ; $_head:tt, $($tail:tt),*)
=> …Run Code Online (Sandbox Code Playgroud) 更新:帖子的标题已更新,答案已移出问题.简短的回答是你不能.请看我对这个问题的回答.
我下面的错误处理的博客文章在这里(GitHub的,因为这是在这里),我试图进行一些修改代码,以便在search函数返回Iterator,而不是一个Vec.这太疯狂了,我被困住了.
我已经达到了这一点:
fn search<'a, P: AsRef<Path>>(file_path: &Option<P>, city: &str)
-> Result<FilterMap<csv::reader::DecodedRecords<'a, Box<Read>, Row>,
FnMut(Result<Row, csv::Error>)
-> Option<Result<PopulationCount, csv::Error>>>,
CliError> {
let mut found = vec![];
let input: Box<io::Read> = match *file_path {
None => Box::new(io::stdin()),
Some(ref file_path) => Box::new(try!(fs::File::open(file_path))),
};
let mut rdr = csv::Reader::from_reader(input);
let closure = |row: Result<Row, csv::Error>| -> Option<Result<PopulationCount, csv::Error>> {
let row = match row {
Ok(row) => row,
Err(err) => return Some(Err(From::from(err))),
}; …Run Code Online (Sandbox Code Playgroud) C#有一个像这样工作的空条件运算符
SomeObject?.SomeParam
Run Code Online (Sandbox Code Playgroud)
如果SomeObject为null,则该表达式的结果将为null,而不是抛出空引用异常.Ruby中是否存在类似的内容?