[INFO] cloning repository https://github.com/CarpeQueso/craindown
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/CarpeQueso/craindown" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCarpeQueso%2Fcraindown", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCarpeQueso%2Fcraindown'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] cb988a85672b73bacc99c62dda41d737a423b81c
[INFO] building CarpeQueso/craindown against try#334963c956d25708feab489a3816ae63f639355d for pr-135216
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCarpeQueso%2Fcraindown" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/CarpeQueso/craindown on toolchain 334963c956d25708feab489a3816ae63f639355d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+334963c956d25708feab489a3816ae63f639355d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/CarpeQueso/craindown
[INFO] finished tweaking git repo https://github.com/CarpeQueso/craindown
[INFO] tweaked toml for git repo https://github.com/CarpeQueso/craindown written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/CarpeQueso/craindown already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+334963c956d25708feab489a3816ae63f639355d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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" "ghcr.io/rust-lang/crates-build-env/linux@sha256:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+334963c956d25708feab489a3816ae63f639355d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] d91180ea920cfdc2b9bc19d20e979079573e34639b2720eb6899b931ad495c2d
[INFO] running `Command { std: "docker" "start" "-a" "d91180ea920cfdc2b9bc19d20e979079573e34639b2720eb6899b931ad495c2d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d91180ea920cfdc2b9bc19d20e979079573e34639b2720eb6899b931ad495c2d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d91180ea920cfdc2b9bc19d20e979079573e34639b2720eb6899b931ad495c2d", kill_on_drop: false }`
[INFO] [stdout] d91180ea920cfdc2b9bc19d20e979079573e34639b2720eb6899b931ad495c2d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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" "RUSTDOCFLAGS=--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" "ghcr.io/rust-lang/crates-build-env/linux@sha256:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+334963c956d25708feab489a3816ae63f639355d" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6e1ce8131ce6321d0a37ab3e0bcfc89dec4d62d98ddfdf6468a4fcedec6f94ba
[INFO] running `Command { std: "docker" "start" "-a" "6e1ce8131ce6321d0a37ab3e0bcfc89dec4d62d98ddfdf6468a4fcedec6f94ba", kill_on_drop: false }`
[INFO] [stderr]    Compiling craindown v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::util::FilePosition`
[INFO] [stdout]  --> src/parse.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::util::FilePosition;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `formatted_text_type`
[INFO] [stdout]  --> src/parse.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::{formatted_text_type, parse_error};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `blocks` is never read
[INFO] [stdout]  --> src/craindown.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Craindown {
[INFO] [stdout]   |            --------- field in this struct
[INFO] [stdout] 5 |     blocks: Vec<BlockElement>,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Craindown` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INLINE_ELEMENT_TOKENS` is never used
[INFO] [stdout]   --> src/parse.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const INLINE_ELEMENT_TOKENS: [TokenType; 9] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `quote_block_indicator`, `link_open`, and `link_intermediate` are never used
[INFO] [stdout]    --> src/parse.rs:534:8
[INFO] [stdout]     |
[INFO] [stdout] 37  | impl<'a> Parser<'a> {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 534 |     fn quote_block_indicator(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     fn link_open(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 558 |     fn link_intermediate(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::FilePosition`
[INFO] [stdout]  --> src/parse.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::util::FilePosition;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `formatted_text_type`
[INFO] [stdout]  --> src/parse.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::{formatted_text_type, parse_error};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Craindown` is never constructed
[INFO] [stdout]  --> src/craindown.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Craindown {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Craindown` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/craindown.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl Craindown {
[INFO] [stdout]   | -------------- associated function in this implementation
[INFO] [stdout] 9 |     pub fn new(blocks: &[BlockElement]) -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BlockElement` is never used
[INFO] [stdout]   --> src/craindown.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum BlockElement {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BlockElement` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/craindown.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Metadata {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 35 |     pub fn new(key: &str, value: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/craindown.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl SectionHeading {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 50 |     pub fn new(level: usize, contents: Vec<InlineElement>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/craindown.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | impl TextBlock {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 61 |     pub fn new(contents: Vec<InlineElement>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Text` and `Link` are never constructed
[INFO] [stdout]   --> src/craindown.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum InlineElement {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] 68 |     Text(Text),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 69 |     Link(Link),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InlineElement` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/craindown.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl Text {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 79 |     pub fn new(text_type: TextType, text: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Math`, `Code`, `Literal`, `Formatted`, and `Plain` are never constructed
[INFO] [stdout]   --> src/craindown.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub enum TextType {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] 89 |     Math,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 90 |     Code,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 91 |     Literal,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 92 |     Formatted(HashSet<FormatSpecifier>),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 93 |     Plain,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TextType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Bold`, `Italic`, `Underline`, and `Strikethrough` are never constructed
[INFO] [stdout]    --> src/craindown.rs:98:5
[INFO] [stdout]     |
[INFO] [stdout] 97  | pub enum FormatSpecifier {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] 98  |     Bold,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 99  |     Italic,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 100 |     Underline,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 101 |     Strikethrough,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FormatSpecifier` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/craindown.rs:125:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl MathBlock {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 125 |     pub fn new(options: Option<&str>, contents: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/craindown.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl ExportBlock {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] 145 |     pub fn new(options: Option<&str>, contents: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/craindown.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 164 | impl CodeBlock {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 165 |     pub fn new(options: Option<&str>, contents: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/craindown.rs:185:12
[INFO] [stdout]     |
[INFO] [stdout] 184 | impl LiteralBlock {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 185 |     pub fn new(options: Option<&str>, contents: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/craindown.rs:204:12
[INFO] [stdout]     |
[INFO] [stdout] 203 | impl QuoteBlock {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 204 |     pub fn new(contents: Vec<InlineElement>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/craindown.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 215 | impl Link {
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] 216 |     pub fn new(description: Option<&str>, uri: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParseError` is never constructed
[INFO] [stdout]   --> src/error.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct ParseError {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParseError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/error.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl ParseError {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 24 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ParseErrorType` is never used
[INFO] [stdout]   --> src/error.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub enum ParseErrorType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParseErrorType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tokenize` is never used
[INFO] [stdout]  --> src/lex.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn tokenize(s: &str) -> Vec<Token> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/lex.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl Token {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 42 |     pub fn new(token_type: TokenType, lexeme: &str, position: &FilePosition) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/lex.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub enum TokenType {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 53 |     // TODO: I don't know if "Indicator" is sufficiently descriptive...
[INFO] [stdout] 54 |     MetadataIndicator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     MetadataSeparator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 56 |     SectionHeadingIndicator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 57 |     MathBlockDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 58 |     ExportBlockDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 59 |     CodeBlockDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 60 |     LiteralBlockDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 61 |     QuoteBlockIndicator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 62 |     InlineMathDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 63 |     InlineCodeDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     InlineLiteralDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 65 |     BoldDelim,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 66 |     ItalicDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 67 |     UnderlineDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 68 |     StrikethroughDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 69 |     LinkOpen,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 70 |     LinkClose,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 71 |     LinkIntermediate,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     Text,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 73 |     StructuralLineBreak,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     StructuralSpace,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     StructuralTab,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 76 |     EOF,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TokenType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MatchHandler` is never constructed
[INFO] [stdout]   --> src/lex.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | struct MatchHandler {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/lex.rs:89:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | impl MatchHandler {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 89 |     fn new(str_to_match: &str, token_type: TokenType, handler_fn: fn(&mut Scanner)) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Scanner` is never constructed
[INFO] [stdout]   --> src/lex.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | struct Scanner {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/lex.rs:141:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | impl Scanner {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 141 |     fn new(data: &str) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     fn match_and_maybe_process(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     fn advance(&mut self, n: usize) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     fn len_to_end(&mut self) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     fn peek(&mut self) -> Option<char> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     fn peek_match(&mut self, str_to_match: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn push_token(&mut self, token_type: TokenType, lexeme: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     fn push_text_token(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     fn set_text_start_position(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     fn has_next(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     fn advance_past_inline_whitespace(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     fn collect_until(&mut self, patterns: &[&str]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     fn match_and_push_subset(&mut self, patterns_and_tokens: &[(&str, TokenType)]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn scan_tokens(&mut self) -> Vec<Token> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 416 |     fn check_match_handlers(&mut self, handlers: &[MatchHandler]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     fn metadata(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     fn section_heading(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 489 |     fn handle_verbatim_block(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 538 |     fn math_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     fn export_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 546 |     fn code_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     fn literal_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     fn quote_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 561 |     fn preceding_whitespace(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 577 |     fn handle_verbatim_inline(&mut self, delim_token_type: TokenType, delim_pattern: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     fn inline_math(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 594 |     fn inline_code(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 598 |     fn inline_literal(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 602 |     fn link(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 629 |     fn no_op(&mut self) {}
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INLINE_ELEMENT_TOKENS` is never used
[INFO] [stdout]   --> src/parse.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const INLINE_ELEMENT_TOKENS: [TokenType; 9] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]   --> src/parse.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn parse(tokens: &[Token]) -> Result<Craindown, (Craindown, Vec<ParseError>)> {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ParseResult` is never used
[INFO] [stdout]   --> src/parse.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub type ParseResult<T> = Result<T, ParseError>;
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Parser` is never constructed
[INFO] [stdout]   --> src/parse.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | struct Parser<'a> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/parse.rs:38:8
[INFO] [stdout]     |
[INFO] [stdout] 37  | impl<'a> Parser<'a> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 38  |     fn new(tokens: &'a [Token]) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 52  |     fn next(&mut self) -> &Token {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64  |     fn prev(&mut self) -> Option<&Token> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72  |     fn rewind(&mut self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78  |     fn peek(&mut self) -> &Token {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82  |     fn peek_match(&mut self, token_type: &TokenType) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90  |     fn peek_match_any(&mut self, types_to_match: &[TokenType]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     fn advance_match_any(&mut self, types_to_match: &[TokenType]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     fn is_at_end(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     fn advance_past(&mut self, types_to_match: &[TokenType]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn advance_until(&mut self, types_to_match: &[TokenType]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     fn synchronize(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     fn parse(&mut self) -> Result<Craindown, (Craindown, Vec<ParseError>)> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     fn block(&mut self) -> ParseResult<BlockElement> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     fn metadata(&mut self) -> ParseResult<Metadata> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     fn section_heading(&mut self) -> ParseResult<SectionHeading> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     fn math_block(&mut self) -> ParseResult<MathBlock> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     fn export_block(&mut self) -> ParseResult<ExportBlock> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn code_block(&mut self) -> ParseResult<CodeBlock> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn literal_block(&mut self) -> ParseResult<LiteralBlock> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn quote_block(&mut self) -> ParseResult<QuoteBlock> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     fn text_block(&mut self) -> ParseResult<TextBlock> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 341 |     fn formatted_text(&mut self) -> ParseResult<Vec<InlineElement>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 416 |     fn inline_math(&mut self) -> ParseResult<Text> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 424 |     fn inline_code(&mut self) -> ParseResult<Text> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 432 |     fn inline_literal(&mut self) -> ParseResult<Text> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     fn link(&mut self) -> ParseResult<Link> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 456 |     fn block_end(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 479 |     fn plain_text(&mut self) -> ParseResult<String> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     fn generic_delim(&mut self, type_to_match: TokenType, descriptor: &str) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 510 |     fn metadata_separator(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 514 |     fn line_break(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 518 |     fn math_block_delim(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 522 |     fn export_block_delim(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 526 |     fn code_block_delim(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 530 |     fn literal_block_delim(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 534 |     fn quote_block_indicator(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 538 |     fn inline_math_delim(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     fn inline_code_delim(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 546 |     fn inline_literal_delim(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     fn link_open(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     fn link_close(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 558 |     fn link_intermediate(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `METADATA_INDICATOR` is never used
[INFO] [stdout]  --> src/symbols.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const METADATA_INDICATOR: &'static str = "&&";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECTION_HEADING_INDICATOR` is never used
[INFO] [stdout]  --> src/symbols.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const SECTION_HEADING_INDICATOR: &'static str = "#";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MATH_BLOCK_DELIM` is never used
[INFO] [stdout]  --> src/symbols.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const MATH_BLOCK_DELIM: &'static str = "$$$";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXPORT_BLOCK_DELIM` is never used
[INFO] [stdout]  --> src/symbols.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const EXPORT_BLOCK_DELIM: &'static str = "===";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CODE_BLOCK_DELIM` is never used
[INFO] [stdout]  --> src/symbols.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const CODE_BLOCK_DELIM: &'static str = "```";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LITERAL_BLOCK_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const LITERAL_BLOCK_DELIM: &'static str = "%%%";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `QUOTE_BLOCK_INDICATOR` is never used
[INFO] [stdout]   --> src/symbols.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const QUOTE_BLOCK_INDICATOR: &'static str = ">";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `METADATA_SEPARATOR` is never used
[INFO] [stdout]   --> src/symbols.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const METADATA_SEPARATOR: &'static str = ":";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INLINE_MATH_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const INLINE_MATH_DELIM: &'static str = "$$";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INLINE_CODE_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const INLINE_CODE_DELIM: &'static str = "``";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INLINE_LITERAL_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const INLINE_LITERAL_DELIM: &'static str = "%%";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOLD_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const BOLD_DELIM: &'static str = "**";
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ITALIC_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const ITALIC_DELIM: &'static str = "//";
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNDERLINE_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const UNDERLINE_DELIM: &'static str = "__";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STRIKETHROUGH_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const STRIKETHROUGH_DELIM: &'static str = "~~";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINK_OPEN` is never used
[INFO] [stdout]   --> src/symbols.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const LINK_OPEN: &'static str = "[[";
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINK_CLOSE` is never used
[INFO] [stdout]   --> src/symbols.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const LINK_CLOSE: &'static str = "]]";
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINK_INTERMEDIATE` is never used
[INFO] [stdout]   --> src/symbols.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const LINK_INTERMEDIATE: &'static str = "][";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPACE` is never used
[INFO] [stdout]   --> src/symbols.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const SPACE: &'static str = " ";
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TAB` is never used
[INFO] [stdout]   --> src/symbols.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const TAB: &'static str = "\t";
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WINDOWS_LINE_BREAK` is never used
[INFO] [stdout]   --> src/symbols.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const WINDOWS_LINE_BREAK: &'static str = "\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINE_BREAK` is never used
[INFO] [stdout]   --> src/symbols.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const LINE_BREAK: &'static str = "\n";
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINE_BREAK_PATTERNS` is never used
[INFO] [stdout]   --> src/symbols.rs:32:11
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const LINE_BREAK_PATTERNS: [&'static str; 2] = [WINDOWS_LINE_BREAK, LINE_BREAK];
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl FilePosition {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 14 |     pub fn new(line: usize, position_in_line: usize, absolute_position: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.15s
[INFO] running `Command { std: "docker" "inspect" "6e1ce8131ce6321d0a37ab3e0bcfc89dec4d62d98ddfdf6468a4fcedec6f94ba", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6e1ce8131ce6321d0a37ab3e0bcfc89dec4d62d98ddfdf6468a4fcedec6f94ba", kill_on_drop: false }`
[INFO] [stdout] 6e1ce8131ce6321d0a37ab3e0bcfc89dec4d62d98ddfdf6468a4fcedec6f94ba
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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" "RUSTDOCFLAGS=--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" "ghcr.io/rust-lang/crates-build-env/linux@sha256:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+334963c956d25708feab489a3816ae63f639355d" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0c4e75b626c1322c5ed7f4ab934f03a946a07ec25965be963ddf6fabb5af10c8
[INFO] running `Command { std: "docker" "start" "-a" "0c4e75b626c1322c5ed7f4ab934f03a946a07ec25965be963ddf6fabb5af10c8", kill_on_drop: false }`
[INFO] [stdout] warning: unused import: `crate::util::FilePosition`
[INFO] [stdout]  --> src/parse.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::util::FilePosition;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `formatted_text_type`
[INFO] [stdout]  --> src/parse.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::{formatted_text_type, parse_error};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `blocks` is never read
[INFO] [stdout]  --> src/craindown.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Craindown {
[INFO] [stdout]   |            --------- field in this struct
[INFO] [stdout] 5 |     blocks: Vec<BlockElement>,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Craindown` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INLINE_ELEMENT_TOKENS` is never used
[INFO] [stdout]   --> src/parse.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const INLINE_ELEMENT_TOKENS: [TokenType; 9] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `quote_block_indicator`, `link_open`, and `link_intermediate` are never used
[INFO] [stdout]    --> src/parse.rs:534:8
[INFO] [stdout]     |
[INFO] [stdout] 37  | impl<'a> Parser<'a> {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 534 |     fn quote_block_indicator(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     fn link_open(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 558 |     fn link_intermediate(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::FilePosition`
[INFO] [stdout]  --> src/parse.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::util::FilePosition;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `formatted_text_type`
[INFO] [stdout]  --> src/parse.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::{formatted_text_type, parse_error};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Craindown` is never constructed
[INFO] [stdout]  --> src/craindown.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Craindown {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Craindown` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/craindown.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl Craindown {
[INFO] [stdout]   | -------------- associated function in this implementation
[INFO] [stdout] 9 |     pub fn new(blocks: &[BlockElement]) -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BlockElement` is never used
[INFO] [stdout]   --> src/craindown.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum BlockElement {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BlockElement` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/craindown.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Metadata {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 35 |     pub fn new(key: &str, value: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/craindown.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl SectionHeading {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 50 |     pub fn new(level: usize, contents: Vec<InlineElement>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/craindown.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | impl TextBlock {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 61 |     pub fn new(contents: Vec<InlineElement>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Text` and `Link` are never constructed
[INFO] [stdout]   --> src/craindown.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum InlineElement {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] 68 |     Text(Text),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 69 |     Link(Link),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InlineElement` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/craindown.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl Text {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 79 |     pub fn new(text_type: TextType, text: &str) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Math`, `Code`, `Literal`, `Formatted`, and `Plain` are never constructed
[INFO] [stdout]   --> src/craindown.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub enum TextType {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] 89 |     Math,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 90 |     Code,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 91 |     Literal,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 92 |     Formatted(HashSet<FormatSpecifier>),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 93 |     Plain,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TextType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Bold`, `Italic`, `Underline`, and `Strikethrough` are never constructed
[INFO] [stdout]    --> src/craindown.rs:98:5
[INFO] [stdout]     |
[INFO] [stdout] 97  | pub enum FormatSpecifier {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] 98  |     Bold,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 99  |     Italic,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 100 |     Underline,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 101 |     Strikethrough,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FormatSpecifier` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/craindown.rs:125:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl MathBlock {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 125 |     pub fn new(options: Option<&str>, contents: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/craindown.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl ExportBlock {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] 145 |     pub fn new(options: Option<&str>, contents: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/craindown.rs:165:12
[INFO] [stdout]     |
[INFO] [stdout] 164 | impl CodeBlock {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 165 |     pub fn new(options: Option<&str>, contents: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/craindown.rs:185:12
[INFO] [stdout]     |
[INFO] [stdout] 184 | impl LiteralBlock {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 185 |     pub fn new(options: Option<&str>, contents: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/craindown.rs:204:12
[INFO] [stdout]     |
[INFO] [stdout] 203 | impl QuoteBlock {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 204 |     pub fn new(contents: Vec<InlineElement>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/craindown.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 215 | impl Link {
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] 216 |     pub fn new(description: Option<&str>, uri: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParseError` is never constructed
[INFO] [stdout]   --> src/error.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct ParseError {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParseError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/error.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl ParseError {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 24 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ParseErrorType` is never used
[INFO] [stdout]   --> src/error.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub enum ParseErrorType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParseErrorType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tokenize` is never used
[INFO] [stdout]  --> src/lex.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn tokenize(s: &str) -> Vec<Token> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/lex.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl Token {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 42 |     pub fn new(token_type: TokenType, lexeme: &str, position: &FilePosition) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/lex.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub enum TokenType {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 53 |     // TODO: I don't know if "Indicator" is sufficiently descriptive...
[INFO] [stdout] 54 |     MetadataIndicator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 55 |     MetadataSeparator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 56 |     SectionHeadingIndicator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 57 |     MathBlockDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 58 |     ExportBlockDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 59 |     CodeBlockDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 60 |     LiteralBlockDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 61 |     QuoteBlockIndicator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 62 |     InlineMathDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 63 |     InlineCodeDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     InlineLiteralDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 65 |     BoldDelim,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 66 |     ItalicDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 67 |     UnderlineDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 68 |     StrikethroughDelim,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 69 |     LinkOpen,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 70 |     LinkClose,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 71 |     LinkIntermediate,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     Text,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 73 |     StructuralLineBreak,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 74 |     StructuralSpace,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     StructuralTab,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 76 |     EOF,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TokenType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MatchHandler` is never constructed
[INFO] [stdout]   --> src/lex.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | struct MatchHandler {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/lex.rs:89:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | impl MatchHandler {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 89 |     fn new(str_to_match: &str, token_type: TokenType, handler_fn: fn(&mut Scanner)) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Scanner` is never constructed
[INFO] [stdout]   --> src/lex.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | struct Scanner {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/lex.rs:141:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | impl Scanner {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 141 |     fn new(data: &str) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     fn match_and_maybe_process(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     fn advance(&mut self, n: usize) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     fn len_to_end(&mut self) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     fn peek(&mut self) -> Option<char> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     fn peek_match(&mut self, str_to_match: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn push_token(&mut self, token_type: TokenType, lexeme: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     fn push_text_token(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     fn set_text_start_position(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     fn has_next(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     fn advance_past_inline_whitespace(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     fn collect_until(&mut self, patterns: &[&str]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     fn match_and_push_subset(&mut self, patterns_and_tokens: &[(&str, TokenType)]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn scan_tokens(&mut self) -> Vec<Token> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 416 |     fn check_match_handlers(&mut self, handlers: &[MatchHandler]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     fn metadata(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     fn section_heading(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 489 |     fn handle_verbatim_block(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 538 |     fn math_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     fn export_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 546 |     fn code_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     fn literal_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     fn quote_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 561 |     fn preceding_whitespace(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 577 |     fn handle_verbatim_inline(&mut self, delim_token_type: TokenType, delim_pattern: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     fn inline_math(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 594 |     fn inline_code(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 598 |     fn inline_literal(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 602 |     fn link(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 629 |     fn no_op(&mut self) {}
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INLINE_ELEMENT_TOKENS` is never used
[INFO] [stdout]   --> src/parse.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const INLINE_ELEMENT_TOKENS: [TokenType; 9] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]   --> src/parse.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn parse(tokens: &[Token]) -> Result<Craindown, (Craindown, Vec<ParseError>)> {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ParseResult` is never used
[INFO] [stdout]   --> src/parse.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub type ParseResult<T> = Result<T, ParseError>;
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Parser` is never constructed
[INFO] [stdout]   --> src/parse.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | struct Parser<'a> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling craindown v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/parse.rs:38:8
[INFO] [stdout]     |
[INFO] [stdout] 37  | impl<'a> Parser<'a> {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 38  |     fn new(tokens: &'a [Token]) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 52  |     fn next(&mut self) -> &Token {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64  |     fn prev(&mut self) -> Option<&Token> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72  |     fn rewind(&mut self) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78  |     fn peek(&mut self) -> &Token {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82  |     fn peek_match(&mut self, token_type: &TokenType) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90  |     fn peek_match_any(&mut self, types_to_match: &[TokenType]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     fn advance_match_any(&mut self, types_to_match: &[TokenType]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     fn is_at_end(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     fn advance_past(&mut self, types_to_match: &[TokenType]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn advance_until(&mut self, types_to_match: &[TokenType]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     fn synchronize(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     fn parse(&mut self) -> Result<Craindown, (Craindown, Vec<ParseError>)> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     fn block(&mut self) -> ParseResult<BlockElement> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     fn metadata(&mut self) -> ParseResult<Metadata> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     fn section_heading(&mut self) -> ParseResult<SectionHeading> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     fn math_block(&mut self) -> ParseResult<MathBlock> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 255 |     fn export_block(&mut self) -> ParseResult<ExportBlock> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     fn code_block(&mut self) -> ParseResult<CodeBlock> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn literal_block(&mut self) -> ParseResult<LiteralBlock> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     fn quote_block(&mut self) -> ParseResult<QuoteBlock> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     fn text_block(&mut self) -> ParseResult<TextBlock> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 341 |     fn formatted_text(&mut self) -> ParseResult<Vec<InlineElement>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 416 |     fn inline_math(&mut self) -> ParseResult<Text> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 424 |     fn inline_code(&mut self) -> ParseResult<Text> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 432 |     fn inline_literal(&mut self) -> ParseResult<Text> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     fn link(&mut self) -> ParseResult<Link> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 456 |     fn block_end(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 479 |     fn plain_text(&mut self) -> ParseResult<String> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     fn generic_delim(&mut self, type_to_match: TokenType, descriptor: &str) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 510 |     fn metadata_separator(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 514 |     fn line_break(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 518 |     fn math_block_delim(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 522 |     fn export_block_delim(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 526 |     fn code_block_delim(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 530 |     fn literal_block_delim(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 534 |     fn quote_block_indicator(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 538 |     fn inline_math_delim(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     fn inline_code_delim(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 546 |     fn inline_literal_delim(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     fn link_open(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     fn link_close(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 558 |     fn link_intermediate(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `METADATA_INDICATOR` is never used
[INFO] [stdout]  --> src/symbols.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const METADATA_INDICATOR: &'static str = "&&";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECTION_HEADING_INDICATOR` is never used
[INFO] [stdout]  --> src/symbols.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const SECTION_HEADING_INDICATOR: &'static str = "#";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MATH_BLOCK_DELIM` is never used
[INFO] [stdout]  --> src/symbols.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const MATH_BLOCK_DELIM: &'static str = "$$$";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXPORT_BLOCK_DELIM` is never used
[INFO] [stdout]  --> src/symbols.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const EXPORT_BLOCK_DELIM: &'static str = "===";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CODE_BLOCK_DELIM` is never used
[INFO] [stdout]  --> src/symbols.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const CODE_BLOCK_DELIM: &'static str = "```";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LITERAL_BLOCK_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const LITERAL_BLOCK_DELIM: &'static str = "%%%";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `QUOTE_BLOCK_INDICATOR` is never used
[INFO] [stdout]   --> src/symbols.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const QUOTE_BLOCK_INDICATOR: &'static str = ">";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `METADATA_SEPARATOR` is never used
[INFO] [stdout]   --> src/symbols.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const METADATA_SEPARATOR: &'static str = ":";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INLINE_MATH_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const INLINE_MATH_DELIM: &'static str = "$$";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INLINE_CODE_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const INLINE_CODE_DELIM: &'static str = "``";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INLINE_LITERAL_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const INLINE_LITERAL_DELIM: &'static str = "%%";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOLD_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const BOLD_DELIM: &'static str = "**";
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ITALIC_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const ITALIC_DELIM: &'static str = "//";
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNDERLINE_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const UNDERLINE_DELIM: &'static str = "__";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STRIKETHROUGH_DELIM` is never used
[INFO] [stdout]   --> src/symbols.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const STRIKETHROUGH_DELIM: &'static str = "~~";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINK_OPEN` is never used
[INFO] [stdout]   --> src/symbols.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const LINK_OPEN: &'static str = "[[";
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINK_CLOSE` is never used
[INFO] [stdout]   --> src/symbols.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const LINK_CLOSE: &'static str = "]]";
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINK_INTERMEDIATE` is never used
[INFO] [stdout]   --> src/symbols.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const LINK_INTERMEDIATE: &'static str = "][";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPACE` is never used
[INFO] [stdout]   --> src/symbols.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const SPACE: &'static str = " ";
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TAB` is never used
[INFO] [stdout]   --> src/symbols.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const TAB: &'static str = "\t";
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WINDOWS_LINE_BREAK` is never used
[INFO] [stdout]   --> src/symbols.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const WINDOWS_LINE_BREAK: &'static str = "\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINE_BREAK` is never used
[INFO] [stdout]   --> src/symbols.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const LINE_BREAK: &'static str = "\n";
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINE_BREAK_PATTERNS` is never used
[INFO] [stdout]   --> src/symbols.rs:32:11
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const LINE_BREAK_PATTERNS: [&'static str; 2] = [WINDOWS_LINE_BREAK, LINE_BREAK];
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl FilePosition {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 14 |     pub fn new(line: usize, position_in_line: usize, absolute_position: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Craindown` is never constructed
[INFO] [stdout]  --> src/craindown.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Craindown {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Craindown` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/craindown.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl Craindown {
[INFO] [stdout]   | -------------- associated function in this implementation
[INFO] [stdout] 9 |     pub fn new(blocks: &[BlockElement]) -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/craindown.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum BlockElement {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 18 |     Metadata(Metadata),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 19 |     SectionHeading(SectionHeading),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     TextBlock(TextBlock),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 21 |     MathBlock(MathBlock),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 22 |     ExportBlock(ExportBlock),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 23 |     CodeBlock(CodeBlock),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 24 |     LiteralBlock(LiteralBlock),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 25 |     QuoteBlock(QuoteBlock),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BlockElement` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `error_type`, `error_msg`, `lexeme`, and `position` are never read
[INFO] [stdout]   --> src/error.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct ParseError {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 17 |     pub error_type: ParseErrorType,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 18 |     pub error_msg: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 19 |     pub lexeme: String,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 20 |     pub position: FilePosition,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParseError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `UnexpectedEOF` and `UnexpectedEndOfTokenStream` are never constructed
[INFO] [stdout]   --> src/error.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub enum ParseErrorType {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 41 |     UnexpectedToken,
[INFO] [stdout] 42 |     UnexpectedEOF,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 43 |     UnclosedFormatSpecifier,
[INFO] [stdout] 44 |     UnexpectedEndOfTokenStream,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParseErrorType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tokenize` is never used
[INFO] [stdout]  --> src/lex.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn tokenize(s: &str) -> Vec<Token> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `MetadataIndicator`, `QuoteBlockIndicator`, `LinkOpen`, `StructuralSpace`, and `StructuralTab` are never constructed
[INFO] [stdout]   --> src/lex.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub enum TokenType {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 53 |     // TODO: I don't know if "Indicator" is sufficiently descriptive...
[INFO] [stdout] 54 |     MetadataIndicator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     QuoteBlockIndicator,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     LinkOpen,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     StructuralSpace,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     StructuralTab,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TokenType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MatchHandler` is never constructed
[INFO] [stdout]   --> src/lex.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | struct MatchHandler {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/lex.rs:89:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | impl MatchHandler {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 89 |     fn new(str_to_match: &str, token_type: TokenType, handler_fn: fn(&mut Scanner)) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/lex.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | impl Scanner {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 154 |     fn match_and_maybe_process(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     fn advance(&mut self, n: usize) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     fn len_to_end(&mut self) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     fn peek(&mut self) -> Option<char> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     fn peek_match(&mut self, str_to_match: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn push_token(&mut self, token_type: TokenType, lexeme: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     fn push_text_token(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     fn set_text_start_position(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     fn has_next(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     fn advance_past_inline_whitespace(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     fn collect_until(&mut self, patterns: &[&str]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 282 |     fn match_and_push_subset(&mut self, patterns_and_tokens: &[(&str, TokenType)]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn scan_tokens(&mut self) -> Vec<Token> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 416 |     fn check_match_handlers(&mut self, handlers: &[MatchHandler]) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     fn metadata(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     fn section_heading(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 489 |     fn handle_verbatim_block(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 538 |     fn math_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |     fn export_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 546 |     fn code_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     fn literal_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     fn quote_block(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 561 |     fn preceding_whitespace(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 577 |     fn handle_verbatim_inline(&mut self, delim_token_type: TokenType, delim_pattern: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     fn inline_math(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 594 |     fn inline_code(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 598 |     fn inline_literal(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 602 |     fn link(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 629 |     fn no_op(&mut self) {}
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INLINE_ELEMENT_TOKENS` is never used
[INFO] [stdout]   --> src/parse.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const INLINE_ELEMENT_TOKENS: [TokenType; 9] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]   --> src/parse.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn parse(tokens: &[Token]) -> Result<Craindown, (Craindown, Vec<ParseError>)> {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `blocks` and `errors` are never read
[INFO] [stdout]   --> src/parse.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | struct Parser<'a> {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     blocks: Vec<BlockElement>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 34 |     errors: Vec<ParseError>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/parse.rs:111:8
[INFO] [stdout]     |
[INFO] [stdout] 37  | impl<'a> Parser<'a> {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 111 |     fn is_at_end(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn advance_until(&mut self, types_to_match: &[TokenType]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     fn synchronize(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     fn parse(&mut self) -> Result<Craindown, (Craindown, Vec<ParseError>)> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     fn block(&mut self) -> ParseResult<BlockElement> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 534 |     fn quote_block_indicator(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     fn link_open(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 558 |     fn link_intermediate(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `METADATA_INDICATOR` is never used
[INFO] [stdout]  --> src/symbols.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const METADATA_INDICATOR: &'static str = "&&";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECTION_HEADING_INDICATOR` is never used
[INFO] [stdout]  --> src/symbols.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const SECTION_HEADING_INDICATOR: &'static str = "#";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `QUOTE_BLOCK_INDICATOR` is never used
[INFO] [stdout]   --> src/symbols.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const QUOTE_BLOCK_INDICATOR: &'static str = ">";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINK_OPEN` is never used
[INFO] [stdout]   --> src/symbols.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const LINK_OPEN: &'static str = "[[";
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SPACE` is never used
[INFO] [stdout]   --> src/symbols.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const SPACE: &'static str = " ";
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TAB` is never used
[INFO] [stdout]   --> src/symbols.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const TAB: &'static str = "\t";
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WINDOWS_LINE_BREAK` is never used
[INFO] [stdout]   --> src/symbols.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const WINDOWS_LINE_BREAK: &'static str = "\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LINE_BREAK_PATTERNS` is never used
[INFO] [stdout]   --> src/symbols.rs:32:11
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const LINE_BREAK_PATTERNS: [&'static str; 2] = [WINDOWS_LINE_BREAK, LINE_BREAK];
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `blocks` is never read
[INFO] [stdout]  --> src/craindown.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Craindown {
[INFO] [stdout]   |            --------- field in this struct
[INFO] [stdout] 5 |     blocks: Vec<BlockElement>,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Craindown` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INLINE_ELEMENT_TOKENS` is never used
[INFO] [stdout]   --> src/parse.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const INLINE_ELEMENT_TOKENS: [TokenType; 9] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `quote_block_indicator`, `link_open`, and `link_intermediate` are never used
[INFO] [stdout]    --> src/parse.rs:534:8
[INFO] [stdout]     |
[INFO] [stdout] 37  | impl<'a> Parser<'a> {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 534 |     fn quote_block_indicator(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     fn link_open(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 558 |     fn link_intermediate(&mut self) -> ParseResult<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.73s
[INFO] running `Command { std: "docker" "inspect" "0c4e75b626c1322c5ed7f4ab934f03a946a07ec25965be963ddf6fabb5af10c8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0c4e75b626c1322c5ed7f4ab934f03a946a07ec25965be963ddf6fabb5af10c8", kill_on_drop: false }`
[INFO] [stdout] 0c4e75b626c1322c5ed7f4ab934f03a946a07ec25965be963ddf6fabb5af10c8
