rust-crypto 0.2.36

A (mostly) pure-Rust implementation of various common cryptographic algorithms.
Documentation
Build #1732926 2025-02-11T01:55:36.314905+00:00
# rustc version
rustc 1.86.0-nightly (6171d944a 2025-02-10)# docs.rs version
docsrs 0.6.0 (35977596 2025-02-09)# build log
[INFO] running `Command { std: "docker" "create" "-v" "/home/cratesfyi/workspace-builder/builds/rust-crypto-0.2.36/target:/opt/rustwide/target:rw,Z" "-v" "/home/cratesfyi/workspace-builder/builds/rust-crypto-0.2.36/source:/opt/rustwide/workdir:ro,Z" "-v" "/home/cratesfyi/workspace-builder/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/home/cratesfyi/workspace-builder/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "DOCS_RS=1" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "6442450944" "--cpus" "6" "--user" "1001:1001" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "rustdoc" "--lib" "-Zrustdoc-map" "--config" "build.rustdocflags=[\"--cfg\", \"docsrs\", \"-Z\", \"unstable-options\", \"--emit=invocation-specific\", \"--resource-suffix\", \"-20250210-1.86.0-nightly-6171d944a\", \"--static-root-path\", \"/-/rustdoc.static/\", \"--cap-lints\", \"warn\", \"--extern-html-root-takes-precedence\"]" "--offline" "-Zunstable-options" "--config=doc.extern-map.registries.crates-io=\"https://docs.rs/{pkg_name}/{version}/x86_64-unknown-linux-gnu\"" "-Zrustdoc-scrape-examples" "-j6" "--target" "x86_64-unknown-linux-gnu", kill_on_drop: false }`
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] [stdout] 4bca83c7450bee4ab8ba7d6f71c66d682a8026e21ab06737ea88fcb419821e4f
[INFO] running `Command { std: "docker" "start" "-a" "4bca83c7450bee4ab8ba7d6f71c66d682a8026e21ab06737ea88fcb419821e4f", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: use of deprecated type alias `gcc::Config`: gcc::Config has been renamed to gcc::Build
[INFO] [stderr]   --> build.rs:16:31
[INFO] [stderr]    |
[INFO] [stderr] 16 |         let mut config = gcc::Config::new();
[INFO] [stderr]    |                               ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated type alias `gcc::Config`: gcc::Config has been renamed to gcc::Build
[INFO] [stderr]   --> build.rs:25:28
[INFO] [stderr]    |
[INFO] [stderr] 25 |         let mut cfg = gcc::Config::new();
[INFO] [stderr]    |                            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated associated function `gcc::Build::new`: crate has been renamed to `cc`, the `gcc` name is not maintained
[INFO] [stderr]   --> build.rs:16:39
[INFO] [stderr]    |
[INFO] [stderr] 16 |         let mut config = gcc::Config::new();
[INFO] [stderr]    |                                       ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated associated function `gcc::Build::new`: crate has been renamed to `cc`, the `gcc` name is not maintained
[INFO] [stderr]   --> build.rs:25:36
[INFO] [stderr]    |
[INFO] [stderr] 25 |         let mut cfg = gcc::Config::new();
[INFO] [stderr]    |                                    ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rust-crypto` (build script) generated 4 warnings
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> src/blockmodes.rs:155:10
[INFO] [stderr]     |
[INFO] [stderr] 155 |         };
[INFO] [stderr]     |          ^ help: remove this semicolon
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary trailing semicolon
[INFO] [stderr]    --> src/blockmodes.rs:243:10
[INFO] [stderr]     |
[INFO] [stderr] 243 |         };
[INFO] [stderr]     |          ^ help: remove this semicolon
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/fortuna.rs:63:29
[INFO] [stderr]    |
[INFO] [stderr] 63 | const MAX_GEN_SIZE: usize = (1 << 20);
[INFO] [stderr]    |                             ^       ^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr] 63 - const MAX_GEN_SIZE: usize = (1 << 20);
[INFO] [stderr] 63 + const MAX_GEN_SIZE: usize = 1 << 20;
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/pbkdf2.rs:133:19
[INFO] [stderr]     |
[INFO] [stderr] 133 |     let mut rng = try!(OsRng::new());
[INFO] [stderr]     |                   ^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(deprecated)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated macro `try`: use the `?` operator instead
[INFO] [stderr]    --> src/scrypt.rs:273:19
[INFO] [stderr]     |
[INFO] [stderr] 273 |     let mut rng = try!(OsRng::new());
[INFO] [stderr]     |                   ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: extern declarations without an explicit ABI are deprecated
[INFO] [stderr]   --> src/util.rs:10:1
[INFO] [stderr]    |
[INFO] [stderr] 10 | extern {
[INFO] [stderr]    | ^^^^^^ help: explicitly specify the C ABI: `extern "C"`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(missing_abi)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: extern declarations without an explicit ABI are deprecated
[INFO] [stderr]   --> src/util.rs:21:1
[INFO] [stderr]    |
[INFO] [stderr] 21 | extern {
[INFO] [stderr]    | ^^^^^^ help: explicitly specify the C ABI: `extern "C"`
[INFO] [stderr] 
[INFO] [stderr] warning: extern declarations without an explicit ABI are deprecated
[INFO] [stderr]   --> src/aesni.rs:96:1
[INFO] [stderr]    |
[INFO] [stderr] 96 | extern {
[INFO] [stderr]    | ^^^^^^ help: explicitly specify the C ABI: `extern "C"`
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stderr]    --> src/cryptoutil.rs:100:37
[INFO] [stderr]     |
[INFO] [stderr] 100 |             let mut tmp: u64 = mem::uninitialized();
[INFO] [stderr]     |                                     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stderr]    --> src/cryptoutil.rs:116:37
[INFO] [stderr]     |
[INFO] [stderr] 116 |             let mut tmp: u64 = mem::uninitialized();
[INFO] [stderr]     |                                     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stderr]    --> src/cryptoutil.rs:132:37
[INFO] [stderr]     |
[INFO] [stderr] 132 |             let mut tmp: u32 = mem::uninitialized();
[INFO] [stderr]     |                                     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stderr]    --> src/cryptoutil.rs:148:37
[INFO] [stderr]     |
[INFO] [stderr] 148 |             let mut tmp: u32 = mem::uninitialized();
[INFO] [stderr]     |                                     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stderr]    --> src/cryptoutil.rs:161:33
[INFO] [stderr]     |
[INFO] [stderr] 161 |         let mut tmp: u32 = mem::uninitialized();
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stderr]    --> src/cryptoutil.rs:171:33
[INFO] [stderr]     |
[INFO] [stderr] 171 |         let mut tmp: u32 = mem::uninitialized();
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stderr]   --> src/ghash.rs:47:50
[INFO] [stderr]    |
[INFO] [stderr] 47 |         let mut result: [u8; 16] = unsafe { mem::uninitialized() };
[INFO] [stderr]    |                                                  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stderr]    --> src/ghash.rs:166:53
[INFO] [stderr]     |
[INFO] [stderr] 166 |         let mut table: [Gf128; 128] = unsafe { mem::uninitialized() };
[INFO] [stderr]     |                                                     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated type alias `libc::uint8_t`: Use u8 instead.
[INFO] [stderr]   --> src/util.rs:28:24
[INFO] [stderr]    |
[INFO] [stderr] 28 |             val: libc::uint8_t,
[INFO] [stderr]    |                        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stderr]   --> src/whirlpool.rs:38:15
[INFO] [stderr]    |
[INFO] [stderr] 38 | use std::mem::uninitialized;
[INFO] [stderr]    |               ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stderr]    --> src/whirlpool.rs:153:36
[INFO] [stderr]     |
[INFO] [stderr] 153 |     let mut k: [u64; 8] = unsafe { uninitialized() };
[INFO] [stderr]     |                                    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stderr]    --> src/whirlpool.rs:154:40
[INFO] [stderr]     |
[INFO] [stderr] 154 |     let mut block: [u64; 8] = unsafe { uninitialized() };
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stderr]    --> src/whirlpool.rs:155:40
[INFO] [stderr]     |
[INFO] [stderr] 155 |     let mut state: [u64; 8] = unsafe { uninitialized() };
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: use of deprecated function `std::mem::uninitialized`: use `mem::MaybeUninit` instead
[INFO] [stderr]    --> src/whirlpool.rs:156:36
[INFO] [stderr]     |
[INFO] [stderr] 156 |     let mut l: [u64; 8] = unsafe { uninitialized() };
[INFO] [stderr]     |                                    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/aes_gcm.rs:15:17
[INFO] [stderr]    |
[INFO] [stderr] 15 |     cipher: Box<SynchronousStreamCipher + 'a>,
[INFO] [stderr]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 15 |     cipher: Box<dyn SynchronousStreamCipher + 'a>,
[INFO] [stderr]    |                 +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/aes.rs:29:28
[INFO] [stderr]    |
[INFO] [stderr] 29 |         padding: X) -> Box<Encryptor> {
[INFO] [stderr]    |                            ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 29 |         padding: X) -> Box<dyn Encryptor> {
[INFO] [stderr]    |                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/aes.rs:85:28
[INFO] [stderr]    |
[INFO] [stderr] 85 |         padding: X) -> Box<Decryptor> {
[INFO] [stderr]    |                            ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 85 |         padding: X) -> Box<dyn Decryptor> {
[INFO] [stderr]    |                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/aes.rs:142:28
[INFO] [stderr]     |
[INFO] [stderr] 142 |         padding: X) -> Box<Encryptor + 'static> {
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 142 |         padding: X) -> Box<dyn Encryptor + 'static> {
[INFO] [stderr]     |                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/aes.rs:200:28
[INFO] [stderr]     |
[INFO] [stderr] 200 |         padding: X) -> Box<Decryptor + 'static> {
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 200 |         padding: X) -> Box<dyn Decryptor + 'static> {
[INFO] [stderr]     |                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/aes.rs:257:27
[INFO] [stderr]     |
[INFO] [stderr] 257 |         iv: &[u8]) -> Box<SynchronousStreamCipher + 'static> {
[INFO] [stderr]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 257 |         iv: &[u8]) -> Box<dyn SynchronousStreamCipher + 'static> {
[INFO] [stderr]     |                           +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/symmetriccipher.rs:58:24
[INFO] [stderr]    |
[INFO] [stderr] 58 | impl Encryptor for Box<SynchronousStreamCipher + 'static> {
[INFO] [stderr]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 58 | impl Encryptor for Box<dyn SynchronousStreamCipher + 'static> {
[INFO] [stderr]    |                        +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/symmetriccipher.rs:65:24
[INFO] [stderr]    |
[INFO] [stderr] 65 | impl Decryptor for Box<SynchronousStreamCipher + 'static> {
[INFO] [stderr]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 65 | impl Decryptor for Box<dyn SynchronousStreamCipher + 'static> {
[INFO] [stderr]    |                        +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/symmetriccipher.rs:51:38
[INFO] [stderr]    |
[INFO] [stderr] 51 | impl SynchronousStreamCipher for Box<SynchronousStreamCipher + 'static> {
[INFO] [stderr]    |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 51 | impl SynchronousStreamCipher for Box<dyn SynchronousStreamCipher + 'static> {
[INFO] [stderr]    |                                      +++
[INFO] [stderr] 
[INFO] [stderr] warning: methods `write_u32_be` and `write_u64_be` are never used
[INFO] [stderr]    --> src/cryptoutil.rs:215:8
[INFO] [stderr]     |
[INFO] [stderr] 212 | pub trait WriteExt {
[INFO] [stderr]     |           -------- methods in this trait
[INFO] [stderr] ...
[INFO] [stderr] 215 |     fn write_u32_be(&mut self, val: u32) -> io::Result<()>;
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 216 |     fn write_u64_le(&mut self, val: u64) -> io::Result<()>;
[INFO] [stderr] 217 |     fn write_u64_be(&mut self, val: u64) -> io::Result<()>;
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `current_buffer` is never used
[INFO] [stderr]    --> src/cryptoutil.rs:350:8
[INFO] [stderr]     |
[INFO] [stderr] 330 | pub trait FixedBuffer {
[INFO] [stderr]     |           ----------- method in this trait
[INFO] [stderr] ...
[INFO] [stderr] 350 |     fn current_buffer<'s>(&'s mut self) -> &'s [u8];
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: the type `u64` does not permit being left uninitialized
[INFO] [stderr]    --> src/cryptoutil.rs:100:32
[INFO] [stderr]     |
[INFO] [stderr] 100 |             let mut tmp: u64 = mem::uninitialized();
[INFO] [stderr]     |                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |                                |
[INFO] [stderr]     |                                this code causes undefined behavior when executed
[INFO] [stderr]     |                                help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
[INFO] [stderr]     |
[INFO] [stderr]     = note: integers must be initialized
[INFO] [stderr]     = note: `#[warn(invalid_value)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: the type `u64` does not permit being left uninitialized
[INFO] [stderr]    --> src/cryptoutil.rs:116:32
[INFO] [stderr]     |
[INFO] [stderr] 116 |             let mut tmp: u64 = mem::uninitialized();
[INFO] [stderr]     |                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |                                |
[INFO] [stderr]     |                                this code causes undefined behavior when executed
[INFO] [stderr]     |                                help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
[INFO] [stderr]     |
[INFO] [stderr]     = note: integers must be initialized
[INFO] [stderr] 
[INFO] [stderr] warning: the type `u32` does not permit being left uninitialized
[INFO] [stderr]    --> src/cryptoutil.rs:132:32
[INFO] [stderr]     |
[INFO] [stderr] 132 |             let mut tmp: u32 = mem::uninitialized();
[INFO] [stderr]     |                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |                                |
[INFO] [stderr]     |                                this code causes undefined behavior when executed
[INFO] [stderr]     |                                help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
[INFO] [stderr]     |
[INFO] [stderr]     = note: integers must be initialized
[INFO] [stderr] 
[INFO] [stderr] warning: the type `u32` does not permit being left uninitialized
[INFO] [stderr]    --> src/cryptoutil.rs:148:32
[INFO] [stderr]     |
[INFO] [stderr] 148 |             let mut tmp: u32 = mem::uninitialized();
[INFO] [stderr]     |                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |                                |
[INFO] [stderr]     |                                this code causes undefined behavior when executed
[INFO] [stderr]     |                                help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
[INFO] [stderr]     |
[INFO] [stderr]     = note: integers must be initialized
[INFO] [stderr] 
[INFO] [stderr] warning: the type `u32` does not permit being left uninitialized
[INFO] [stderr]    --> src/cryptoutil.rs:161:28
[INFO] [stderr]     |
[INFO] [stderr] 161 |         let mut tmp: u32 = mem::uninitialized();
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |                            |
[INFO] [stderr]     |                            this code causes undefined behavior when executed
[INFO] [stderr]     |                            help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
[INFO] [stderr]     |
[INFO] [stderr]     = note: integers must be initialized
[INFO] [stderr] 
[INFO] [stderr] warning: the type `u32` does not permit being left uninitialized
[INFO] [stderr]    --> src/cryptoutil.rs:171:28
[INFO] [stderr]     |
[INFO] [stderr] 171 |         let mut tmp: u32 = mem::uninitialized();
[INFO] [stderr]     |                            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |                            |
[INFO] [stderr]     |                            this code causes undefined behavior when executed
[INFO] [stderr]     |                            help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
[INFO] [stderr]     |
[INFO] [stderr]     = note: integers must be initialized
[INFO] [stderr] 
[INFO] [stderr] warning: the type `[u8; 16]` does not permit being left uninitialized
[INFO] [stderr]   --> src/ghash.rs:47:45
[INFO] [stderr]    |
[INFO] [stderr] 47 |         let mut result: [u8; 16] = unsafe { mem::uninitialized() };
[INFO] [stderr]    |                                             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |                                             |
[INFO] [stderr]    |                                             this code causes undefined behavior when executed
[INFO] [stderr]    |                                             help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
[INFO] [stderr]    |
[INFO] [stderr]    = note: integers must be initialized
[INFO] [stderr] 
[INFO] [stderr] warning: the type `[Gf128; 128]` does not permit being left uninitialized
[INFO] [stderr]    --> src/ghash.rs:166:48
[INFO] [stderr]     |
[INFO] [stderr] 166 |         let mut table: [Gf128; 128] = unsafe { mem::uninitialized() };
[INFO] [stderr]     |                                                ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |                                                |
[INFO] [stderr]     |                                                this code causes undefined behavior when executed
[INFO] [stderr]     |                                                help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
[INFO] [stderr]     |
[INFO] [stderr] note: in this struct field
[INFO] [stderr]    --> src/ghash.rs:29:16
[INFO] [stderr]     |
[INFO] [stderr] 29  | struct Gf128 { d: simd::u32x4 }
[INFO] [stderr]     |                ^^^^^^^^^^^^^^
[INFO] [stderr] note: integers must be initialized (in this struct field)
[INFO] [stderr]    --> src/simd.rs:28:22
[INFO] [stderr]     |
[INFO] [stderr] 28  |     pub struct u32x4(pub u32, pub u32, pub u32, pub u32);
[INFO] [stderr]     |                      ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: the type `[u64; 8]` does not permit being left uninitialized
[INFO] [stderr]    --> src/whirlpool.rs:153:36
[INFO] [stderr]     |
[INFO] [stderr] 153 |     let mut k: [u64; 8] = unsafe { uninitialized() };
[INFO] [stderr]     |                                    ^^^^^^^^^^^^^^^
[INFO] [stderr]     |                                    |
[INFO] [stderr]     |                                    this code causes undefined behavior when executed
[INFO] [stderr]     |                                    help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
[INFO] [stderr]     |
[INFO] [stderr]     = note: integers must be initialized
[INFO] [stderr] 
[INFO] [stderr] warning: the type `[u64; 8]` does not permit being left uninitialized
[INFO] [stderr]    --> src/whirlpool.rs:154:40
[INFO] [stderr]     |
[INFO] [stderr] 154 |     let mut block: [u64; 8] = unsafe { uninitialized() };
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^
[INFO] [stderr]     |                                        |
[INFO] [stderr]     |                                        this code causes undefined behavior when executed
[INFO] [stderr]     |                                        help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
[INFO] [stderr]     |
[INFO] [stderr]     = note: integers must be initialized
[INFO] [stderr] 
[INFO] [stderr] warning: the type `[u64; 8]` does not permit being left uninitialized
[INFO] [stderr]    --> src/whirlpool.rs:155:40
[INFO] [stderr]     |
[INFO] [stderr] 155 |     let mut state: [u64; 8] = unsafe { uninitialized() };
[INFO] [stderr]     |                                        ^^^^^^^^^^^^^^^
[INFO] [stderr]     |                                        |
[INFO] [stderr]     |                                        this code causes undefined behavior when executed
[INFO] [stderr]     |                                        help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
[INFO] [stderr]     |
[INFO] [stderr]     = note: integers must be initialized
[INFO] [stderr] 
[INFO] [stderr] warning: the type `[u64; 8]` does not permit being left uninitialized
[INFO] [stderr]    --> src/whirlpool.rs:156:36
[INFO] [stderr]     |
[INFO] [stderr] 156 |     let mut l: [u64; 8] = unsafe { uninitialized() };
[INFO] [stderr]     |                                    ^^^^^^^^^^^^^^^
[INFO] [stderr]     |                                    |
[INFO] [stderr]     |                                    this code causes undefined behavior when executed
[INFO] [stderr]     |                                    help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
[INFO] [stderr]     |
[INFO] [stderr]     = note: integers must be initialized
[INFO] [stderr] 
[INFO] [stderr] warning: `rust-crypto` (lib) generated 45 warnings (run `cargo fix --lib -p rust-crypto` to apply 13 suggestions)
[INFO] [stderr]     Scraping rust-crypto v0.2.36 (/opt/rustwide/workdir)
[INFO] [stderr]  Documenting rust-crypto v0.2.36 (/opt/rustwide/workdir)
[INFO] [stderr] warning: unresolved link to `1`
[INFO] [stderr]   --> src/aessafe.rs:37:11
[INFO] [stderr]    |
[INFO] [stderr] 37 | problems [1]. The issue is that not all table lookups occur in constant time - an address that was
[INFO] [stderr]    |           ^ no item named `1` in scope
[INFO] [stderr]    |
[INFO] [stderr]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr]    = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `4`
[INFO] [stderr]   --> src/aessafe.rs:49:97
[INFO] [stderr]    |
[INFO] [stderr] 49 | techniques. One of the earliest implementations of this technique was for a DES implementation [4].
[INFO] [stderr]    |                                                                                                 ^ no item named `4` in scope
[INFO] [stderr]    |
[INFO] [stderr]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `5`
[INFO] [stderr]   --> src/aessafe.rs:64:88
[INFO] [stderr]    |
[INFO] [stderr] 64 | 128 bits (as in an XMM register). This implementation follows the same strategy as in [5] and that
[INFO] [stderr]    |                                                                                        ^ no item named `5` in scope
[INFO] [stderr]    |
[INFO] [stderr]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `5`
[INFO] [stderr]   --> src/aessafe.rs:73:38
[INFO] [stderr]    |
[INFO] [stderr] 73 | for the MixColumns step. Again, see [5] for details. Due to the design of AES, its them possible to
[INFO] [stderr]    |                                      ^ no item named `5` in scope
[INFO] [stderr]    |
[INFO] [stderr]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `5`
[INFO] [stderr]   --> src/aessafe.rs:82:16
[INFO] [stderr]    |
[INFO] [stderr] 82 | formulas from [5], [6], and [7] to implement these steps.
[INFO] [stderr]    |                ^ no item named `5` in scope
[INFO] [stderr]    |
[INFO] [stderr]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `6`
[INFO] [stderr]   --> src/aessafe.rs:82:21
[INFO] [stderr]    |
[INFO] [stderr] 82 | formulas from [5], [6], and [7] to implement these steps.
[INFO] [stderr]    |                     ^ no item named `6` in scope
[INFO] [stderr]    |
[INFO] [stderr]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `7`
[INFO] [stderr]   --> src/aessafe.rs:82:30
[INFO] [stderr]    |
[INFO] [stderr] 82 | formulas from [5], [6], and [7] to implement these steps.
[INFO] [stderr]    |                              ^ no item named `7` in scope
[INFO] [stderr]    |
[INFO] [stderr]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `7`
[INFO] [stderr]    --> src/aessafe.rs:105:78
[INFO] [stderr]     |
[INFO] [stderr] 105 | finite field which allows for efficient computation of the AES S-Boxes. See [7] for details.
[INFO] [stderr]     |                                                                              ^ no item named `7` in scope
[INFO] [stderr]     |
[INFO] [stderr]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `1`
[INFO] [stderr]    --> src/aessafe.rs:109:2
[INFO] [stderr]     |
[INFO] [stderr] 109 | [1] - "Cache-Collision Timing Attacks Against AES". Joseph Bonneau and Ilya Mironov.
[INFO] [stderr]     |  ^ no item named `1` in scope
[INFO] [stderr]     |
[INFO] [stderr]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `2`
[INFO] [stderr]    --> src/aessafe.rs:111:2
[INFO] [stderr]     |
[INFO] [stderr] 111 | [2] - "Software mitigations to hedge AES against cache-based software side channel vulnerabilities".
[INFO] [stderr]     |  ^ no item named `2` in scope
[INFO] [stderr]     |
[INFO] [stderr]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `3`
[INFO] [stderr]    --> src/aessafe.rs:113:2
[INFO] [stderr]     |
[INFO] [stderr] 113 | [3] - "Cache Attacks and Countermeasures: the Case of AES (Extended Version)".
[INFO] [stderr]     |  ^ no item named `3` in scope
[INFO] [stderr]     |
[INFO] [stderr]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `4`
[INFO] [stderr]    --> src/aessafe.rs:115:2
[INFO] [stderr]     |
[INFO] [stderr] 115 | [4] - "A Fast New DES Implementation in Software". Eli Biham.
[INFO] [stderr]     |  ^ no item named `4` in scope
[INFO] [stderr]     |
[INFO] [stderr]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `5`
[INFO] [stderr]    --> src/aessafe.rs:117:2
[INFO] [stderr]     |
[INFO] [stderr] 117 | [5] - "Faster and Timing-Attack Resistant AES-GCM". Emilia K ̈asper and Peter Schwabe.
[INFO] [stderr]     |  ^ no item named `5` in scope
[INFO] [stderr]     |
[INFO] [stderr]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `6`
[INFO] [stderr]    --> src/aessafe.rs:119:2
[INFO] [stderr]     |
[INFO] [stderr] 119 | [6] - "FAST AES DECRYPTION". Vinit Azad. http://webcache.googleusercontent.com/
[INFO] [stderr]     |  ^ no item named `6` in scope
[INFO] [stderr]     |
[INFO] [stderr]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `7`
[INFO] [stderr]    --> src/aessafe.rs:122:2
[INFO] [stderr]     |
[INFO] [stderr] 122 | [7] - "A Very Compact Rijndael S-box". D. Canright.
[INFO] [stderr]     |  ^ no item named `7` in scope
[INFO] [stderr]     |
[INFO] [stderr]     = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `1`
[INFO] [stderr]  --> src/scrypt.rs:8:79
[INFO] [stderr]   |
[INFO] [stderr] 8 |  * This module implements the Scrypt key derivation function as specified in [1].
[INFO] [stderr]   |                                                                               ^ no item named `1` in scope
[INFO] [stderr]   |
[INFO] [stderr]   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: unresolved link to `1`
[INFO] [stderr]   --> src/scrypt.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 |  * [1] - C. Percival. Stronger Key Derivation Via Sequential Memory-Hard Functions.
[INFO] [stderr]    |     ^ no item named `1` in scope
[INFO] [stderr]    |
[INFO] [stderr]    = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`
[INFO] [stderr] 
[INFO] [stderr] warning: this URL is not a hyperlink
[INFO] [stderr]    --> src/aessafe.rs:110:7
[INFO] [stderr]     |
[INFO] [stderr] 110 |       http://www.jbonneau.com/doc/BM06-CHES-aes_cache_timing.pdf
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: bare URLs are not automatically turned into clickable links
[INFO] [stderr]     = note: `#[warn(rustdoc::bare_urls)]` on by default
[INFO] [stderr] help: use an automatic link instead
[INFO] [stderr]     |
[INFO] [stderr] 110 |       <http://www.jbonneau.com/doc/BM06-CHES-aes_cache_timing.pdf>
[INFO] [stderr]     |       +                                                          +
[INFO] [stderr] 
[INFO] [stderr] warning: this URL is not a hyperlink
[INFO] [stderr]    --> src/aessafe.rs:112:30
[INFO] [stderr]     |
[INFO] [stderr] 112 |       Ernie Brickell, et al. http://eprint.iacr.org/2006/052.pdf.
[INFO] [stderr]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: bare URLs are not automatically turned into clickable links
[INFO] [stderr] help: use an automatic link instead
[INFO] [stderr]     |
[INFO] [stderr] 112 |       Ernie Brickell, et al. <http://eprint.iacr.org/2006/052.pdf.>
[INFO] [stderr]     |                              +                                    +
[INFO] [stderr] 
[INFO] [stderr] warning: this URL is not a hyperlink
[INFO] [stderr]    --> src/aessafe.rs:116:7
[INFO] [stderr]     |
[INFO] [stderr] 116 |       http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.52.5429&rep=rep1&type=pdf.
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: bare URLs are not automatically turned into clickable links
[INFO] [stderr] help: use an automatic link instead
[INFO] [stderr]     |
[INFO] [stderr] 116 |       <http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.52.5429&rep=rep1&type=pdf.>
[INFO] [stderr]     |       +                                                                                   +
[INFO] [stderr] 
[INFO] [stderr] warning: this URL is not a hyperlink
[INFO] [stderr]    --> src/aessafe.rs:118:7
[INFO] [stderr]     |
[INFO] [stderr] 118 |       http://www.chesworkshop.org/ches2009/presentations/01_Session_1/CHES2009_ekasper.pdf.
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: bare URLs are not automatically turned into clickable links
[INFO] [stderr] help: use an automatic link instead
[INFO] [stderr]     |
[INFO] [stderr] 118 |       <http://www.chesworkshop.org/ches2009/presentations/01_Session_1/CHES2009_ekasper.pdf.>
[INFO] [stderr]     |       +                                                                                     +
[INFO] [stderr] 
[INFO] [stderr] warning: this URL is not a hyperlink
[INFO] [stderr]    --> src/aessafe.rs:119:42
[INFO] [stderr]     |
[INFO] [stderr] 119 | [6] - "FAST AES DECRYPTION". Vinit Azad. http://webcache.googleusercontent.com/
[INFO] [stderr]     |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: bare URLs are not automatically turned into clickable links
[INFO] [stderr] help: use an automatic link instead
[INFO] [stderr]     |
[INFO] [stderr] 119 | [6] - "FAST AES DECRYPTION". Vinit Azad. <http://webcache.googleusercontent.com/>
[INFO] [stderr]     |                                          +                                      +
[INFO] [stderr] 
[INFO] [stderr] warning: this URL is not a hyperlink
[INFO] [stderr]    --> src/aessafe.rs:123:7
[INFO] [stderr]     |
[INFO] [stderr] 123 |       http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA434781.
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: bare URLs are not automatically turned into clickable links
[INFO] [stderr] help: use an automatic link instead
[INFO] [stderr]     |
[INFO] [stderr] 123 |       <http://www.dtic.mil/cgi-bin/GetTRDoc?AD=ADA434781.>
[INFO] [stderr]     |       +                                                  +
[INFO] [stderr] 
[INFO] [stderr] warning: unclosed HTML tag `T`
[INFO] [stderr]   --> src/aessafe.rs:92:24
[INFO] [stderr]    |
[INFO] [stderr] 92 | is stored as a Bs8State<T>, where T is the type that stores each set of bits. The first
[INFO] [stderr]    |                        ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(rustdoc::invalid_html_tags)]` on by default
[INFO] [stderr] help: try marking as source code
[INFO] [stderr]    |
[INFO] [stderr] 92 | is stored as a `Bs8State<T>`, where T is the type that stores each set of bits. The first
[INFO] [stderr]    |                +           +
[INFO] [stderr] 
[INFO] [stderr] warning: this URL is not a hyperlink
[INFO] [stderr]   --> src/fortuna.rs:38:8
[INFO] [stderr]    |
[INFO] [stderr] 38 |  *     https://github.com/rust-lang/rust/issues/16799
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: bare URLs are not automatically turned into clickable links
[INFO] [stderr] help: use an automatic link instead
[INFO] [stderr]    |
[INFO] [stderr] 38 |  *     <https://github.com/rust-lang/rust/issues/16799>
[INFO] [stderr]    |        +                                              +
[INFO] [stderr] 
[INFO] [stderr] warning: this URL is not a hyperlink
[INFO] [stderr]  --> src/hkdf.rs:8:42
[INFO] [stderr]   |
[INFO] [stderr] 8 | //! Derivation Function as specified by  https://tools.ietf.org/html/rfc5869.
[INFO] [stderr]   |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: bare URLs are not automatically turned into clickable links
[INFO] [stderr] help: use an automatic link instead
[INFO] [stderr]   |
[INFO] [stderr] 8 | //! Derivation Function as specified by  <https://tools.ietf.org/html/rfc5869.>
[INFO] [stderr]   |                                          +                                    +
[INFO] [stderr] 
[INFO] [stderr] warning: this URL is not a hyperlink
[INFO] [stderr]  --> src/pbkdf2.rs:9:4
[INFO] [stderr]   |
[INFO] [stderr] 9 |  * http://tools.ietf.org/html/rfc2898.
[INFO] [stderr]   |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: bare URLs are not automatically turned into clickable links
[INFO] [stderr] help: use an automatic link instead
[INFO] [stderr]   |
[INFO] [stderr] 9 |  * <http://tools.ietf.org/html/rfc2898.>
[INFO] [stderr]   |    +                                   +
[INFO] [stderr] 
[INFO] [stderr] warning: this URL is not a hyperlink
[INFO] [stderr]   --> src/scrypt.rs:12:10
[INFO] [stderr]    |
[INFO] [stderr] 12 |  *       http://www.tarsnap.com/scrypt/scrypt.pdf
[INFO] [stderr]    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: bare URLs are not automatically turned into clickable links
[INFO] [stderr] help: use an automatic link instead
[INFO] [stderr]    |
[INFO] [stderr] 12 |  *       <http://www.tarsnap.com/scrypt/scrypt.pdf>
[INFO] [stderr]    |          +                                        +
[INFO] [stderr] 
[INFO] [stderr] warning: unclosed HTML tag `format`
[INFO] [stderr]    --> src/scrypt.rs:264:13
[INFO] [stderr]     |
[INFO] [stderr] 264 |  * $rscrypt$<format>$<base64(log_n,r,p)>$<base64(salt)>$<based64(hash)>$
[INFO] [stderr]     |             ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rust-crypto` (lib doc) generated 32 warnings (3 duplicates) (run `cargo fix --lib -p rust-crypto` to apply 10 suggestions)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.01s
[INFO] [stderr]    Generated /opt/rustwide/target/x86_64-unknown-linux-gnu/doc/crypto/index.html
[INFO] running `Command { std: "docker" "inspect" "4bca83c7450bee4ab8ba7d6f71c66d682a8026e21ab06737ea88fcb419821e4f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4bca83c7450bee4ab8ba7d6f71c66d682a8026e21ab06737ea88fcb419821e4f", kill_on_drop: false }`
[INFO] [stdout] 4bca83c7450bee4ab8ba7d6f71c66d682a8026e21ab06737ea88fcb419821e4f