[INFO] fetching crate CESE4015_Concurrency_RJN_JVL 0.1.0...
[INFO] checking CESE4015_Concurrency_RJN_JVL-0.1.0 against 1.95.0 for pr-155915
[INFO] extracting crate CESE4015_Concurrency_RJN_JVL 0.1.0 into /workspace/builds/worker-7-tc1/source
[INFO] started tweaking crates.io crate CESE4015_Concurrency_RJN_JVL 0.1.0
[INFO] finished tweaking crates.io crate CESE4015_Concurrency_RJN_JVL 0.1.0
[INFO] tweaked toml for crates.io crate CESE4015_Concurrency_RJN_JVL 0.1.0 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate CESE4015_Concurrency_RJN_JVL 0.1.0 on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate CESE4015_Concurrency_RJN_JVL 0.1.0 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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded clap_lex v0.3.0
[INFO] [stderr]   Downloaded strsim v0.10.0
[INFO] [stderr]   Downloaded winapi-util v0.1.5
[INFO] [stderr]   Downloaded os_str_bytes v6.3.0
[INFO] [stderr]   Downloaded clap_derive v4.0.1
[INFO] [stderr]   Downloaded termcolor v1.1.3
[INFO] [stderr]   Downloaded proc-macro2 v1.0.46
[INFO] [stderr]   Downloaded heck v0.4.0
[INFO] [stderr]   Downloaded clap v4.0.4
[INFO] [stderr]   Downloaded aho-corasick v0.7.19
[INFO] [stderr]   Downloaded regex v1.6.0
[INFO] [stderr]   Downloaded quote v1.0.21
[INFO] [stderr]   Downloaded regex-syntax v0.6.27
[INFO] [stderr]   Downloaded libc v0.2.134
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] d8be4fa3ad30940deb7f7c19570d5df4b03700813b48cc1f1c7925ef6cec7153
[INFO] running `Command { std: "docker" "start" "-a" "d8be4fa3ad30940deb7f7c19570d5df4b03700813b48cc1f1c7925ef6cec7153", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d8be4fa3ad30940deb7f7c19570d5df4b03700813b48cc1f1c7925ef6cec7153", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d8be4fa3ad30940deb7f7c19570d5df4b03700813b48cc1f1c7925ef6cec7153", kill_on_drop: false }`
[INFO] [stdout] d8be4fa3ad30940deb7f7c19570d5df4b03700813b48cc1f1c7925ef6cec7153
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 9e865fa979e4d25d89a46fe74e7d853cb742fc356e7b5ad8a6ba146f4aa34b4f
[INFO] running `Command { std: "docker" "start" "-a" "9e865fa979e4d25d89a46fe74e7d853cb742fc356e7b5ad8a6ba146f4aa34b4f", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.46
[INFO] [stderr]    Compiling version_check v0.9.4
[INFO] [stderr]    Compiling quote v1.0.21
[INFO] [stderr]    Compiling unicode-ident v1.0.4
[INFO] [stderr]    Compiling syn v1.0.101
[INFO] [stderr]    Compiling memchr v2.5.0
[INFO] [stderr]    Compiling libc v0.2.134
[INFO] [stderr]     Checking os_str_bytes v6.3.0
[INFO] [stderr]    Compiling heck v0.4.0
[INFO] [stderr]     Checking once_cell v1.15.0
[INFO] [stderr]     Checking regex-syntax v0.6.27
[INFO] [stderr]     Checking termcolor v1.1.3
[INFO] [stderr]     Checking strsim v0.10.0
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking clap_lex v0.3.0
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking aho-corasick v0.7.19
[INFO] [stderr]     Checking regex v1.6.0
[INFO] [stderr]    Compiling clap_derive v4.0.1
[INFO] [stderr]     Checking clap v4.0.4
[INFO] [stderr]     Checking CESE4015_Concurrency_RJN_JVL v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:39:25
[INFO] [stdout]    |
[INFO] [stdout] 39 |                         /// call get file function that uses the path to check if there are files or directories
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 40 |                         get_file(entry.path(), regex.clone(), tx.clone());
[INFO] [stdout]    |                         ------------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 52 |     /// see all threads that is available for system
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     let threads = usize::from(std::thread::available_parallelism().unwrap());
[INFO] [stdout]    |     ------------------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |       /// if file make thread for every file
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 56 | /     if paths.is_file(){
[INFO] [stdout] 57 | |         /// wait if all threads are active
[INFO] [stdout] 58 | |         while ATOMIC_THREADS.load(Ordering::SeqCst)  == threads * 1000 {
[INFO] [stdout] ...  |
[INFO] [stdout] 74 | |         get_dir(dir, regex.clone(), tx.clone());
[INFO] [stdout] 75 | |     }
[INFO] [stdout]    | |_____- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |           /// wait if all threads are active
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 58 | /         while ATOMIC_THREADS.load(Ordering::SeqCst)  == threads * 1000 {
[INFO] [stdout] 59 | |             //thread::sleep(Duration::from_millis(1));        // system sleep
[INFO] [stdout] 60 | |         }
[INFO] [stdout]    | |_________- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |         /// make threads and add one to ATOMIC_THREADS to make sure that only a limited amount of threads are active
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 63 |         ATOMIC_THREADS.fetch_add(1, Ordering::SeqCst);
[INFO] [stdout]    |         --------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |         ///get recursively next directory
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |         let dir = paths.read_dir();
[INFO] [stdout]    |         --------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |               /// loop over all the matches found in the file and add them to the vector and set the boolean for found regex on true
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 | /             for range in regex.find_iter(&*file){
[INFO] [stdout] 90 | |                 range_vec.push(Range{start: range.start(), end: range.end() });
[INFO] [stdout] 91 | |                 regex_found = true;
[INFO] [stdout] 92 | |             }
[INFO] [stdout]    | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:94:13
[INFO] [stdout]     |
[INFO] [stdout]  94 |               /// if match make result struct and send the data
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  95 | /             if regex_found{
[INFO] [stdout]  96 | |                 let result = GrepResult {
[INFO] [stdout]  97 | |                     path: paths.clone(),
[INFO] [stdout]  98 | |                     content: file,
[INFO] [stdout] ...   |
[INFO] [stdout] 107 | |             }
[INFO] [stdout]     | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:111:5
[INFO] [stdout]     |
[INFO] [stdout] 111 |     /// subtract threads count
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 112 |     ATOMIC_THREADS.fetch_sub(1, Ordering::SeqCst);
[INFO] [stdout]     |     --------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 116 |     ///Parse arguments, using the clap crate
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 117 |     let args: Args = Args::parse();
[INFO] [stdout]     |     ------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:120:5
[INFO] [stdout]     |
[INFO] [stdout] 120 |       /// Get the paths that we should search
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 121 | /     let paths = if args.paths.is_empty() {
[INFO] [stdout] 122 | |         ///If no paths were provided, we search the current path
[INFO] [stdout] 123 | |         vec![std::env::current_dir().unwrap()]
[INFO] [stdout] 124 | |     } else {
[INFO] [stdout] 125 | |         /// Take all paths from the command line arguments, and map the paths to create PathBufs
[INFO] [stdout] 126 | |         args.paths.iter().map(PathBuf::from).collect()
[INFO] [stdout] 127 | |     };
[INFO] [stdout]     | |______- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:122:9
[INFO] [stdout]     |
[INFO] [stdout] 122 |         ///If no paths were provided, we search the current path
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]     |
[INFO] [stdout]     = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:125:9
[INFO] [stdout]     |
[INFO] [stdout] 125 |         /// Take all paths from the command line arguments, and map the paths to create PathBufs
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 126 |         args.paths.iter().map(PathBuf::from).collect()
[INFO] [stdout]     |         ---------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 138 |       /// loop through paths
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 139 | /     for i in paths.iter(){
[INFO] [stdout] 140 | |         /// get directory
[INFO] [stdout] 141 | |         let dir = i.read_dir();
[INFO] [stdout] 142 | |         get_dir(dir, regex.clone(), tx.clone());
[INFO] [stdout] 143 | |     }
[INFO] [stdout]     | |_____- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |         /// get directory
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 141 |         let dir = i.read_dir();
[INFO] [stdout]     |         ----------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:176:13
[INFO] [stdout]     |
[INFO] [stdout] 176 |               /// Find the index of the first byte before the range that is a newline character, plus one.
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 177 | /             let mut ctx_start = (0..range.start)
[INFO] [stdout] 178 | |                 .rev()
[INFO] [stdout] 179 | |                 .find(|p| self.content[*p] == b'\n' || self.content[*p] == b'\r')
[INFO] [stdout] 180 | |                 .map(|p| p + 1)
[INFO] [stdout] 181 | |                 .unwrap_or(0);
[INFO] [stdout]     | |______________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |               /// Find the index of the first byte after the range that is a newline character (not minus one because it is exclusive)
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 184 | /             let mut ctx_end = (range.end..self.content.len())
[INFO] [stdout] 185 | |                 .find(|p| self.content[*p] == b'\n' || self.content[*p] == b'\r')
[INFO] [stdout] 186 | |                 .unwrap_or(self.content.len());
[INFO] [stdout]     | |_______________________________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:188:13
[INFO] [stdout]     |
[INFO] [stdout] 188 |               /// if the context is too large, reduce its size
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 189 | /             if ctx_start + max_context < range.start {
[INFO] [stdout] 190 | |                 ctx_start = range.start - max_context;
[INFO] [stdout] 191 | |             }
[INFO] [stdout]     | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:196:13
[INFO] [stdout]     |
[INFO] [stdout] 196 |               /// Finally, print the result
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 197 | /             writeln!(
[INFO] [stdout] 198 | |                 f,
[INFO] [stdout] 199 | |                 "{}",
[INFO] [stdout] 200 | |                 String::from_utf8_lossy(&self.content[ctx_start..ctx_end])
[INFO] [stdout] 201 | |             )?;
[INFO] [stdout]     | |______________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |               /// Print ^^^^ underneath matched part
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 203 | /             writeln!(
[INFO] [stdout] 204 | |                 f,
[INFO] [stdout] 205 | |                 "{}{}{}",
[INFO] [stdout] 206 | |                 " ".repeat(range.start - ctx_start),
[INFO] [stdout] 207 | |                 "^".repeat(range.end - range.start),
[INFO] [stdout] 208 | |                 " ".repeat(ctx_end - range.end)
[INFO] [stdout] 209 | |             )?;
[INFO] [stdout]     | |______________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:39:25
[INFO] [stdout]    |
[INFO] [stdout] 39 |                         /// call get file function that uses the path to check if there are files or directories
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 40 |                         get_file(entry.path(), regex.clone(), tx.clone());
[INFO] [stdout]    |                         ------------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 52 |     /// see all threads that is available for system
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     let threads = usize::from(std::thread::available_parallelism().unwrap());
[INFO] [stdout]    |     ------------------------------------------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |       /// if file make thread for every file
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 56 | /     if paths.is_file(){
[INFO] [stdout] 57 | |         /// wait if all threads are active
[INFO] [stdout] 58 | |         while ATOMIC_THREADS.load(Ordering::SeqCst)  == threads * 1000 {
[INFO] [stdout] ...  |
[INFO] [stdout] 74 | |         get_dir(dir, regex.clone(), tx.clone());
[INFO] [stdout] 75 | |     }
[INFO] [stdout]    | |_____- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |           /// wait if all threads are active
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 58 | /         while ATOMIC_THREADS.load(Ordering::SeqCst)  == threads * 1000 {
[INFO] [stdout] 59 | |             //thread::sleep(Duration::from_millis(1));        // system sleep
[INFO] [stdout] 60 | |         }
[INFO] [stdout]    | |_________- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |         /// make threads and add one to ATOMIC_THREADS to make sure that only a limited amount of threads are active
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 63 |         ATOMIC_THREADS.fetch_add(1, Ordering::SeqCst);
[INFO] [stdout]    |         --------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |         ///get recursively next directory
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 73 |         let dir = paths.read_dir();
[INFO] [stdout]    |         --------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/main.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |               /// loop over all the matches found in the file and add them to the vector and set the boolean for found regex on true
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 89 | /             for range in regex.find_iter(&*file){
[INFO] [stdout] 90 | |                 range_vec.push(Range{start: range.start(), end: range.end() });
[INFO] [stdout] 91 | |                 regex_found = true;
[INFO] [stdout] 92 | |             }
[INFO] [stdout]    | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:94:13
[INFO] [stdout]     |
[INFO] [stdout]  94 |               /// if match make result struct and send the data
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  95 | /             if regex_found{
[INFO] [stdout]  96 | |                 let result = GrepResult {
[INFO] [stdout]  97 | |                     path: paths.clone(),
[INFO] [stdout]  98 | |                     content: file,
[INFO] [stdout] ...   |
[INFO] [stdout] 107 | |             }
[INFO] [stdout]     | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:111:5
[INFO] [stdout]     |
[INFO] [stdout] 111 |     /// subtract threads count
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 112 |     ATOMIC_THREADS.fetch_sub(1, Ordering::SeqCst);
[INFO] [stdout]     |     --------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 116 |     ///Parse arguments, using the clap crate
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 117 |     let args: Args = Args::parse();
[INFO] [stdout]     |     ------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:120:5
[INFO] [stdout]     |
[INFO] [stdout] 120 |       /// Get the paths that we should search
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 121 | /     let paths = if args.paths.is_empty() {
[INFO] [stdout] 122 | |         ///If no paths were provided, we search the current path
[INFO] [stdout] 123 | |         vec![std::env::current_dir().unwrap()]
[INFO] [stdout] 124 | |     } else {
[INFO] [stdout] 125 | |         /// Take all paths from the command line arguments, and map the paths to create PathBufs
[INFO] [stdout] 126 | |         args.paths.iter().map(PathBuf::from).collect()
[INFO] [stdout] 127 | |     };
[INFO] [stdout]     | |______- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:122:9
[INFO] [stdout]     |
[INFO] [stdout] 122 |         ///If no paths were provided, we search the current path
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]     |
[INFO] [stdout]     = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:125:9
[INFO] [stdout]     |
[INFO] [stdout] 125 |         /// Take all paths from the command line arguments, and map the paths to create PathBufs
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 126 |         args.paths.iter().map(PathBuf::from).collect()
[INFO] [stdout]     |         ---------------------------------------------- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:138:5
[INFO] [stdout]     |
[INFO] [stdout] 138 |       /// loop through paths
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 139 | /     for i in paths.iter(){
[INFO] [stdout] 140 | |         /// get directory
[INFO] [stdout] 141 | |         let dir = i.read_dir();
[INFO] [stdout] 142 | |         get_dir(dir, regex.clone(), tx.clone());
[INFO] [stdout] 143 | |     }
[INFO] [stdout]     | |_____- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 140 |         /// get directory
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 141 |         let dir = i.read_dir();
[INFO] [stdout]     |         ----------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:176:13
[INFO] [stdout]     |
[INFO] [stdout] 176 |               /// Find the index of the first byte before the range that is a newline character, plus one.
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 177 | /             let mut ctx_start = (0..range.start)
[INFO] [stdout] 178 | |                 .rev()
[INFO] [stdout] 179 | |                 .find(|p| self.content[*p] == b'\n' || self.content[*p] == b'\r')
[INFO] [stdout] 180 | |                 .map(|p| p + 1)
[INFO] [stdout] 181 | |                 .unwrap_or(0);
[INFO] [stdout]     | |______________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |               /// Find the index of the first byte after the range that is a newline character (not minus one because it is exclusive)
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 184 | /             let mut ctx_end = (range.end..self.content.len())
[INFO] [stdout] 185 | |                 .find(|p| self.content[*p] == b'\n' || self.content[*p] == b'\r')
[INFO] [stdout] 186 | |                 .unwrap_or(self.content.len());
[INFO] [stdout]     | |_______________________________________________- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:188:13
[INFO] [stdout]     |
[INFO] [stdout] 188 |               /// if the context is too large, reduce its size
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 189 | /             if ctx_start + max_context < range.start {
[INFO] [stdout] 190 | |                 ctx_start = range.start - max_context;
[INFO] [stdout] 191 | |             }
[INFO] [stdout]     | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:196:13
[INFO] [stdout]     |
[INFO] [stdout] 196 |               /// Finally, print the result
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 197 | /             writeln!(
[INFO] [stdout] 198 | |                 f,
[INFO] [stdout] 199 | |                 "{}",
[INFO] [stdout] 200 | |                 String::from_utf8_lossy(&self.content[ctx_start..ctx_end])
[INFO] [stdout] 201 | |             )?;
[INFO] [stdout]     | |______________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:202:13
[INFO] [stdout]     |
[INFO] [stdout] 202 |               /// Print ^^^^ underneath matched part
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 203 | /             writeln!(
[INFO] [stdout] 204 | |                 f,
[INFO] [stdout] 205 | |                 "{}{}{}",
[INFO] [stdout] 206 | |                 " ".repeat(range.start - ctx_start),
[INFO] [stdout] 207 | |                 "^".repeat(range.end - range.start),
[INFO] [stdout] 208 | |                 " ".repeat(ctx_end - range.end)
[INFO] [stdout] 209 | |             )?;
[INFO] [stdout]     | |______________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.14s
[INFO] running `Command { std: "docker" "inspect" "9e865fa979e4d25d89a46fe74e7d853cb742fc356e7b5ad8a6ba146f4aa34b4f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9e865fa979e4d25d89a46fe74e7d853cb742fc356e7b5ad8a6ba146f4aa34b4f", kill_on_drop: false }`
[INFO] [stdout] 9e865fa979e4d25d89a46fe74e7d853cb742fc356e7b5ad8a6ba146f4aa34b4f
