[INFO] cloning repository https://github.com/sarahhodne/travis-build-rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sarahhodne/travis-build-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsarahhodne%2Ftravis-build-rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsarahhodne%2Ftravis-build-rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 9f3185eb567fc0dd0029016a053e309e86d0e94a [INFO] checking sarahhodne/travis-build-rs against master#a609fb45efad59dfd459c76e50899be9f0583b5a for pr-80579 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsarahhodne%2Ftravis-build-rs" "/workspace/builds/worker-1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/sarahhodne/travis-build-rs on toolchain a609fb45efad59dfd459c76e50899be9f0583b5a [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+a609fb45efad59dfd459c76e50899be9f0583b5a" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/sarahhodne/travis-build-rs [INFO] finished tweaking git repo https://github.com/sarahhodne/travis-build-rs [INFO] tweaked toml for git repo https://github.com/sarahhodne/travis-build-rs written to /workspace/builds/worker-1/source/Cargo.toml [INFO] crate git repo https://github.com/sarahhodne/travis-build-rs already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+a609fb45efad59dfd459c76e50899be9f0583b5a" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:b8eeb62f26c39b23691079a6cb6de528d8e88b4d71a8f6b1d30f8ba7d9c16de9" "/opt/rustwide/cargo-home/bin/cargo" "+a609fb45efad59dfd459c76e50899be9f0583b5a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 0f33e00206e37d3e71fb11ff6de2119fce39b6b810fe7893f96f6d1a608483ac [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "0f33e00206e37d3e71fb11ff6de2119fce39b6b810fe7893f96f6d1a608483ac", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "0f33e00206e37d3e71fb11ff6de2119fce39b6b810fe7893f96f6d1a608483ac", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0f33e00206e37d3e71fb11ff6de2119fce39b6b810fe7893f96f6d1a608483ac", kill_on_drop: false }` [INFO] [stdout] 0f33e00206e37d3e71fb11ff6de2119fce39b6b810fe7893f96f6d1a608483ac [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:b8eeb62f26c39b23691079a6cb6de528d8e88b4d71a8f6b1d30f8ba7d9c16de9" "/opt/rustwide/cargo-home/bin/cargo" "+a609fb45efad59dfd459c76e50899be9f0583b5a" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 973090f0a77f60f2395d7a59ee3235e0779d50a16886ae824aa5b150740b3c8b [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "973090f0a77f60f2395d7a59ee3235e0779d50a16886ae824aa5b150740b3c8b", kill_on_drop: false }` [INFO] [stderr] Checking travis_build v0.0.1 (/opt/rustwide/workdir) [INFO] [stdout] error: macros that expand to items must be delimited with braces or followed by a semicolon [INFO] [stdout] --> src/ast/mod.rs:53:21 [INFO] [stdout] | [INFO] [stdout] 53 | macro_rules! ast_if ( [INFO] [stdout] | _____________________^ [INFO] [stdout] 54 | | ($cond:expr { $($body:expr;)* }) => (::ast::If($cond, box ast_block! { $($body);* }, box ::ast::Noop)); [INFO] [stdout] 55 | | ($cond:expr { $($body:expr;)* } else { $($elsebody:expr;)* }) => (::ast::If($cond, box ast_block!{ $($body);* }, box ast_block! { $($... [INFO] [stdout] 56 | | ) [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] help: change the delimiters to curly braces [INFO] [stdout] | [INFO] [stdout] 53 | macro_rules! ast_if { [INFO] [stdout] 54 | ($cond:expr { $($body:expr;)* }) => (::ast::If($cond, box ast_block! { $($body);* }, box ::ast::Noop)); [INFO] [stdout] 55 | ($cond:expr { $($body:expr;)* } else { $($elsebody:expr;)* }) => (::ast::If($cond, box ast_block!{ $($body);* }, box ast_block! { $($elsebody);* })) [INFO] [stdout] 56 | } [INFO] [stdout] | [INFO] [stdout] help: add a semicolon [INFO] [stdout] | [INFO] [stdout] 56 | ); [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: macros that expand to items must be delimited with braces or followed by a semicolon [INFO] [stdout] --> src/ast/mod.rs:59:24 [INFO] [stdout] | [INFO] [stdout] 59 | macro_rules! format_cmd( [INFO] [stdout] | ________________________^ [INFO] [stdout] 60 | | ([$($opts:ident)|*], $($arg:tt)*) => (::ast::Cmd(::ast::Raw(format!($($arg)*)), vec![$(::ast::$opts),*])); [INFO] [stdout] 61 | | ($($arg:tt)*) => (::ast::Cmd(::ast::Raw(format!($($arg)*)), vec![])) [INFO] [stdout] 62 | | ) [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] help: change the delimiters to curly braces [INFO] [stdout] | [INFO] [stdout] 59 | macro_rules! format_cmd{ [INFO] [stdout] 60 | ([$($opts:ident)|*], $($arg:tt)*) => (::ast::Cmd(::ast::Raw(format!($($arg)*)), vec![$(::ast::$opts),*])); [INFO] [stdout] 61 | ($($arg:tt)*) => (::ast::Cmd(::ast::Raw(format!($($arg)*)), vec![])) [INFO] [stdout] 62 | } [INFO] [stdout] | [INFO] [stdout] help: add a semicolon [INFO] [stdout] | [INFO] [stdout] 62 | ); [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: macros that expand to items must be delimited with braces or followed by a semicolon [INFO] [stdout] --> src/ast/mod.rs:65:17 [INFO] [stdout] | [INFO] [stdout] 65 | macro_rules! cmd( [INFO] [stdout] | _________________^ [INFO] [stdout] 66 | | ([$($opts:ident)|*], $cmd:expr) => (::ast::Cmd($cmd, vec![$(::ast::$opts),*])); [INFO] [stdout] 67 | | ($cmd:expr) => (::ast::Cmd($cmd, vec![])) [INFO] [stdout] 68 | | ) [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] help: change the delimiters to curly braces [INFO] [stdout] | [INFO] [stdout] 65 | macro_rules! cmd{ [INFO] [stdout] 66 | ([$($opts:ident)|*], $cmd:expr) => (::ast::Cmd($cmd, vec![$(::ast::$opts),*])); [INFO] [stdout] 67 | ($cmd:expr) => (::ast::Cmd($cmd, vec![])) [INFO] [stdout] 68 | } [INFO] [stdout] | [INFO] [stdout] help: add a semicolon [INFO] [stdout] | [INFO] [stdout] 68 | ); [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: macros that expand to items must be delimited with braces or followed by a semicolon [INFO] [stdout] --> src/ast/mod.rs:71:21 [INFO] [stdout] | [INFO] [stdout] 71 | macro_rules! ast_set( [INFO] [stdout] | _____________________^ [INFO] [stdout] 72 | | ($key:ident = $value:expr) => (cmd!(ast::Envset(stringify!($key).to_string(), $value))); [INFO] [stdout] 73 | | ) [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] help: change the delimiters to curly braces [INFO] [stdout] | [INFO] [stdout] 71 | macro_rules! ast_set{ [INFO] [stdout] 72 | ($key:ident = $value:expr) => (cmd!(ast::Envset(stringify!($key).to_string(), $value))); [INFO] [stdout] 73 | } [INFO] [stdout] | [INFO] [stdout] help: add a semicolon [INFO] [stdout] | [INFO] [stdout] 73 | ); [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: macros that expand to items must be delimited with braces or followed by a semicolon [INFO] [stdout] --> src/ast/mod.rs:88:23 [INFO] [stdout] | [INFO] [stdout] 88 | macro_rules! ast_block( [INFO] [stdout] | _______________________^ [INFO] [stdout] 89 | | { $($x:expr);* } => (::ast::Statements(box vec![$($x),*])); [INFO] [stdout] 90 | | { $($x:expr;)* } => (ast_block! { $($x);* }) [INFO] [stdout] 91 | | ) [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] help: change the delimiters to curly braces [INFO] [stdout] | [INFO] [stdout] 88 | macro_rules! ast_block{ [INFO] [stdout] 89 | { $($x:expr);* } => (::ast::Statements(box vec![$($x),*])); [INFO] [stdout] 90 | { $($x:expr;)* } => (ast_block! { $($x);* }) [INFO] [stdout] 91 | } [INFO] [stdout] | [INFO] [stdout] help: add a semicolon [INFO] [stdout] | [INFO] [stdout] 91 | ); [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: macros that expand to items must be delimited with braces or followed by a semicolon [INFO] [stdout] --> src/payload.rs:43:22 [INFO] [stdout] | [INFO] [stdout] 43 | macro_rules! json_to ( [INFO] [stdout] | ______________________^ [INFO] [stdout] 44 | | ($r:expr, String) => ($r.as_string()); [INFO] [stdout] 45 | | ($r:expr, bool) => ($r.as_boolean()); [INFO] [stdout] 46 | | ($r:expr, u64) => ($r.as_u64()); [INFO] [stdout] 47 | | ($r:expr, $t:ident) => (Some(try!($t::from_json($r)))); [INFO] [stdout] 48 | | ) [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] help: change the delimiters to curly braces [INFO] [stdout] | [INFO] [stdout] 43 | macro_rules! json_to { [INFO] [stdout] 44 | ($r:expr, String) => ($r.as_string()); [INFO] [stdout] 45 | ($r:expr, bool) => ($r.as_boolean()); [INFO] [stdout] 46 | ($r:expr, u64) => ($r.as_u64()); [INFO] [stdout] 47 | ($r:expr, $t:ident) => (Some(try!($t::from_json($r)))); [INFO] [stdout] 48 | } [INFO] [stdout] | [INFO] [stdout] help: add a semicolon [INFO] [stdout] | [INFO] [stdout] 48 | ); [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: macros that expand to items must be delimited with braces or followed by a semicolon [INFO] [stdout] --> src/payload.rs:50:23 [INFO] [stdout] | [INFO] [stdout] 50 | macro_rules! find_key ( [INFO] [stdout] | _______________________^ [INFO] [stdout] 51 | | ($j:expr, $t:ident, $key:expr) => (match $j.find(&*::std::string::as_string($key)) { [INFO] [stdout] 52 | | Some(v) => try!(json_to!(v, $t).ok_or(json::ApplicationError(format!("{} must be a string", $key)))), [INFO] [stdout] 53 | | None => return Err(json::MissingFieldError($key.to_string())), [INFO] [stdout] ... | [INFO] [stdout] 59 | | }); [INFO] [stdout] 60 | | ) [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] help: change the delimiters to curly braces [INFO] [stdout] | [INFO] [stdout] 50 | macro_rules! find_key { [INFO] [stdout] 51 | ($j:expr, $t:ident, $key:expr) => (match $j.find(&*::std::string::as_string($key)) { [INFO] [stdout] 52 | Some(v) => try!(json_to!(v, $t).ok_or(json::ApplicationError(format!("{} must be a string", $key)))), [INFO] [stdout] 53 | None => return Err(json::MissingFieldError($key.to_string())), [INFO] [stdout] 54 | }); [INFO] [stdout] 55 | ($j:expr, $t:ident, $key:expr, Optional) => (try!($j.find(&*::std::string::as_string($key)).map_or(Ok(None), |r| json_to!(r, $t).ok_or(json::ApplicationError(format!("{} must be a string", $key))).map(Some)))); [INFO] [stdout] ... [INFO] [stdout] help: add a semicolon [INFO] [stdout] | [INFO] [stdout] 60 | ); [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: macros that expand to items must be delimited with braces or followed by a semicolon [INFO] [stdout] --> src/ast/mod.rs:53:21 [INFO] [stdout] | [INFO] [stdout] 53 | macro_rules! ast_if ( [INFO] [stdout] | _____________________^ [INFO] [stdout] 54 | | ($cond:expr { $($body:expr;)* }) => (::ast::If($cond, box ast_block! { $($body);* }, box ::ast::Noop)); [INFO] [stdout] 55 | | ($cond:expr { $($body:expr;)* } else { $($elsebody:expr;)* }) => (::ast::If($cond, box ast_block!{ $($body);* }, box ast_block! { $($... [INFO] [stdout] 56 | | ) [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] help: change the delimiters to curly braces [INFO] [stdout] | [INFO] [stdout] 53 | macro_rules! ast_if { [INFO] [stdout] 54 | ($cond:expr { $($body:expr;)* }) => (::ast::If($cond, box ast_block! { $($body);* }, box ::ast::Noop)); [INFO] [stdout] 55 | ($cond:expr { $($body:expr;)* } else { $($elsebody:expr;)* }) => (::ast::If($cond, box ast_block!{ $($body);* }, box ast_block! { $($elsebody);* })) [INFO] [stdout] 56 | } [INFO] [stdout] | [INFO] [stdout] help: add a semicolon [INFO] [stdout] | [INFO] [stdout] 56 | ); [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: macros that expand to items must be delimited with braces or followed by a semicolon [INFO] [stdout] --> src/ast/mod.rs:59:24 [INFO] [stdout] | [INFO] [stdout] 59 | macro_rules! format_cmd( [INFO] [stdout] | ________________________^ [INFO] [stdout] 60 | | ([$($opts:ident)|*], $($arg:tt)*) => (::ast::Cmd(::ast::Raw(format!($($arg)*)), vec![$(::ast::$opts),*])); [INFO] [stdout] 61 | | ($($arg:tt)*) => (::ast::Cmd(::ast::Raw(format!($($arg)*)), vec![])) [INFO] [stdout] 62 | | ) [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] help: change the delimiters to curly braces [INFO] [stdout] | [INFO] [stdout] 59 | macro_rules! format_cmd{ [INFO] [stdout] 60 | ([$($opts:ident)|*], $($arg:tt)*) => (::ast::Cmd(::ast::Raw(format!($($arg)*)), vec![$(::ast::$opts),*])); [INFO] [stdout] 61 | ($($arg:tt)*) => (::ast::Cmd(::ast::Raw(format!($($arg)*)), vec![])) [INFO] [stdout] 62 | } [INFO] [stdout] | [INFO] [stdout] help: add a semicolon [INFO] [stdout] | [INFO] [stdout] 62 | ); [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: macros that expand to items must be delimited with braces or followed by a semicolon [INFO] [stdout] --> src/ast/mod.rs:65:17 [INFO] [stdout] | [INFO] [stdout] 65 | macro_rules! cmd( [INFO] [stdout] | _________________^ [INFO] [stdout] 66 | | ([$($opts:ident)|*], $cmd:expr) => (::ast::Cmd($cmd, vec![$(::ast::$opts),*])); [INFO] [stdout] 67 | | ($cmd:expr) => (::ast::Cmd($cmd, vec![])) [INFO] [stdout] 68 | | ) [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] help: change the delimiters to curly braces [INFO] [stdout] | [INFO] [stdout] 65 | macro_rules! cmd{ [INFO] [stdout] 66 | ([$($opts:ident)|*], $cmd:expr) => (::ast::Cmd($cmd, vec![$(::ast::$opts),*])); [INFO] [stdout] 67 | ($cmd:expr) => (::ast::Cmd($cmd, vec![])) [INFO] [stdout] 68 | } [INFO] [stdout] | [INFO] [stdout] help: add a semicolon [INFO] [stdout] | [INFO] [stdout] 68 | ); [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: macros that expand to items must be delimited with braces or followed by a semicolon [INFO] [stdout] --> src/ast/mod.rs:71:21 [INFO] [stdout] | [INFO] [stdout] 71 | macro_rules! ast_set( [INFO] [stdout] | _____________________^ [INFO] [stdout] 72 | | ($key:ident = $value:expr) => (cmd!(ast::Envset(stringify!($key).to_string(), $value))); [INFO] [stdout] 73 | | ) [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] help: change the delimiters to curly braces [INFO] [stdout] | [INFO] [stdout] 71 | macro_rules! ast_set{ [INFO] [stdout] 72 | ($key:ident = $value:expr) => (cmd!(ast::Envset(stringify!($key).to_string(), $value))); [INFO] [stdout] 73 | } [INFO] [stdout] | [INFO] [stdout] help: add a semicolon [INFO] [stdout] | [INFO] [stdout] 73 | ); [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: macros that expand to items must be delimited with braces or followed by a semicolon [INFO] [stdout] --> src/ast/mod.rs:88:23 [INFO] [stdout] | [INFO] [stdout] 88 | macro_rules! ast_block( [INFO] [stdout] | _______________________^ [INFO] [stdout] 89 | | { $($x:expr);* } => (::ast::Statements(box vec![$($x),*])); [INFO] [stdout] 90 | | { $($x:expr;)* } => (ast_block! { $($x);* }) [INFO] [stdout] 91 | | ) [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] help: change the delimiters to curly braces [INFO] [stdout] | [INFO] [stdout] 88 | macro_rules! ast_block{ [INFO] [stdout] 89 | { $($x:expr);* } => (::ast::Statements(box vec![$($x),*])); [INFO] [stdout] 90 | { $($x:expr;)* } => (ast_block! { $($x);* }) [INFO] [stdout] 91 | } [INFO] [stdout] | [INFO] [stdout] help: add a semicolon [INFO] [stdout] | [INFO] [stdout] 91 | ); [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0463]: can't find crate for `serialize` [INFO] [stdout] --> src/lib.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | extern crate serialize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ can't find crate [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 8 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0463`. [INFO] [stdout] [INFO] [stderr] error: could not compile `travis_build` [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error: macros that expand to items must be delimited with braces or followed by a semicolon [INFO] [stdout] --> src/payload.rs:43:22 [INFO] [stdout] | [INFO] [stdout] 43 | macro_rules! json_to ( [INFO] [stdout] | ______________________^ [INFO] [stdout] 44 | | ($r:expr, String) => ($r.as_string()); [INFO] [stdout] 45 | | ($r:expr, bool) => ($r.as_boolean()); [INFO] [stdout] 46 | | ($r:expr, u64) => ($r.as_u64()); [INFO] [stdout] 47 | | ($r:expr, $t:ident) => (Some(try!($t::from_json($r)))); [INFO] [stdout] 48 | | ) [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] help: change the delimiters to curly braces [INFO] [stdout] | [INFO] [stdout] 43 | macro_rules! json_to { [INFO] [stdout] 44 | ($r:expr, String) => ($r.as_string()); [INFO] [stdout] 45 | ($r:expr, bool) => ($r.as_boolean()); [INFO] [stdout] 46 | ($r:expr, u64) => ($r.as_u64()); [INFO] [stdout] 47 | ($r:expr, $t:ident) => (Some(try!($t::from_json($r)))); [INFO] [stdout] 48 | } [INFO] [stdout] | [INFO] [stdout] help: add a semicolon [INFO] [stdout] | [INFO] [stdout] 48 | ); [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: macros that expand to items must be delimited with braces or followed by a semicolon [INFO] [stdout] --> src/payload.rs:50:23 [INFO] [stdout] | [INFO] [stdout] 50 | macro_rules! find_key ( [INFO] [stdout] | _______________________^ [INFO] [stdout] 51 | | ($j:expr, $t:ident, $key:expr) => (match $j.find(&*::std::string::as_string($key)) { [INFO] [stdout] 52 | | Some(v) => try!(json_to!(v, $t).ok_or(json::ApplicationError(format!("{} must be a string", $key)))), [INFO] [stdout] 53 | | None => return Err(json::MissingFieldError($key.to_string())), [INFO] [stdout] ... | [INFO] [stdout] 59 | | }); [INFO] [stdout] 60 | | ) [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] help: change the delimiters to curly braces [INFO] [stdout] | [INFO] [stdout] 50 | macro_rules! find_key { [INFO] [stdout] 51 | ($j:expr, $t:ident, $key:expr) => (match $j.find(&*::std::string::as_string($key)) { [INFO] [stdout] 52 | Some(v) => try!(json_to!(v, $t).ok_or(json::ApplicationError(format!("{} must be a string", $key)))), [INFO] [stdout] 53 | None => return Err(json::MissingFieldError($key.to_string())), [INFO] [stdout] 54 | }); [INFO] [stdout] 55 | ($j:expr, $t:ident, $key:expr, Optional) => (try!($j.find(&*::std::string::as_string($key)).map_or(Ok(None), |r| json_to!(r, $t).ok_or(json::ApplicationError(format!("{} must be a string", $key))).map(Some)))); [INFO] [stdout] ... [INFO] [stdout] help: add a semicolon [INFO] [stdout] | [INFO] [stdout] 60 | ); [INFO] [stdout] | ^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0463]: can't find crate for `serialize` [INFO] [stdout] --> src/lib.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | extern crate serialize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ can't find crate [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 8 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] For more information about this error, try `rustc --explain E0463`. [INFO] [stdout] [INFO] [stderr] error: build failed [INFO] running `Command { std: "docker" "inspect" "973090f0a77f60f2395d7a59ee3235e0779d50a16886ae824aa5b150740b3c8b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "973090f0a77f60f2395d7a59ee3235e0779d50a16886ae824aa5b150740b3c8b", kill_on_drop: false }` [INFO] [stdout] 973090f0a77f60f2395d7a59ee3235e0779d50a16886ae824aa5b150740b3c8b