[INFO] cloning repository https://github.com/Baseng0815/kane
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Baseng0815/kane" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBaseng0815%2Fkane", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBaseng0815%2Fkane'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4a14b4b1be2c0f3df0b1a06a1e1a4c88a423c07a
[INFO] checking Baseng0815/kane against 79c0559184f27f4433a6fbc260b950d06d4a4889 for pr-162233-crater-rollup
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBaseng0815%2Fkane" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Baseng0815/kane
[INFO] finished tweaking git repo https://github.com/Baseng0815/kane
[INFO] tweaked toml for git repo https://github.com/Baseng0815/kane written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Baseng0815/kane on toolchain 79c0559184f27f4433a6fbc260b950d06d4a4889
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+79c0559184f27f4433a6fbc260b950d06d4a4889" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Baseng0815/kane 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" "+79c0559184f27f4433a6fbc260b950d06d4a4889" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 9123d6a100f2579df1d0bcee1cc1ee6ce82f5f893de28c313bd5af88279e2dca
[INFO] running `Command { std: "docker" "start" "9123d6a100f2579df1d0bcee1cc1ee6ce82f5f893de28c313bd5af88279e2dca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9123d6a100f2579df1d0bcee1cc1ee6ce82f5f893de28c313bd5af88279e2dca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9123d6a100f2579df1d0bcee1cc1ee6ce82f5f893de28c313bd5af88279e2dca" "/opt/rustwide/cargo-home/bin/cargo" "+79c0559184f27f4433a6fbc260b950d06d4a4889" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9123d6a100f2579df1d0bcee1cc1ee6ce82f5f893de28c313bd5af88279e2dca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9123d6a100f2579df1d0bcee1cc1ee6ce82f5f893de28c313bd5af88279e2dca" "/opt/rustwide/cargo-home/bin/cargo" "+79c0559184f27f4433a6fbc260b950d06d4a4889" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]     Checking memchr v2.8.3
[INFO] [stderr]     Checking futures-core v0.3.33
[INFO] [stderr]     Checking futures-sink v0.3.33
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]     Checking futures-task v0.3.33
[INFO] [stderr]     Checking futures-io v0.3.33
[INFO] [stderr]     Checking smallvec v1.15.2
[INFO] [stderr]    Compiling rustversion v1.0.23
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.126
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling bumpalo v3.20.3
[INFO] [stderr]    Compiling cc v1.4.0
[INFO] [stderr]    Compiling zerocopy v0.8.55
[INFO] [stderr]     Checking mio v1.2.2
[INFO] [stderr]     Checking socket2 v0.6.5
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]     Checking futures-channel v0.3.33
[INFO] [stderr]     Checking rustc-hash v2.1.3
[INFO] [stderr]     Checking writeable v0.6.3
[INFO] [stderr]     Checking bitflags v2.13.1
[INFO] [stderr]     Checking litemap v0.8.2
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling slotmap v1.1.1
[INFO] [stderr]     Checking zeroize v1.9.0
[INFO] [stderr]     Checking dioxus-core-types v0.7.10
[INFO] [stderr]     Checking konst_macro_rules v0.2.19
[INFO] [stderr]    Compiling aws-lc-rs v1.17.3
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.20
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking longest-increasing-subsequence v0.1.0
[INFO] [stderr]     Checking getrandom v0.4.3
[INFO] [stderr]     Checking rustls-pki-types v1.15.1
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]    Compiling crossbeam-deque v0.8.7
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]    Compiling convert_case v0.8.0
[INFO] [stderr]    Compiling wasm-bindgen v0.2.126
[INFO] [stderr]     Checking konst v0.2.20
[INFO] [stderr]    Compiling rustls v0.23.43
[INFO] [stderr]    Compiling lazy-js-bundle v0.7.10
[INFO] [stderr]    Compiling proc-macro2-diagnostics v0.10.1
[INFO] [stderr]     Checking simd-adler32 v0.3.10
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking either v1.17.0
[INFO] [stderr]     Checking arrayvec v0.7.8
[INFO] [stderr]     Checking webpki-roots v1.0.9
[INFO] [stderr]     Checking bytemuck v1.25.2
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]    Compiling libm v0.2.16
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]     Checking jiff-core v0.1.0
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking no_std_io2 v0.9.4
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking keyboard-types v0.7.0
[INFO] [stderr]    Compiling pulp v0.22.3
[INFO] [stderr]     Checking data-encoding v2.11.0
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]    Compiling time-core v0.1.9
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling time-macros v0.2.32
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]    Compiling dioxus-document v0.7.10
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking euclid v0.22.14
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling const_format_proc_macros v0.2.34
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking num-bigint v0.4.8
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking rayon-core v1.13.0
[INFO] [stderr]     Checking bitstream-io v4.10.0
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]     Checking sha1 v0.10.7
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]    Compiling cookie v0.18.1
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]    Compiling ref-cast v1.0.26
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]     Checking pulp-wasm-simd-flag v0.1.1
[INFO] [stderr]     Checking reborrow v0.5.5
[INFO] [stderr]     Checking const_format v0.2.36
[INFO] [stderr]     Checking rustls-native-certs v0.8.4
[INFO] [stderr]    Compiling type-map v0.5.1
[INFO] [stderr]    Compiling aws-lc-sys v0.43.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]     Checking avif-serialize v0.8.9
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]    Compiling multer v3.1.0
[INFO] [stderr]     Checking psl-types v2.0.11
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking regex-syntax v0.8.11
[INFO] [stderr]     Checking pxfm v0.1.30
[INFO] [stderr]     Checking fax v0.2.7
[INFO] [stderr]     Checking gif v0.14.2
[INFO] [stderr]     Checking time v0.3.54
[INFO] [stderr]     Checking png v0.18.1
[INFO] [stderr]    Compiling dioxus-interpreter-js v0.7.10
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]    Compiling self_cell v1.3.0
[INFO] [stderr]     Checking spin v0.9.9
[INFO] [stderr]     Checking uuid v1.24.0
[INFO] [stderr]     Checking jiff v0.2.35
[INFO] [stderr]     Checking regex-automata v0.4.16
[INFO] [stderr]     Checking inventory v0.3.24
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking sledgehammer_utils v0.3.1
[INFO] [stderr]    Compiling serde_derive_internals v0.30.0
[INFO] [stderr]     Checking cfb v0.7.3
[INFO] [stderr]    Compiling dioxus-web v0.7.10
[INFO] [stderr]     Checking charset v0.1.5
[INFO] [stderr]     Checking send_wrapper v0.6.0
[INFO] [stderr]     Checking thread_local v1.1.10
[INFO] [stderr]    Compiling xxhash-rust v0.8.18
[INFO] [stderr]     Checking infer v0.19.0
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling base16 v0.2.1
[INFO] [stderr]     Checking content_disposition v0.4.0
[INFO] [stderr]     Checking const-str v0.7.1
[INFO] [stderr]    Compiling dioxus-config-macro v0.7.10
[INFO] [stderr]     Checking dioxus-config-macros v0.7.10
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling tokio-macros v2.7.2
[INFO] [stderr]    Compiling async-trait v0.1.91
[INFO] [stderr]    Compiling ref-cast-impl v1.0.26
[INFO] [stderr]    Compiling schemars_derive v1.2.2
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling unic-langid-impl v0.9.6
[INFO] [stderr]    Compiling unic-langid v0.9.6
[INFO] [stderr]     Checking fluent-syntax v0.12.0
[INFO] [stderr]    Compiling fluent-langneg v0.13.1
[INFO] [stderr]    Compiling intl_pluralrules v7.0.2
[INFO] [stderr]    Compiling intl-memoizer v0.5.3
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.126
[INFO] [stderr]    Compiling darling_core v0.21.3
[INFO] [stderr]    Compiling fluent-bundle v0.16.0
[INFO] [stderr]    Compiling macro-string v0.1.4
[INFO] [stderr]    Compiling dioxus-rsx v0.7.10
[INFO] [stderr]    Compiling fluent-typed v0.9.0
[INFO] [stderr]    Compiling futures-macro v0.3.33
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling zerocopy-derive v0.8.55
[INFO] [stderr]    Compiling pin-project-internal v1.1.13
[INFO] [stderr]    Compiling warnings-macro v0.2.0
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling const-serialize-macro v0.7.2
[INFO] [stderr]     Checking pin-project v1.1.13
[INFO] [stderr]    Compiling dioxus-core-macro v0.7.10
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking futures-util v0.3.33
[INFO] [stderr]    Compiling const-serialize-macro v0.8.0-alpha.0
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling dioxus-html-internal-macro v0.7.10
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]     Checking generational-box v0.7.10
[INFO] [stderr]     Checking warnings v0.2.1
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]    Compiling profiling-procmacros v1.0.18
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling const-serialize v0.7.2
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]     Checking profiling v1.0.18
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]    Compiling sledgehammer_bindgen_macro v0.6.5
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking av-scenechange v0.14.1
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking av1-grain v0.2.5
[INFO] [stderr]    Compiling darling_macro v0.21.3
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]    Compiling dioxus-stores-macro v0.7.10
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking rav1e v0.8.1
[INFO] [stderr]    Compiling darling v0.21.3
[INFO] [stderr]    Compiling enumset_derive v0.15.0
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking bytes v1.12.1
[INFO] [stderr]     Checking subsecond-types v0.7.10
[INFO] [stderr]     Checking subsecond v0.7.10
[INFO] [stderr]    Compiling const-serialize v0.8.0-alpha.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking schemars v1.2.2
[INFO] [stderr]    Compiling manganis-core v0.7.10
[INFO] [stderr]     Checking serde_qs v0.15.0
[INFO] [stderr]    Compiling dioxus-router-macro v0.7.10
[INFO] [stderr]     Checking http v1.5.0
[INFO] [stderr]     Checking tokio v1.53.1
[INFO] [stderr]    Compiling dioxus-fullstack-macro v0.7.10
[INFO] [stderr]    Compiling zeni-web v0.1.0 (/opt/rustwide/workdir/web)
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking http-body v1.1.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking http-body-util v0.1.4
[INFO] [stderr]     Checking dioxus-core v0.7.10
[INFO] [stderr]     Checking enumset v1.1.14
[INFO] [stderr]     Checking futures-executor v0.3.33
[INFO] [stderr]     Checking headers-core v0.3.0
[INFO] [stderr]     Checking axum-core v0.5.6
[INFO] [stderr]    Compiling manganis-macro v0.7.10
[INFO] [stderr]     Checking futures v0.3.33
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]     Checking headers v0.4.1
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.126
[INFO] [stderr]     Checking zeni-finance v0.1.0 (/opt/rustwide/workdir/finance)
[INFO] [stderr]     Checking zeni-user v0.1.0 (/opt/rustwide/workdir/user)
[INFO] [stdout] warning: unused import: `jiff::Timestamp`
[INFO] [stdout]  --> finance/src/lib.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use jiff::Timestamp;
[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 import: `crate::money::Money`
[INFO] [stdout]  --> finance/src/account/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::money::Money;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::account::AccountId`
[INFO] [stdout]  --> finance/src/errors.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::account::AccountId;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::money::Currency`
[INFO] [stdout]  --> finance/src/errors.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::money::Currency;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thiserror::Error`
[INFO] [stdout]  --> finance/src/ledger/store/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use thiserror::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FinanceError` and `FinanceResult`
[INFO] [stdout]   --> finance/src/transaction/mod.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     FinanceError,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 20 |     FinanceResult,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `jiff::Timestamp`
[INFO] [stdout]  --> finance/src/lib.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use jiff::Timestamp;
[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 import: `crate::money::Money`
[INFO] [stdout]  --> finance/src/account/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::money::Money;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::account::AccountId`
[INFO] [stdout]  --> finance/src/errors.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::account::AccountId;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::money::Currency`
[INFO] [stdout]  --> finance/src/errors.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::money::Currency;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thiserror::Error`
[INFO] [stdout]  --> finance/src/ledger/store/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use thiserror::Error;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FinanceError` and `FinanceResult`
[INFO] [stdout]   --> finance/src/transaction/mod.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     FinanceError,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 20 |     FinanceResult,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]  --> finance/src/account/display.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |         f: &mut std::fmt::Formatter<'_>,
[INFO] [stdout]   |         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]  --> finance/src/account/display.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |         f: &mut std::fmt::Formatter<'_>,
[INFO] [stdout]   |         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for the crate
[INFO] [stdout]  --> finance/src/lib.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | / use jiff::Timestamp;
[INFO] [stdout] 2 | |
[INFO] [stdout] 3 | | pub mod account;
[INFO] [stdout] 4 | | pub mod errors;
[INFO] [stdout] 5 | | pub mod ledger;
[INFO] [stdout] 6 | | pub mod money;
[INFO] [stdout] 7 | | pub mod transaction;
[INFO] [stdout]   | |____________________^
[INFO] [stdout]   |
[INFO] [stdout]   = note: requested on the command line with `-W missing-docs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> finance/src/lib.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub mod account;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> finance/src/lib.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub mod errors;
[INFO] [stdout]   | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> finance/src/lib.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub mod ledger;
[INFO] [stdout]   | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> finance/src/lib.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub mod money;
[INFO] [stdout]   | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> finance/src/lib.rs:7:1
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub mod transaction;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> finance/src/account/mod.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub mod display;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/account/mod.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Account {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> finance/src/account/mod.rs:25:1
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum AccountType {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/account/mod.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     Asset,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/account/mod.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     Liability,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/account/mod.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     Income,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/account/mod.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     Expense,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/account/mod.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Equity,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/account/mod.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Unknown,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/account/mod.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct AccountId(Uuid);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/account/mod.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn id(&self) -> AccountId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/account/mod.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/account/mod.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn description(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/account/mod.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub fn r#type(&self) -> &AccountType {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]  --> finance/src/errors.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum FinanceError {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]  --> finance/src/errors.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     EmptyTransaction,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/errors.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     UnbalancedTransaction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/errors.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     DifferentCurrencies,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/errors.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     LedgerStoreError(#[from] LedgerStoreError),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a type alias
[INFO] [stdout]   --> finance/src/errors.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub type FinanceResult<T = ()> = Result<T, FinanceError>;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> finance/src/ledger/mod.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub mod store;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/ledger/mod.rs:36:1
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct LedgerOwner(Uuid);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/ledger/mod.rs:38:1
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct Ledger<S> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> finance/src/ledger/mod.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | /     pub fn new(
[INFO] [stdout] 45 | |         store: S,
[INFO] [stdout] 46 | |         owner: LedgerOwner,
[INFO] [stdout] 47 | |     ) -> Self {
[INFO] [stdout]    | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/mod.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | /     pub async fn create_account(
[INFO] [stdout] 52 | |         &mut self,
[INFO] [stdout] 53 | |         description: String,
[INFO] [stdout] 54 | |         r#type: AccountType,
[INFO] [stdout] 55 | |     ) -> FinanceResult<Account> {
[INFO] [stdout]    | |_______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/mod.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | /     pub async fn create_transaction(
[INFO] [stdout] 73 | |         &mut self,
[INFO] [stdout] 74 | |         description: String,
[INFO] [stdout] 75 | |         date: Date,
[INFO] [stdout] 76 | |         time: Option<Time>,
[INFO] [stdout] 77 | |         entries: Vec<TransactionEntry>,
[INFO] [stdout] 78 | |     ) -> FinanceResult<Transaction> {
[INFO] [stdout]    | |___________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> finance/src/ledger/mod.rs:99:5
[INFO] [stdout]     |
[INFO] [stdout]  99 | /     pub async fn update_transaction(
[INFO] [stdout] 100 | |         &mut self,
[INFO] [stdout] 101 | |         transaction: Transaction,
[INFO] [stdout] 102 | |     ) -> FinanceResult<Transaction> {
[INFO] [stdout]     | |___________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> finance/src/ledger/mod.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 110 | /     pub async fn delete_transaction(
[INFO] [stdout] 111 | |         &mut self,
[INFO] [stdout] 112 | |         id: TransactionId,
[INFO] [stdout] 113 | |     ) -> FinanceResult {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> finance/src/ledger/mod.rs:117:5
[INFO] [stdout]     |
[INFO] [stdout] 117 | /     pub async fn rename_account(
[INFO] [stdout] 118 | |         &mut self,
[INFO] [stdout] 119 | |         id: AccountId,
[INFO] [stdout] 120 | |         description: String,
[INFO] [stdout] 121 | |     ) -> FinanceResult<Account> {
[INFO] [stdout]     | |_______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum LedgerStoreError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     DuplicateAccountId(AccountId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     DuplicateTransactionId(TransactionId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     NoSuchAccount(AccountId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     NoSuchTransaction(TransactionId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     Domain(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Backend(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a type alias
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub type LedgerStoreResult<T = ()> = Result<T, LedgerStoreError>;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub trait LedgerStore {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     async fn insert_account(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout]    = note: `#[warn(async_fn_in_trait)]` on by default
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 36 ~     fn insert_account(
[INFO] [stdout] 37 |         &mut self,
[INFO] [stdout] 38 |         owner: LedgerOwner,
[INFO] [stdout] 39 |         account: Account,
[INFO] [stdout] 40 ~     ) -> impl std::future::Future<Output = LedgerStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | /     async fn insert_account(
[INFO] [stdout] 37 | |         &mut self,
[INFO] [stdout] 38 | |         owner: LedgerOwner,
[INFO] [stdout] 39 | |         account: Account,
[INFO] [stdout] 40 | |     ) -> LedgerStoreResult;
[INFO] [stdout]    | |___________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     async fn get_account(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 42 ~     fn get_account(
[INFO] [stdout] 43 |         &mut self,
[INFO] [stdout] 44 |         owner: LedgerOwner,
[INFO] [stdout] 45 |         id: AccountId,
[INFO] [stdout] 46 ~     ) -> impl std::future::Future<Output = LedgerStoreResult<Account>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | /     async fn get_account(
[INFO] [stdout] 43 | |         &mut self,
[INFO] [stdout] 44 | |         owner: LedgerOwner,
[INFO] [stdout] 45 | |         id: AccountId,
[INFO] [stdout] 46 | |     ) -> LedgerStoreResult<Account>;
[INFO] [stdout]    | |____________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     async fn get_accounts(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 48 ~     fn get_accounts(
[INFO] [stdout] 49 |         &mut self,
[INFO] [stdout] 50 |         owner: LedgerOwner,
[INFO] [stdout] 51 ~     ) -> impl std::future::Future<Output = LedgerStoreResult<Vec<Account>>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | /     async fn get_accounts(
[INFO] [stdout] 49 | |         &mut self,
[INFO] [stdout] 50 | |         owner: LedgerOwner,
[INFO] [stdout] 51 | |     ) -> LedgerStoreResult<Vec<Account>>;
[INFO] [stdout]    | |_________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     async fn update_account(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 53 ~     fn update_account(
[INFO] [stdout] 54 |         &mut self,
[INFO] [stdout] 55 |         owner: LedgerOwner,
[INFO] [stdout] 56 |         account: Account,
[INFO] [stdout] 57 ~     ) -> impl std::future::Future<Output = LedgerStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | /     async fn update_account(
[INFO] [stdout] 54 | |         &mut self,
[INFO] [stdout] 55 | |         owner: LedgerOwner,
[INFO] [stdout] 56 | |         account: Account,
[INFO] [stdout] 57 | |     ) -> LedgerStoreResult;
[INFO] [stdout]    | |___________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 59 |     async fn insert_transaction(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 59 ~     fn insert_transaction(
[INFO] [stdout] 60 |         &mut self,
[INFO] [stdout] 61 |         owner: LedgerOwner,
[INFO] [stdout] 62 |         transaction: Transaction,
[INFO] [stdout] 63 ~     ) -> impl std::future::Future<Output = LedgerStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | /     async fn insert_transaction(
[INFO] [stdout] 60 | |         &mut self,
[INFO] [stdout] 61 | |         owner: LedgerOwner,
[INFO] [stdout] 62 | |         transaction: Transaction,
[INFO] [stdout] 63 | |     ) -> LedgerStoreResult;
[INFO] [stdout]    | |___________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 65 |     async fn get_transaction(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 65 ~     fn get_transaction(
[INFO] [stdout] 66 |         &mut self,
[INFO] [stdout] 67 |         owner: LedgerOwner,
[INFO] [stdout] 68 |         id: TransactionId,
[INFO] [stdout] 69 ~     ) -> impl std::future::Future<Output = LedgerStoreResult<Transaction>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 65 | /     async fn get_transaction(
[INFO] [stdout] 66 | |         &mut self,
[INFO] [stdout] 67 | |         owner: LedgerOwner,
[INFO] [stdout] 68 | |         id: TransactionId,
[INFO] [stdout] 69 | |     ) -> LedgerStoreResult<Transaction>;
[INFO] [stdout]    | |________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 |     async fn get_transactions_in(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 72 ~     fn get_transactions_in(
[INFO] [stdout] 73 |         &mut self,
[INFO] [stdout] ...
[INFO] [stdout] 76 |         to: Date,
[INFO] [stdout] 77 ~     ) -> impl std::future::Future<Output = LedgerStoreResult<Vec<Transaction>>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 79 |     async fn update_transaction(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 79 ~     fn update_transaction(
[INFO] [stdout] 80 |         &mut self,
[INFO] [stdout] 81 |         owner: LedgerOwner,
[INFO] [stdout] 82 |         transaction: Transaction,
[INFO] [stdout] 83 ~     ) -> impl std::future::Future<Output = LedgerStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 79 | /     async fn update_transaction(
[INFO] [stdout] 80 | |         &mut self,
[INFO] [stdout] 81 | |         owner: LedgerOwner,
[INFO] [stdout] 82 | |         transaction: Transaction,
[INFO] [stdout] 83 | |     ) -> LedgerStoreResult;
[INFO] [stdout]    | |___________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 85 |     async fn delete_transaction(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 85 ~     fn delete_transaction(
[INFO] [stdout] 86 |         &mut self,
[INFO] [stdout] 87 |         owner: LedgerOwner,
[INFO] [stdout] 88 |         id: TransactionId,
[INFO] [stdout] 89 ~     ) -> impl std::future::Future<Output = LedgerStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 85 | /     async fn delete_transaction(
[INFO] [stdout] 86 | |         &mut self,
[INFO] [stdout] 87 | |         owner: LedgerOwner,
[INFO] [stdout] 88 | |         id: TransactionId,
[INFO] [stdout] 89 | |     ) -> LedgerStoreResult;
[INFO] [stdout]    | |___________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     async fn purge(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 91 ~     fn purge(
[INFO] [stdout] 92 |         &mut self,
[INFO] [stdout] 93 |         owner: LedgerOwner,
[INFO] [stdout] 94 ~     ) -> impl std::future::Future<Output = LedgerStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 | /     async fn purge(
[INFO] [stdout] 92 | |         &mut self,
[INFO] [stdout] 93 | |         owner: LedgerOwner,
[INFO] [stdout] 94 | |     ) -> LedgerStoreResult;
[INFO] [stdout]    | |___________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> finance/src/ledger/store/mod.rs:181:1
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub struct InMemoryLedgerStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/money/mod.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Money {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> finance/src/money/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub amount: i128,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> finance/src/money/mod.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub currency: Currency,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> finance/src/money/mod.rs:20:1
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum Currency {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/money/mod.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     EUR,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/money/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | /     pub fn try_add(
[INFO] [stdout] 26 | |         self,
[INFO] [stdout] 27 | |         other: Money,
[INFO] [stdout] 28 | |     ) -> FinanceResult<Money> {
[INFO] [stdout]    | |_____________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/money/display.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | /     pub fn format_cents(
[INFO] [stdout] 32 | |         &self,
[INFO] [stdout] 33 | |         cents: i128,
[INFO] [stdout] 34 | |         f: &mut Formatter<'_>,
[INFO] [stdout] 35 | |     ) -> std::fmt::Result {
[INFO] [stdout]    | |_________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/transaction/mod.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct Transaction {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn id(&self) -> TransactionId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn description(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn date(&self) -> Date {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn time(&self) -> Option<Time> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn entries(&self) -> &[TransactionEntry] {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | /     pub fn set_description(
[INFO] [stdout] 62 | |         &mut self,
[INFO] [stdout] 63 | |         description: String,
[INFO] [stdout] 64 | |     ) {
[INFO] [stdout]    | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | /     pub fn set_date(
[INFO] [stdout] 69 | |         &mut self,
[INFO] [stdout] 70 | |         date: Date,
[INFO] [stdout] 71 | |     ) {
[INFO] [stdout]    | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | /     pub fn set_time(
[INFO] [stdout] 76 | |         &mut self,
[INFO] [stdout] 77 | |         time: Option<Time>,
[INFO] [stdout] 78 | |     ) {
[INFO] [stdout]    | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | /     pub fn set_entries(
[INFO] [stdout] 83 | |         &mut self,
[INFO] [stdout] 84 | |         entries: Vec<TransactionEntry>,
[INFO] [stdout] 85 | |     ) {
[INFO] [stdout]    | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/transaction/mod.rs:91:1
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct TransactionEntry {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> finance/src/transaction/mod.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub account: AccountId,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> finance/src/transaction/mod.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub amount: Money,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/transaction/mod.rs:97:1
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct TransactionId(Uuid);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for the crate
[INFO] [stdout]  --> finance/src/lib.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | / use jiff::Timestamp;
[INFO] [stdout] 2 | |
[INFO] [stdout] 3 | | pub mod account;
[INFO] [stdout] 4 | | pub mod errors;
[INFO] [stdout] 5 | | pub mod ledger;
[INFO] [stdout] 6 | | pub mod money;
[INFO] [stdout] 7 | | pub mod transaction;
[INFO] [stdout]   | |____________________^
[INFO] [stdout]   |
[INFO] [stdout]   = note: requested on the command line with `-W missing-docs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> finance/src/lib.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub mod account;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> finance/src/lib.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub mod errors;
[INFO] [stdout]   | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> finance/src/lib.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub mod ledger;
[INFO] [stdout]   | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> finance/src/lib.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub mod money;
[INFO] [stdout]   | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> finance/src/lib.rs:7:1
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub mod transaction;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> finance/src/account/mod.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub mod display;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/account/mod.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Account {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> finance/src/account/mod.rs:25:1
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum AccountType {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/account/mod.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     Asset,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/account/mod.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     Liability,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/account/mod.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     Income,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/account/mod.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     Expense,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/account/mod.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Equity,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/account/mod.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Unknown,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/account/mod.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct AccountId(Uuid);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/account/mod.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn id(&self) -> AccountId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/account/mod.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/account/mod.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn description(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/account/mod.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub fn r#type(&self) -> &AccountType {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]  --> finance/src/errors.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum FinanceError {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]  --> finance/src/errors.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     EmptyTransaction,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/errors.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     UnbalancedTransaction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/errors.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     DifferentCurrencies,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/errors.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     LedgerStoreError(#[from] LedgerStoreError),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a type alias
[INFO] [stdout]   --> finance/src/errors.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub type FinanceResult<T = ()> = Result<T, FinanceError>;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> finance/src/ledger/mod.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub mod store;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/ledger/mod.rs:36:1
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct LedgerOwner(Uuid);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/ledger/mod.rs:38:1
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct Ledger<S> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> finance/src/ledger/mod.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | /     pub fn new(
[INFO] [stdout] 45 | |         store: S,
[INFO] [stdout] 46 | |         owner: LedgerOwner,
[INFO] [stdout] 47 | |     ) -> Self {
[INFO] [stdout]    | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/mod.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | /     pub async fn create_account(
[INFO] [stdout] 52 | |         &mut self,
[INFO] [stdout] 53 | |         description: String,
[INFO] [stdout] 54 | |         r#type: AccountType,
[INFO] [stdout] 55 | |     ) -> FinanceResult<Account> {
[INFO] [stdout]    | |_______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/mod.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | /     pub async fn create_transaction(
[INFO] [stdout] 73 | |         &mut self,
[INFO] [stdout] 74 | |         description: String,
[INFO] [stdout] 75 | |         date: Date,
[INFO] [stdout] 76 | |         time: Option<Time>,
[INFO] [stdout] 77 | |         entries: Vec<TransactionEntry>,
[INFO] [stdout] 78 | |     ) -> FinanceResult<Transaction> {
[INFO] [stdout]    | |___________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> finance/src/ledger/mod.rs:99:5
[INFO] [stdout]     |
[INFO] [stdout]  99 | /     pub async fn update_transaction(
[INFO] [stdout] 100 | |         &mut self,
[INFO] [stdout] 101 | |         transaction: Transaction,
[INFO] [stdout] 102 | |     ) -> FinanceResult<Transaction> {
[INFO] [stdout]     | |___________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> finance/src/ledger/mod.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 110 | /     pub async fn delete_transaction(
[INFO] [stdout] 111 | |         &mut self,
[INFO] [stdout] 112 | |         id: TransactionId,
[INFO] [stdout] 113 | |     ) -> FinanceResult {
[INFO] [stdout]     | |______________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> finance/src/ledger/mod.rs:117:5
[INFO] [stdout]     |
[INFO] [stdout] 117 | /     pub async fn rename_account(
[INFO] [stdout] 118 | |         &mut self,
[INFO] [stdout] 119 | |         id: AccountId,
[INFO] [stdout] 120 | |         description: String,
[INFO] [stdout] 121 | |     ) -> FinanceResult<Account> {
[INFO] [stdout]     | |_______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub enum LedgerStoreError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     DuplicateAccountId(AccountId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     DuplicateTransactionId(TransactionId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     NoSuchAccount(AccountId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     NoSuchTransaction(TransactionId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     Domain(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Backend(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a type alias
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub type LedgerStoreResult<T = ()> = Result<T, LedgerStoreError>;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub trait LedgerStore {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     async fn insert_account(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout]    = note: `#[warn(async_fn_in_trait)]` on by default
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 36 ~     fn insert_account(
[INFO] [stdout] 37 |         &mut self,
[INFO] [stdout] 38 |         owner: LedgerOwner,
[INFO] [stdout] 39 |         account: Account,
[INFO] [stdout] 40 ~     ) -> impl std::future::Future<Output = LedgerStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | /     async fn insert_account(
[INFO] [stdout] 37 | |         &mut self,
[INFO] [stdout] 38 | |         owner: LedgerOwner,
[INFO] [stdout] 39 | |         account: Account,
[INFO] [stdout] 40 | |     ) -> LedgerStoreResult;
[INFO] [stdout]    | |___________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     async fn get_account(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 42 ~     fn get_account(
[INFO] [stdout] 43 |         &mut self,
[INFO] [stdout] 44 |         owner: LedgerOwner,
[INFO] [stdout] 45 |         id: AccountId,
[INFO] [stdout] 46 ~     ) -> impl std::future::Future<Output = LedgerStoreResult<Account>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | /     async fn get_account(
[INFO] [stdout] 43 | |         &mut self,
[INFO] [stdout] 44 | |         owner: LedgerOwner,
[INFO] [stdout] 45 | |         id: AccountId,
[INFO] [stdout] 46 | |     ) -> LedgerStoreResult<Account>;
[INFO] [stdout]    | |____________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     async fn get_accounts(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 48 ~     fn get_accounts(
[INFO] [stdout] 49 |         &mut self,
[INFO] [stdout] 50 |         owner: LedgerOwner,
[INFO] [stdout] 51 ~     ) -> impl std::future::Future<Output = LedgerStoreResult<Vec<Account>>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | /     async fn get_accounts(
[INFO] [stdout] 49 | |         &mut self,
[INFO] [stdout] 50 | |         owner: LedgerOwner,
[INFO] [stdout] 51 | |     ) -> LedgerStoreResult<Vec<Account>>;
[INFO] [stdout]    | |_________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     async fn update_account(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 53 ~     fn update_account(
[INFO] [stdout] 54 |         &mut self,
[INFO] [stdout] 55 |         owner: LedgerOwner,
[INFO] [stdout] 56 |         account: Account,
[INFO] [stdout] 57 ~     ) -> impl std::future::Future<Output = LedgerStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | /     async fn update_account(
[INFO] [stdout] 54 | |         &mut self,
[INFO] [stdout] 55 | |         owner: LedgerOwner,
[INFO] [stdout] 56 | |         account: Account,
[INFO] [stdout] 57 | |     ) -> LedgerStoreResult;
[INFO] [stdout]    | |___________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 59 |     async fn insert_transaction(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 59 ~     fn insert_transaction(
[INFO] [stdout] 60 |         &mut self,
[INFO] [stdout] 61 |         owner: LedgerOwner,
[INFO] [stdout] 62 |         transaction: Transaction,
[INFO] [stdout] 63 ~     ) -> impl std::future::Future<Output = LedgerStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | /     async fn insert_transaction(
[INFO] [stdout] 60 | |         &mut self,
[INFO] [stdout] 61 | |         owner: LedgerOwner,
[INFO] [stdout] 62 | |         transaction: Transaction,
[INFO] [stdout] 63 | |     ) -> LedgerStoreResult;
[INFO] [stdout]    | |___________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 65 |     async fn get_transaction(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 65 ~     fn get_transaction(
[INFO] [stdout] 66 |         &mut self,
[INFO] [stdout] 67 |         owner: LedgerOwner,
[INFO] [stdout] 68 |         id: TransactionId,
[INFO] [stdout] 69 ~     ) -> impl std::future::Future<Output = LedgerStoreResult<Transaction>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 65 | /     async fn get_transaction(
[INFO] [stdout] 66 | |         &mut self,
[INFO] [stdout] 67 | |         owner: LedgerOwner,
[INFO] [stdout] 68 | |         id: TransactionId,
[INFO] [stdout] 69 | |     ) -> LedgerStoreResult<Transaction>;
[INFO] [stdout]    | |________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 |     async fn get_transactions_in(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 72 ~     fn get_transactions_in(
[INFO] [stdout] 73 |         &mut self,
[INFO] [stdout] ...
[INFO] [stdout] 76 |         to: Date,
[INFO] [stdout] 77 ~     ) -> impl std::future::Future<Output = LedgerStoreResult<Vec<Transaction>>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 79 |     async fn update_transaction(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 79 ~     fn update_transaction(
[INFO] [stdout] 80 |         &mut self,
[INFO] [stdout] 81 |         owner: LedgerOwner,
[INFO] [stdout] 82 |         transaction: Transaction,
[INFO] [stdout] 83 ~     ) -> impl std::future::Future<Output = LedgerStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 79 | /     async fn update_transaction(
[INFO] [stdout] 80 | |         &mut self,
[INFO] [stdout] 81 | |         owner: LedgerOwner,
[INFO] [stdout] 82 | |         transaction: Transaction,
[INFO] [stdout] 83 | |     ) -> LedgerStoreResult;
[INFO] [stdout]    | |___________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 85 |     async fn delete_transaction(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 85 ~     fn delete_transaction(
[INFO] [stdout] 86 |         &mut self,
[INFO] [stdout] 87 |         owner: LedgerOwner,
[INFO] [stdout] 88 |         id: TransactionId,
[INFO] [stdout] 89 ~     ) -> impl std::future::Future<Output = LedgerStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 85 | /     async fn delete_transaction(
[INFO] [stdout] 86 | |         &mut self,
[INFO] [stdout] 87 | |         owner: LedgerOwner,
[INFO] [stdout] 88 | |         id: TransactionId,
[INFO] [stdout] 89 | |     ) -> LedgerStoreResult;
[INFO] [stdout]    | |___________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     async fn purge(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 91 ~     fn purge(
[INFO] [stdout] 92 |         &mut self,
[INFO] [stdout] 93 |         owner: LedgerOwner,
[INFO] [stdout] 94 ~     ) -> impl std::future::Future<Output = LedgerStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/ledger/store/mod.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 | /     async fn purge(
[INFO] [stdout] 92 | |         &mut self,
[INFO] [stdout] 93 | |         owner: LedgerOwner,
[INFO] [stdout] 94 | |     ) -> LedgerStoreResult;
[INFO] [stdout]    | |___________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> finance/src/ledger/store/mod.rs:181:1
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub struct InMemoryLedgerStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/money/mod.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Money {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> finance/src/money/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub amount: i128,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> finance/src/money/mod.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub currency: Currency,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> finance/src/money/mod.rs:20:1
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum Currency {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> finance/src/money/mod.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     EUR,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/money/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | /     pub fn try_add(
[INFO] [stdout] 26 | |         self,
[INFO] [stdout] 27 | |         other: Money,
[INFO] [stdout] 28 | |     ) -> FinanceResult<Money> {
[INFO] [stdout]    | |_____________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/money/display.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | /     pub fn format_cents(
[INFO] [stdout] 32 | |         &self,
[INFO] [stdout] 33 | |         cents: i128,
[INFO] [stdout] 34 | |         f: &mut Formatter<'_>,
[INFO] [stdout] 35 | |     ) -> std::fmt::Result {
[INFO] [stdout]    | |_________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/transaction/mod.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct Transaction {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn id(&self) -> TransactionId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn description(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn date(&self) -> Date {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn time(&self) -> Option<Time> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn entries(&self) -> &[TransactionEntry] {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | /     pub fn set_description(
[INFO] [stdout] 62 | |         &mut self,
[INFO] [stdout] 63 | |         description: String,
[INFO] [stdout] 64 | |     ) {
[INFO] [stdout]    | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | /     pub fn set_date(
[INFO] [stdout] 69 | |         &mut self,
[INFO] [stdout] 70 | |         date: Date,
[INFO] [stdout] 71 | |     ) {
[INFO] [stdout]    | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | /     pub fn set_time(
[INFO] [stdout] 76 | |         &mut self,
[INFO] [stdout] 77 | |         time: Option<Time>,
[INFO] [stdout] 78 | |     ) {
[INFO] [stdout]    | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> finance/src/transaction/mod.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | /     pub fn set_entries(
[INFO] [stdout] 83 | |         &mut self,
[INFO] [stdout] 84 | |         entries: Vec<TransactionEntry>,
[INFO] [stdout] 85 | |     ) {
[INFO] [stdout]    | |_____^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/transaction/mod.rs:91:1
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct TransactionEntry {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> finance/src/transaction/mod.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub account: AccountId,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> finance/src/transaction/mod.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub amount: Money,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> finance/src/transaction/mod.rs:97:1
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct TransactionId(Uuid);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stdout] warning: function `error_if_malformed_email` is never used
[INFO] [stdout]    --> user/src/directory/mod.rs:718:4
[INFO] [stdout]     |
[INFO] [stdout] 718 | fn error_if_malformed_email(email: &str) -> UserResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for the crate
[INFO] [stdout]  --> user/src/lib.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | / #[cfg(feature = "auth")]
[INFO] [stdout] 2 | | pub mod auth;
[INFO] [stdout] 3 | | pub mod directory;
[INFO] [stdout] 4 | | pub mod errors;
[INFO] [stdout] ... |
[INFO] [stdout] 8 | | pub mod token;
[INFO] [stdout] 9 | | pub mod user;
[INFO] [stdout]   | |_____________^
[INFO] [stdout]   |
[INFO] [stdout]   = note: requested on the command line with `-W missing-docs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> user/src/lib.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub mod directory;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> user/src/lib.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub mod errors;
[INFO] [stdout]   | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> user/src/lib.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub mod household;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> user/src/lib.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub mod identity;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> user/src/lib.rs:7:1
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub mod session;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> user/src/lib.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub mod token;
[INFO] [stdout]   | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> user/src/lib.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub mod user;
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> user/src/directory/mod.rs:41:1
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub mod store;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/directory/mod.rs:45:1
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct Directory<S> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/directory/mod.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub session: Session,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/directory/mod.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 52 |     pub user: User,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/directory/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub credentialed: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> user/src/directory/mod.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn new(store: S) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub async fn create_anonymous_user(&mut self) -> UserResult<User> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 129 | /     pub async fn login_oidc(
[INFO] [stdout] 130 | |         &mut self,
[INFO] [stdout] 131 | |         current: Option<UserId>,
[INFO] [stdout] 132 | |         issuer: String,
[INFO] [stdout] ...   |
[INFO] [stdout] 136 | |         name: Option<String>,
[INFO] [stdout] 137 | |     ) -> UserResult<User> {
[INFO] [stdout]     | |_________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:216:5
[INFO] [stdout]     |
[INFO] [stdout] 216 | /     pub async fn remove_identity(
[INFO] [stdout] 217 | |         &mut self,
[INFO] [stdout] 218 | |         user: UserId,
[INFO] [stdout] 219 | |         kind: IdentityKind,
[INFO] [stdout] 220 | |     ) -> UserResult {
[INFO] [stdout]     | |___________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:228:5
[INFO] [stdout]     |
[INFO] [stdout] 228 | /     pub async fn identity_kinds(
[INFO] [stdout] 229 | |         &mut self,
[INFO] [stdout] 230 | |         user: UserId,
[INFO] [stdout] 231 | |     ) -> UserResult<Vec<IdentityKind>> {
[INFO] [stdout]     | |______________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:260:5
[INFO] [stdout]     |
[INFO] [stdout] 260 | /     pub async fn resolve_session(
[INFO] [stdout] 261 | |         &mut self,
[INFO] [stdout] 262 | |         id: &SessionId,
[INFO] [stdout] 263 | |     ) -> UserResult<Option<ResolvedSession>> {
[INFO] [stdout]     | |____________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:290:5
[INFO] [stdout]     |
[INFO] [stdout] 290 | /     pub async fn session_overviews(
[INFO] [stdout] 291 | |         &mut self,
[INFO] [stdout] 292 | |         user: UserId,
[INFO] [stdout] 293 | |         current: &SessionId,
[INFO] [stdout] 294 | |     ) -> UserResult<Vec<SessionOverview>> {
[INFO] [stdout]     | |_________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:304:5
[INFO] [stdout]     |
[INFO] [stdout] 304 | /     pub async fn revoke_session(
[INFO] [stdout] 305 | |         &mut self,
[INFO] [stdout] 306 | |         user: UserId,
[INFO] [stdout] 307 | |         fingerprint: &str,
[INFO] [stdout] 308 | |     ) -> UserResult {
[INFO] [stdout]     | |___________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:318:5
[INFO] [stdout]     |
[INFO] [stdout] 318 | /     pub async fn revoke_other_sessions(
[INFO] [stdout] 319 | |         &mut self,
[INFO] [stdout] 320 | |         user: UserId,
[INFO] [stdout] 321 | |         keep: &SessionId,
[INFO] [stdout] 322 | |     ) -> UserResult {
[INFO] [stdout]     | |___________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:326:5
[INFO] [stdout]     |
[INFO] [stdout] 326 | /     pub async fn end_session(
[INFO] [stdout] 327 | |         &mut self,
[INFO] [stdout] 328 | |         id: &SessionId,
[INFO] [stdout] 329 | |     ) -> UserResult {
[INFO] [stdout]     | |___________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:408:5
[INFO] [stdout]     |
[INFO] [stdout] 408 | /     pub async fn confirm_email(
[INFO] [stdout] 409 | |         &mut self,
[INFO] [stdout] 410 | |         secret: &TokenSecret,
[INFO] [stdout] 411 | |     ) -> UserResult<User> {
[INFO] [stdout]     | |_________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:428:5
[INFO] [stdout]     |
[INFO] [stdout] 428 | /     pub async fn rename_user(
[INFO] [stdout] 429 | |         &mut self,
[INFO] [stdout] 430 | |         user: UserId,
[INFO] [stdout] 431 | |         name: String,
[INFO] [stdout] 432 | |     ) -> UserResult<User> {
[INFO] [stdout]     | |_________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:463:5
[INFO] [stdout]     |
[INFO] [stdout] 463 | /     pub async fn set_notifications(
[INFO] [stdout] 464 | |         &mut self,
[INFO] [stdout] 465 | |         user: UserId,
[INFO] [stdout] 466 | |         notifications: NotificationPreferences,
[INFO] [stdout] 467 | |     ) -> UserResult<User> {
[INFO] [stdout]     | |_________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:475:5
[INFO] [stdout]     |
[INFO] [stdout] 475 | /     pub async fn set_locale(
[INFO] [stdout] 476 | |         &mut self,
[INFO] [stdout] 477 | |         user: UserId,
[INFO] [stdout] 478 | |         locale: Option<Locale>,
[INFO] [stdout] 479 | |     ) -> UserResult<User> {
[INFO] [stdout]     | |_________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:487:5
[INFO] [stdout]     |
[INFO] [stdout] 487 | /     pub async fn primary_membership(
[INFO] [stdout] 488 | |         &mut self,
[INFO] [stdout] 489 | |         user: UserId,
[INFO] [stdout] 490 | |     ) -> UserResult<Membership> {
[INFO] [stdout]     | |_______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:500:5
[INFO] [stdout]     |
[INFO] [stdout] 500 | /     pub async fn household_members(
[INFO] [stdout] 501 | |         &mut self,
[INFO] [stdout] 502 | |         household: HouseholdId,
[INFO] [stdout] 503 | |     ) -> UserResult<Vec<(User, Role)>> {
[INFO] [stdout]     | |______________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:512:5
[INFO] [stdout]     |
[INFO] [stdout] 512 | /     pub async fn delete_user(
[INFO] [stdout] 513 | |         &mut self,
[INFO] [stdout] 514 | |         user: UserId,
[INFO] [stdout] 515 | |     ) -> UserResult<Vec<HouseholdId>> {
[INFO] [stdout]     | |_____________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> user/src/directory/store/mod.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum DirectoryStoreError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     DuplicateUserId(UserId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     DuplicateIdentity(UserId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     DuplicateSessionId,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     DuplicateHouseholdId(HouseholdId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     DuplicateMembership,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     DuplicateTokenSecret,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     NoSuchUser(UserId),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 44 |     NoSuchIdentity,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     NoSuchSession,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     NoSuchHousehold(HouseholdId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |     NoSuchMembership,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 52 |     NoSuchToken,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 54 |     Domain(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Backend(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a type alias
[INFO] [stdout]   --> user/src/directory/store/mod.rs:59:1
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub type DirectoryStoreResult<T = ()> = Result<T, DirectoryStoreError>;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]   --> user/src/directory/store/mod.rs:61:1
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub trait DirectoryStore {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> user/src/directory/store/mod.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 62 |     async fn insert_user(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout]    = note: `#[warn(async_fn_in_trait)]` on by default
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 62 ~     fn insert_user(
[INFO] [stdout] 63 |         &mut self,
[INFO] [stdout] 64 |         user: User,
[INFO] [stdout] 65 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/store/mod.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | /     async fn insert_user(
[INFO] [stdout] 63 | |         &mut self,
[INFO] [stdout] 64 | |         user: User,
[INFO] [stdout] 65 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> user/src/directory/store/mod.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 |     async fn get_user(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 67 ~     fn get_user(
[INFO] [stdout] 68 |         &mut self,
[INFO] [stdout] 69 |         id: UserId,
[INFO] [stdout] 70 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<User>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/store/mod.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | /     async fn get_user(
[INFO] [stdout] 68 | |         &mut self,
[INFO] [stdout] 69 | |         id: UserId,
[INFO] [stdout] 70 | |     ) -> DirectoryStoreResult<User>;
[INFO] [stdout]    | |____________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> user/src/directory/store/mod.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 |     async fn update_user(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 72 ~     fn update_user(
[INFO] [stdout] 73 |         &mut self,
[INFO] [stdout] 74 |         user: User,
[INFO] [stdout] 75 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/store/mod.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | /     async fn update_user(
[INFO] [stdout] 73 | |         &mut self,
[INFO] [stdout] 74 | |         user: User,
[INFO] [stdout] 75 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> user/src/directory/store/mod.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 77 |     async fn delete_user(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 77 ~     fn delete_user(
[INFO] [stdout] 78 |         &mut self,
[INFO] [stdout] 79 |         id: UserId,
[INFO] [stdout] 80 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/store/mod.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 77 | /     async fn delete_user(
[INFO] [stdout] 78 | |         &mut self,
[INFO] [stdout] 79 | |         id: UserId,
[INFO] [stdout] 80 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> user/src/directory/store/mod.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     async fn find_users_by_email(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 82 ~     fn find_users_by_email(
[INFO] [stdout] 83 |         &mut self,
[INFO] [stdout] 84 |         email: &str,
[INFO] [stdout] 85 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Vec<User>>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/store/mod.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | /     async fn find_users_by_email(
[INFO] [stdout] 83 | |         &mut self,
[INFO] [stdout] 84 | |         email: &str,
[INFO] [stdout] 85 | |     ) -> DirectoryStoreResult<Vec<User>>;
[INFO] [stdout]    | |_________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]   --> user/src/directory/store/mod.rs:88:1
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub trait IdentityStore {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> user/src/directory/store/mod.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 |     async fn insert_identity(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 89 ~     fn insert_identity(
[INFO] [stdout] 90 |         &mut self,
[INFO] [stdout] 91 |         identity: Identity,
[INFO] [stdout] 92 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/store/mod.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 | /     async fn insert_identity(
[INFO] [stdout] 90 | |         &mut self,
[INFO] [stdout] 91 | |         identity: Identity,
[INFO] [stdout] 92 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> user/src/directory/store/mod.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 94 |     async fn get_identity(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 94 ~     fn get_identity(
[INFO] [stdout] 95 |         &mut self,
[INFO] [stdout] 96 |         user: UserId,
[INFO] [stdout] 97 |         kind: IdentityKind,
[INFO] [stdout] 98 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Identity>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/store/mod.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 94 | /     async fn get_identity(
[INFO] [stdout] 95 | |         &mut self,
[INFO] [stdout] 96 | |         user: UserId,
[INFO] [stdout] 97 | |         kind: IdentityKind,
[INFO] [stdout] 98 | |     ) -> DirectoryStoreResult<Identity>;
[INFO] [stdout]    | |________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 |     async fn get_oidc_identity(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 100 ~     fn get_oidc_identity(
[INFO] [stdout] 101 |         &mut self,
[INFO] [stdout] 102 |         issuer: &str,
[INFO] [stdout] 103 |         subject: &str,
[INFO] [stdout] 104 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Identity>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 | /     async fn get_oidc_identity(
[INFO] [stdout] 101 | |         &mut self,
[INFO] [stdout] 102 | |         issuer: &str,
[INFO] [stdout] 103 | |         subject: &str,
[INFO] [stdout] 104 | |     ) -> DirectoryStoreResult<Identity>;
[INFO] [stdout]     | |________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 |     async fn list_identities(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 106 ~     fn list_identities(
[INFO] [stdout] 107 |         &mut self,
[INFO] [stdout] 108 |         user: UserId,
[INFO] [stdout] 109 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Vec<Identity>>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 | /     async fn list_identities(
[INFO] [stdout] 107 | |         &mut self,
[INFO] [stdout] 108 | |         user: UserId,
[INFO] [stdout] 109 | |     ) -> DirectoryStoreResult<Vec<Identity>>;
[INFO] [stdout]     | |_____________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:111:5
[INFO] [stdout]     |
[INFO] [stdout] 111 |     async fn update_identity(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 111 ~     fn update_identity(
[INFO] [stdout] 112 |         &mut self,
[INFO] [stdout] 113 |         identity: Identity,
[INFO] [stdout] 114 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:111:5
[INFO] [stdout]     |
[INFO] [stdout] 111 | /     async fn update_identity(
[INFO] [stdout] 112 | |         &mut self,
[INFO] [stdout] 113 | |         identity: Identity,
[INFO] [stdout] 114 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 116 |     async fn delete_identity(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 116 ~     fn delete_identity(
[INFO] [stdout] 117 |         &mut self,
[INFO] [stdout] 118 |         user: UserId,
[INFO] [stdout] 119 |         kind: IdentityKind,
[INFO] [stdout] 120 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 116 | /     async fn delete_identity(
[INFO] [stdout] 117 | |         &mut self,
[INFO] [stdout] 118 | |         user: UserId,
[INFO] [stdout] 119 | |         kind: IdentityKind,
[INFO] [stdout] 120 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:122:5
[INFO] [stdout]     |
[INFO] [stdout] 122 |     async fn delete_identities(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 122 ~     fn delete_identities(
[INFO] [stdout] 123 |         &mut self,
[INFO] [stdout] 124 |         user: UserId,
[INFO] [stdout] 125 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:122:5
[INFO] [stdout]     |
[INFO] [stdout] 122 | /     async fn delete_identities(
[INFO] [stdout] 123 | |         &mut self,
[INFO] [stdout] 124 | |         user: UserId,
[INFO] [stdout] 125 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]    --> user/src/directory/store/mod.rs:128:1
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub trait SessionStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 129 |     async fn insert_session(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 129 ~     fn insert_session(
[INFO] [stdout] 130 |         &mut self,
[INFO] [stdout] 131 |         session: Session,
[INFO] [stdout] 132 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 129 | /     async fn insert_session(
[INFO] [stdout] 130 | |         &mut self,
[INFO] [stdout] 131 | |         session: Session,
[INFO] [stdout] 132 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:134:5
[INFO] [stdout]     |
[INFO] [stdout] 134 |     async fn get_session(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 134 ~     fn get_session(
[INFO] [stdout] 135 |         &mut self,
[INFO] [stdout] 136 |         id: &SessionId,
[INFO] [stdout] 137 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Session>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:134:5
[INFO] [stdout]     |
[INFO] [stdout] 134 | /     async fn get_session(
[INFO] [stdout] 135 | |         &mut self,
[INFO] [stdout] 136 | |         id: &SessionId,
[INFO] [stdout] 137 | |     ) -> DirectoryStoreResult<Session>;
[INFO] [stdout]     | |_______________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:139:5
[INFO] [stdout]     |
[INFO] [stdout] 139 |     async fn update_session(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 139 ~     fn update_session(
[INFO] [stdout] 140 |         &mut self,
[INFO] [stdout] 141 |         session: Session,
[INFO] [stdout] 142 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:139:5
[INFO] [stdout]     |
[INFO] [stdout] 139 | /     async fn update_session(
[INFO] [stdout] 140 | |         &mut self,
[INFO] [stdout] 141 | |         session: Session,
[INFO] [stdout] 142 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:144:5
[INFO] [stdout]     |
[INFO] [stdout] 144 |     async fn list_sessions(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 144 ~     fn list_sessions(
[INFO] [stdout] 145 |         &mut self,
[INFO] [stdout] 146 |         user: UserId,
[INFO] [stdout] 147 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Vec<Session>>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:144:5
[INFO] [stdout]     |
[INFO] [stdout] 144 | /     async fn list_sessions(
[INFO] [stdout] 145 | |         &mut self,
[INFO] [stdout] 146 | |         user: UserId,
[INFO] [stdout] 147 | |     ) -> DirectoryStoreResult<Vec<Session>>;
[INFO] [stdout]     | |____________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 149 |     async fn delete_session(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 149 ~     fn delete_session(
[INFO] [stdout] 150 |         &mut self,
[INFO] [stdout] 151 |         id: &SessionId,
[INFO] [stdout] 152 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 149 | /     async fn delete_session(
[INFO] [stdout] 150 | |         &mut self,
[INFO] [stdout] 151 | |         id: &SessionId,
[INFO] [stdout] 152 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:154:5
[INFO] [stdout]     |
[INFO] [stdout] 154 |     async fn delete_sessions(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 154 ~     fn delete_sessions(
[INFO] [stdout] 155 |         &mut self,
[INFO] [stdout] 156 |         user: UserId,
[INFO] [stdout] 157 |         keep: Option<&SessionId>,
[INFO] [stdout] 158 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:154:5
[INFO] [stdout]     |
[INFO] [stdout] 154 | /     async fn delete_sessions(
[INFO] [stdout] 155 | |         &mut self,
[INFO] [stdout] 156 | |         user: UserId,
[INFO] [stdout] 157 | |         keep: Option<&SessionId>,
[INFO] [stdout] 158 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]    --> user/src/directory/store/mod.rs:161:1
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub trait HouseholdStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:162:5
[INFO] [stdout]     |
[INFO] [stdout] 162 |     async fn insert_household(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 162 ~     fn insert_household(
[INFO] [stdout] 163 |         &mut self,
[INFO] [stdout] 164 |         household: Household,
[INFO] [stdout] 165 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:162:5
[INFO] [stdout]     |
[INFO] [stdout] 162 | /     async fn insert_household(
[INFO] [stdout] 163 | |         &mut self,
[INFO] [stdout] 164 | |         household: Household,
[INFO] [stdout] 165 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:167:5
[INFO] [stdout]     |
[INFO] [stdout] 167 |     async fn get_household(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 167 ~     fn get_household(
[INFO] [stdout] 168 |         &mut self,
[INFO] [stdout] 169 |         id: HouseholdId,
[INFO] [stdout] 170 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Household>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:167:5
[INFO] [stdout]     |
[INFO] [stdout] 167 | /     async fn get_household(
[INFO] [stdout] 168 | |         &mut self,
[INFO] [stdout] 169 | |         id: HouseholdId,
[INFO] [stdout] 170 | |     ) -> DirectoryStoreResult<Household>;
[INFO] [stdout]     | |_________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:172:5
[INFO] [stdout]     |
[INFO] [stdout] 172 |     async fn update_household(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 172 ~     fn update_household(
[INFO] [stdout] 173 |         &mut self,
[INFO] [stdout] 174 |         household: Household,
[INFO] [stdout] 175 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:172:5
[INFO] [stdout]     |
[INFO] [stdout] 172 | /     async fn update_household(
[INFO] [stdout] 173 | |         &mut self,
[INFO] [stdout] 174 | |         household: Household,
[INFO] [stdout] 175 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:177:5
[INFO] [stdout]     |
[INFO] [stdout] 177 |     async fn delete_household(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 177 ~     fn delete_household(
[INFO] [stdout] 178 |         &mut self,
[INFO] [stdout] 179 |         id: HouseholdId,
[INFO] [stdout] 180 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:177:5
[INFO] [stdout]     |
[INFO] [stdout] 177 | /     async fn delete_household(
[INFO] [stdout] 178 | |         &mut self,
[INFO] [stdout] 179 | |         id: HouseholdId,
[INFO] [stdout] 180 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:182:5
[INFO] [stdout]     |
[INFO] [stdout] 182 |     async fn insert_membership(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 182 ~     fn insert_membership(
[INFO] [stdout] 183 |         &mut self,
[INFO] [stdout] 184 |         membership: Membership,
[INFO] [stdout] 185 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:182:5
[INFO] [stdout]     |
[INFO] [stdout] 182 | /     async fn insert_membership(
[INFO] [stdout] 183 | |         &mut self,
[INFO] [stdout] 184 | |         membership: Membership,
[INFO] [stdout] 185 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:187:5
[INFO] [stdout]     |
[INFO] [stdout] 187 |     async fn list_memberships_of_user(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 187 ~     fn list_memberships_of_user(
[INFO] [stdout] 188 |         &mut self,
[INFO] [stdout] 189 |         user: UserId,
[INFO] [stdout] 190 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Vec<Membership>>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:187:5
[INFO] [stdout]     |
[INFO] [stdout] 187 | /     async fn list_memberships_of_user(
[INFO] [stdout] 188 | |         &mut self,
[INFO] [stdout] 189 | |         user: UserId,
[INFO] [stdout] 190 | |     ) -> DirectoryStoreResult<Vec<Membership>>;
[INFO] [stdout]     | |_______________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:192:5
[INFO] [stdout]     |
[INFO] [stdout] 192 |     async fn list_memberships_of_household(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 192 ~     fn list_memberships_of_household(
[INFO] [stdout] 193 |         &mut self,
[INFO] [stdout] 194 |         household: HouseholdId,
[INFO] [stdout] 195 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Vec<Membership>>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:192:5
[INFO] [stdout]     |
[INFO] [stdout] 192 | /     async fn list_memberships_of_household(
[INFO] [stdout] 193 | |         &mut self,
[INFO] [stdout] 194 | |         household: HouseholdId,
[INFO] [stdout] 195 | |     ) -> DirectoryStoreResult<Vec<Membership>>;
[INFO] [stdout]     | |_______________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:197:5
[INFO] [stdout]     |
[INFO] [stdout] 197 |     async fn delete_membership(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 197 ~     fn delete_membership(
[INFO] [stdout] 198 |         &mut self,
[INFO] [stdout] 199 |         household: HouseholdId,
[INFO] [stdout] 200 |         user: UserId,
[INFO] [stdout] 201 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:197:5
[INFO] [stdout]     |
[INFO] [stdout] 197 | /     async fn delete_membership(
[INFO] [stdout] 198 | |         &mut self,
[INFO] [stdout] 199 | |         household: HouseholdId,
[INFO] [stdout] 200 | |         user: UserId,
[INFO] [stdout] 201 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]    --> user/src/directory/store/mod.rs:204:1
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub trait TokenStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:205:5
[INFO] [stdout]     |
[INFO] [stdout] 205 |     async fn insert_token(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 205 ~     fn insert_token(
[INFO] [stdout] 206 |         &mut self,
[INFO] [stdout] 207 |         token: EmailToken,
[INFO] [stdout] 208 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:205:5
[INFO] [stdout]     |
[INFO] [stdout] 205 | /     async fn insert_token(
[INFO] [stdout] 206 | |         &mut self,
[INFO] [stdout] 207 | |         token: EmailToken,
[INFO] [stdout] 208 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:210:5
[INFO] [stdout]     |
[INFO] [stdout] 210 |     async fn take_token(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 210 ~     fn take_token(
[INFO] [stdout] 211 |         &mut self,
[INFO] [stdout] 212 |         secret: &TokenSecret,
[INFO] [stdout] 213 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<EmailToken>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:210:5
[INFO] [stdout]     |
[INFO] [stdout] 210 | /     async fn take_token(
[INFO] [stdout] 211 | |         &mut self,
[INFO] [stdout] 212 | |         secret: &TokenSecret,
[INFO] [stdout] 213 | |     ) -> DirectoryStoreResult<EmailToken>;
[INFO] [stdout]     | |__________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:215:5
[INFO] [stdout]     |
[INFO] [stdout] 215 |     async fn delete_tokens(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 215 ~     fn delete_tokens(
[INFO] [stdout] 216 |         &mut self,
[INFO] [stdout] 217 |         user: UserId,
[INFO] [stdout] 218 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:215:5
[INFO] [stdout]     |
[INFO] [stdout] 215 | /     async fn delete_tokens(
[INFO] [stdout] 216 | |         &mut self,
[INFO] [stdout] 217 | |         user: UserId,
[INFO] [stdout] 218 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> user/src/directory/store/mod.rs:446:1
[INFO] [stdout]     |
[INFO] [stdout] 446 | pub struct InMemoryDirectoryStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]  --> user/src/errors.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const MIN_PASSWORD_LENGTH: usize = 8;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]  --> user/src/errors.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum UserError {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]  --> user/src/errors.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     MalformedEmail(String),
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     EmailTaken(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     WeakPassword,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     InvalidCredentials,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     DuplicateIdentity,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     LastIdentity,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     InvalidToken,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     MissingEmail,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     NotAMember,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     NotAnOwner,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     SharedHousehold,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     PasswordHash(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     Randomness(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     DirectoryStoreError(#[from] DirectoryStoreError),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a type alias
[INFO] [stdout]   --> user/src/errors.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub type UserResult<T = ()> = Result<T, UserError>;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/household/mod.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Household {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/household/mod.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct HouseholdId(Uuid);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/household/mod.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct Membership {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> user/src/household/mod.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum Role {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/household/mod.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     Owner,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/household/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     Member,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/household/mod.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn id(&self) -> HouseholdId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/household/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/household/mod.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/household/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn household(&self) -> HouseholdId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/household/mod.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn user(&self) -> UserId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/household/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn role(&self) -> Role {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/identity/mod.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Identity {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> user/src/identity/mod.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum IdentityMethod {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/identity/mod.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Password {
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/identity/mod.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |         digest: PasswordDigest,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/identity/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     Oidc {
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/identity/mod.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |         issuer: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/identity/mod.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |         subject: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/identity/mod.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |         email: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> user/src/identity/mod.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum IdentityKind {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/identity/mod.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     Password,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/identity/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     Oidc,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/identity/mod.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct PasswordDigest(pub(crate) String);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/identity/mod.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn user(&self) -> UserId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/identity/mod.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/identity/mod.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub fn method(&self) -> &IdentityMethod {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/identity/mod.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn kind(&self) -> IdentityKind {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/identity/mod.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 60 |     pub fn kind(&self) -> IdentityKind {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/identity/mod.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub fn as_str(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]   --> user/src/session/mod.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const CREDENTIALED_SESSION_LIFETIME: SignedDuration = SignedDuration::from_hours(30 * 24);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]   --> user/src/session/mod.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const ANONYMOUS_SESSION_LIFETIME: SignedDuration = SignedDuration::from_hours(400 * 24);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/session/mod.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct SessionId(String);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/session/mod.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Session {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/session/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fingerprint: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/session/mod.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub device: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/session/mod.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub created_at: Timestamp,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/session/mod.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub last_seen_at: Timestamp,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/session/mod.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub current: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub fn fingerprint(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub fn id(&self) -> &SessionId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn user(&self) -> UserId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub fn last_seen_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn device(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> user/src/session/mod.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub fn lifetime(credentialed: bool) -> SignedDuration {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | /     pub fn is_live(
[INFO] [stdout] 79 | |         &self,
[INFO] [stdout] 80 | |         credentialed: bool,
[INFO] [stdout] 81 | |         now: Timestamp,
[INFO] [stdout] 82 | |     ) -> bool {
[INFO] [stdout]    | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 86 | /     pub fn overview(
[INFO] [stdout] 87 | |         &self,
[INFO] [stdout] 88 | |         current: bool,
[INFO] [stdout] 89 | |     ) -> SessionOverview {
[INFO] [stdout]    | |________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]   --> user/src/token/mod.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const VERIFY_EMAIL_TOKEN_LIFETIME: SignedDuration = SignedDuration::from_hours(24);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]   --> user/src/token/mod.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const RESET_PASSWORD_TOKEN_LIFETIME: SignedDuration = SignedDuration::from_hours(1);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/token/mod.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct TokenSecret(String);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/token/mod.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct EmailToken {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> user/src/token/mod.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum TokenPurpose {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/token/mod.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     VerifyEmail,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/token/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     ResetPassword,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/token/mod.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn secret(&self) -> &TokenSecret {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/token/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn user(&self) -> UserId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/token/mod.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 |     pub fn email(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/token/mod.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn purpose(&self) -> TokenPurpose {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/token/mod.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn expires_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/token/mod.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | /     pub fn is_expired(
[INFO] [stdout] 60 | |         &self,
[INFO] [stdout] 61 | |         now: Timestamp,
[INFO] [stdout] 62 | |     ) -> bool {
[INFO] [stdout]    | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/token/mod.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 68 |     pub fn lifetime(self) -> SignedDuration {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> user/src/user/mod.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub mod display;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/user/mod.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct User {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/user/mod.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct UserEmail {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/user/mod.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct NotificationPreferences {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/user/mod.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub spending_summary: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/user/mod.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     En,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/user/mod.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     De,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/user/mod.rs:46:1
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct UserId(Uuid);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn id(&self) -> UserId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn email(&self) -> Option<&UserEmail> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub fn notifications(&self) -> NotificationPreferences {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub fn locale(&self) -> Option<Locale> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn tag(self) -> &'static str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub fn address(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:97:5
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub fn verified(&self) -> bool {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `error_if_malformed_email` is never used
[INFO] [stdout]    --> user/src/directory/mod.rs:718:4
[INFO] [stdout]     |
[INFO] [stdout] 718 | fn error_if_malformed_email(email: &str) -> UserResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for the crate
[INFO] [stdout]  --> user/src/lib.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | / #[cfg(feature = "auth")]
[INFO] [stdout] 2 | | pub mod auth;
[INFO] [stdout] 3 | | pub mod directory;
[INFO] [stdout] 4 | | pub mod errors;
[INFO] [stdout] ... |
[INFO] [stdout] 8 | | pub mod token;
[INFO] [stdout] 9 | | pub mod user;
[INFO] [stdout]   | |_____________^
[INFO] [stdout]   |
[INFO] [stdout]   = note: requested on the command line with `-W missing-docs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> user/src/lib.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub mod directory;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> user/src/lib.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub mod errors;
[INFO] [stdout]   | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> user/src/lib.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub mod household;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> user/src/lib.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub mod identity;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> user/src/lib.rs:7:1
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub mod session;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> user/src/lib.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub mod token;
[INFO] [stdout]   | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> user/src/lib.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub mod user;
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> user/src/directory/mod.rs:41:1
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub mod store;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/directory/mod.rs:45:1
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct Directory<S> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/directory/mod.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub session: Session,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/directory/mod.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 52 |     pub user: User,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/directory/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub credentialed: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> user/src/directory/mod.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn new(store: S) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub async fn create_anonymous_user(&mut self) -> UserResult<User> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 129 | /     pub async fn login_oidc(
[INFO] [stdout] 130 | |         &mut self,
[INFO] [stdout] 131 | |         current: Option<UserId>,
[INFO] [stdout] 132 | |         issuer: String,
[INFO] [stdout] ...   |
[INFO] [stdout] 136 | |         name: Option<String>,
[INFO] [stdout] 137 | |     ) -> UserResult<User> {
[INFO] [stdout]     | |_________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:216:5
[INFO] [stdout]     |
[INFO] [stdout] 216 | /     pub async fn remove_identity(
[INFO] [stdout] 217 | |         &mut self,
[INFO] [stdout] 218 | |         user: UserId,
[INFO] [stdout] 219 | |         kind: IdentityKind,
[INFO] [stdout] 220 | |     ) -> UserResult {
[INFO] [stdout]     | |___________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:228:5
[INFO] [stdout]     |
[INFO] [stdout] 228 | /     pub async fn identity_kinds(
[INFO] [stdout] 229 | |         &mut self,
[INFO] [stdout] 230 | |         user: UserId,
[INFO] [stdout] 231 | |     ) -> UserResult<Vec<IdentityKind>> {
[INFO] [stdout]     | |______________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:260:5
[INFO] [stdout]     |
[INFO] [stdout] 260 | /     pub async fn resolve_session(
[INFO] [stdout] 261 | |         &mut self,
[INFO] [stdout] 262 | |         id: &SessionId,
[INFO] [stdout] 263 | |     ) -> UserResult<Option<ResolvedSession>> {
[INFO] [stdout]     | |____________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:290:5
[INFO] [stdout]     |
[INFO] [stdout] 290 | /     pub async fn session_overviews(
[INFO] [stdout] 291 | |         &mut self,
[INFO] [stdout] 292 | |         user: UserId,
[INFO] [stdout] 293 | |         current: &SessionId,
[INFO] [stdout] 294 | |     ) -> UserResult<Vec<SessionOverview>> {
[INFO] [stdout]     | |_________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:304:5
[INFO] [stdout]     |
[INFO] [stdout] 304 | /     pub async fn revoke_session(
[INFO] [stdout] 305 | |         &mut self,
[INFO] [stdout] 306 | |         user: UserId,
[INFO] [stdout] 307 | |         fingerprint: &str,
[INFO] [stdout] 308 | |     ) -> UserResult {
[INFO] [stdout]     | |___________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:318:5
[INFO] [stdout]     |
[INFO] [stdout] 318 | /     pub async fn revoke_other_sessions(
[INFO] [stdout] 319 | |         &mut self,
[INFO] [stdout] 320 | |         user: UserId,
[INFO] [stdout] 321 | |         keep: &SessionId,
[INFO] [stdout] 322 | |     ) -> UserResult {
[INFO] [stdout]     | |___________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:326:5
[INFO] [stdout]     |
[INFO] [stdout] 326 | /     pub async fn end_session(
[INFO] [stdout] 327 | |         &mut self,
[INFO] [stdout] 328 | |         id: &SessionId,
[INFO] [stdout] 329 | |     ) -> UserResult {
[INFO] [stdout]     | |___________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:408:5
[INFO] [stdout]     |
[INFO] [stdout] 408 | /     pub async fn confirm_email(
[INFO] [stdout] 409 | |         &mut self,
[INFO] [stdout] 410 | |         secret: &TokenSecret,
[INFO] [stdout] 411 | |     ) -> UserResult<User> {
[INFO] [stdout]     | |_________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:428:5
[INFO] [stdout]     |
[INFO] [stdout] 428 | /     pub async fn rename_user(
[INFO] [stdout] 429 | |         &mut self,
[INFO] [stdout] 430 | |         user: UserId,
[INFO] [stdout] 431 | |         name: String,
[INFO] [stdout] 432 | |     ) -> UserResult<User> {
[INFO] [stdout]     | |_________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:463:5
[INFO] [stdout]     |
[INFO] [stdout] 463 | /     pub async fn set_notifications(
[INFO] [stdout] 464 | |         &mut self,
[INFO] [stdout] 465 | |         user: UserId,
[INFO] [stdout] 466 | |         notifications: NotificationPreferences,
[INFO] [stdout] 467 | |     ) -> UserResult<User> {
[INFO] [stdout]     | |_________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:475:5
[INFO] [stdout]     |
[INFO] [stdout] 475 | /     pub async fn set_locale(
[INFO] [stdout] 476 | |         &mut self,
[INFO] [stdout] 477 | |         user: UserId,
[INFO] [stdout] 478 | |         locale: Option<Locale>,
[INFO] [stdout] 479 | |     ) -> UserResult<User> {
[INFO] [stdout]     | |_________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:487:5
[INFO] [stdout]     |
[INFO] [stdout] 487 | /     pub async fn primary_membership(
[INFO] [stdout] 488 | |         &mut self,
[INFO] [stdout] 489 | |         user: UserId,
[INFO] [stdout] 490 | |     ) -> UserResult<Membership> {
[INFO] [stdout]     | |_______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:500:5
[INFO] [stdout]     |
[INFO] [stdout] 500 | /     pub async fn household_members(
[INFO] [stdout] 501 | |         &mut self,
[INFO] [stdout] 502 | |         household: HouseholdId,
[INFO] [stdout] 503 | |     ) -> UserResult<Vec<(User, Role)>> {
[INFO] [stdout]     | |______________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/mod.rs:512:5
[INFO] [stdout]     |
[INFO] [stdout] 512 | /     pub async fn delete_user(
[INFO] [stdout] 513 | |         &mut self,
[INFO] [stdout] 514 | |         user: UserId,
[INFO] [stdout] 515 | |     ) -> UserResult<Vec<HouseholdId>> {
[INFO] [stdout]     | |_____________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> user/src/directory/store/mod.rs:28:1
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum DirectoryStoreError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     DuplicateUserId(UserId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     DuplicateIdentity(UserId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     DuplicateSessionId,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     DuplicateHouseholdId(HouseholdId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     DuplicateMembership,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     DuplicateTokenSecret,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     NoSuchUser(UserId),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 44 |     NoSuchIdentity,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     NoSuchSession,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     NoSuchHousehold(HouseholdId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |     NoSuchMembership,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 52 |     NoSuchToken,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 54 |     Domain(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/directory/store/mod.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 56 |     Backend(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a type alias
[INFO] [stdout]   --> user/src/directory/store/mod.rs:59:1
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub type DirectoryStoreResult<T = ()> = Result<T, DirectoryStoreError>;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]   --> user/src/directory/store/mod.rs:61:1
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub trait DirectoryStore {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> user/src/directory/store/mod.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 62 |     async fn insert_user(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout]    = note: `#[warn(async_fn_in_trait)]` on by default
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 62 ~     fn insert_user(
[INFO] [stdout] 63 |         &mut self,
[INFO] [stdout] 64 |         user: User,
[INFO] [stdout] 65 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/store/mod.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | /     async fn insert_user(
[INFO] [stdout] 63 | |         &mut self,
[INFO] [stdout] 64 | |         user: User,
[INFO] [stdout] 65 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> user/src/directory/store/mod.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 |     async fn get_user(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 67 ~     fn get_user(
[INFO] [stdout] 68 |         &mut self,
[INFO] [stdout] 69 |         id: UserId,
[INFO] [stdout] 70 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<User>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/store/mod.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | /     async fn get_user(
[INFO] [stdout] 68 | |         &mut self,
[INFO] [stdout] 69 | |         id: UserId,
[INFO] [stdout] 70 | |     ) -> DirectoryStoreResult<User>;
[INFO] [stdout]    | |____________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> user/src/directory/store/mod.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 |     async fn update_user(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 72 ~     fn update_user(
[INFO] [stdout] 73 |         &mut self,
[INFO] [stdout] 74 |         user: User,
[INFO] [stdout] 75 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/store/mod.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | /     async fn update_user(
[INFO] [stdout] 73 | |         &mut self,
[INFO] [stdout] 74 | |         user: User,
[INFO] [stdout] 75 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> user/src/directory/store/mod.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 77 |     async fn delete_user(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 77 ~     fn delete_user(
[INFO] [stdout] 78 |         &mut self,
[INFO] [stdout] 79 |         id: UserId,
[INFO] [stdout] 80 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/store/mod.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 77 | /     async fn delete_user(
[INFO] [stdout] 78 | |         &mut self,
[INFO] [stdout] 79 | |         id: UserId,
[INFO] [stdout] 80 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> user/src/directory/store/mod.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     async fn find_users_by_email(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 82 ~     fn find_users_by_email(
[INFO] [stdout] 83 |         &mut self,
[INFO] [stdout] 84 |         email: &str,
[INFO] [stdout] 85 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Vec<User>>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/store/mod.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 | /     async fn find_users_by_email(
[INFO] [stdout] 83 | |         &mut self,
[INFO] [stdout] 84 | |         email: &str,
[INFO] [stdout] 85 | |     ) -> DirectoryStoreResult<Vec<User>>;
[INFO] [stdout]    | |_________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]   --> user/src/directory/store/mod.rs:88:1
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub trait IdentityStore {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> user/src/directory/store/mod.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 |     async fn insert_identity(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 89 ~     fn insert_identity(
[INFO] [stdout] 90 |         &mut self,
[INFO] [stdout] 91 |         identity: Identity,
[INFO] [stdout] 92 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/store/mod.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 | /     async fn insert_identity(
[INFO] [stdout] 90 | |         &mut self,
[INFO] [stdout] 91 | |         identity: Identity,
[INFO] [stdout] 92 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> user/src/directory/store/mod.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 94 |     async fn get_identity(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 94 ~     fn get_identity(
[INFO] [stdout] 95 |         &mut self,
[INFO] [stdout] 96 |         user: UserId,
[INFO] [stdout] 97 |         kind: IdentityKind,
[INFO] [stdout] 98 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Identity>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/directory/store/mod.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 94 | /     async fn get_identity(
[INFO] [stdout] 95 | |         &mut self,
[INFO] [stdout] 96 | |         user: UserId,
[INFO] [stdout] 97 | |         kind: IdentityKind,
[INFO] [stdout] 98 | |     ) -> DirectoryStoreResult<Identity>;
[INFO] [stdout]    | |________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 |     async fn get_oidc_identity(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 100 ~     fn get_oidc_identity(
[INFO] [stdout] 101 |         &mut self,
[INFO] [stdout] 102 |         issuer: &str,
[INFO] [stdout] 103 |         subject: &str,
[INFO] [stdout] 104 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Identity>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 | /     async fn get_oidc_identity(
[INFO] [stdout] 101 | |         &mut self,
[INFO] [stdout] 102 | |         issuer: &str,
[INFO] [stdout] 103 | |         subject: &str,
[INFO] [stdout] 104 | |     ) -> DirectoryStoreResult<Identity>;
[INFO] [stdout]     | |________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 |     async fn list_identities(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 106 ~     fn list_identities(
[INFO] [stdout] 107 |         &mut self,
[INFO] [stdout] 108 |         user: UserId,
[INFO] [stdout] 109 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Vec<Identity>>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 | /     async fn list_identities(
[INFO] [stdout] 107 | |         &mut self,
[INFO] [stdout] 108 | |         user: UserId,
[INFO] [stdout] 109 | |     ) -> DirectoryStoreResult<Vec<Identity>>;
[INFO] [stdout]     | |_____________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:111:5
[INFO] [stdout]     |
[INFO] [stdout] 111 |     async fn update_identity(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 111 ~     fn update_identity(
[INFO] [stdout] 112 |         &mut self,
[INFO] [stdout] 113 |         identity: Identity,
[INFO] [stdout] 114 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:111:5
[INFO] [stdout]     |
[INFO] [stdout] 111 | /     async fn update_identity(
[INFO] [stdout] 112 | |         &mut self,
[INFO] [stdout] 113 | |         identity: Identity,
[INFO] [stdout] 114 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 116 |     async fn delete_identity(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 116 ~     fn delete_identity(
[INFO] [stdout] 117 |         &mut self,
[INFO] [stdout] 118 |         user: UserId,
[INFO] [stdout] 119 |         kind: IdentityKind,
[INFO] [stdout] 120 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 116 | /     async fn delete_identity(
[INFO] [stdout] 117 | |         &mut self,
[INFO] [stdout] 118 | |         user: UserId,
[INFO] [stdout] 119 | |         kind: IdentityKind,
[INFO] [stdout] 120 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:122:5
[INFO] [stdout]     |
[INFO] [stdout] 122 |     async fn delete_identities(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 122 ~     fn delete_identities(
[INFO] [stdout] 123 |         &mut self,
[INFO] [stdout] 124 |         user: UserId,
[INFO] [stdout] 125 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:122:5
[INFO] [stdout]     |
[INFO] [stdout] 122 | /     async fn delete_identities(
[INFO] [stdout] 123 | |         &mut self,
[INFO] [stdout] 124 | |         user: UserId,
[INFO] [stdout] 125 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]    --> user/src/directory/store/mod.rs:128:1
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub trait SessionStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 129 |     async fn insert_session(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 129 ~     fn insert_session(
[INFO] [stdout] 130 |         &mut self,
[INFO] [stdout] 131 |         session: Session,
[INFO] [stdout] 132 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 129 | /     async fn insert_session(
[INFO] [stdout] 130 | |         &mut self,
[INFO] [stdout] 131 | |         session: Session,
[INFO] [stdout] 132 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:134:5
[INFO] [stdout]     |
[INFO] [stdout] 134 |     async fn get_session(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 134 ~     fn get_session(
[INFO] [stdout] 135 |         &mut self,
[INFO] [stdout] 136 |         id: &SessionId,
[INFO] [stdout] 137 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Session>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:134:5
[INFO] [stdout]     |
[INFO] [stdout] 134 | /     async fn get_session(
[INFO] [stdout] 135 | |         &mut self,
[INFO] [stdout] 136 | |         id: &SessionId,
[INFO] [stdout] 137 | |     ) -> DirectoryStoreResult<Session>;
[INFO] [stdout]     | |_______________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:139:5
[INFO] [stdout]     |
[INFO] [stdout] 139 |     async fn update_session(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 139 ~     fn update_session(
[INFO] [stdout] 140 |         &mut self,
[INFO] [stdout] 141 |         session: Session,
[INFO] [stdout] 142 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:139:5
[INFO] [stdout]     |
[INFO] [stdout] 139 | /     async fn update_session(
[INFO] [stdout] 140 | |         &mut self,
[INFO] [stdout] 141 | |         session: Session,
[INFO] [stdout] 142 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:144:5
[INFO] [stdout]     |
[INFO] [stdout] 144 |     async fn list_sessions(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 144 ~     fn list_sessions(
[INFO] [stdout] 145 |         &mut self,
[INFO] [stdout] 146 |         user: UserId,
[INFO] [stdout] 147 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Vec<Session>>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:144:5
[INFO] [stdout]     |
[INFO] [stdout] 144 | /     async fn list_sessions(
[INFO] [stdout] 145 | |         &mut self,
[INFO] [stdout] 146 | |         user: UserId,
[INFO] [stdout] 147 | |     ) -> DirectoryStoreResult<Vec<Session>>;
[INFO] [stdout]     | |____________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 149 |     async fn delete_session(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 149 ~     fn delete_session(
[INFO] [stdout] 150 |         &mut self,
[INFO] [stdout] 151 |         id: &SessionId,
[INFO] [stdout] 152 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 149 | /     async fn delete_session(
[INFO] [stdout] 150 | |         &mut self,
[INFO] [stdout] 151 | |         id: &SessionId,
[INFO] [stdout] 152 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:154:5
[INFO] [stdout]     |
[INFO] [stdout] 154 |     async fn delete_sessions(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 154 ~     fn delete_sessions(
[INFO] [stdout] 155 |         &mut self,
[INFO] [stdout] 156 |         user: UserId,
[INFO] [stdout] 157 |         keep: Option<&SessionId>,
[INFO] [stdout] 158 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:154:5
[INFO] [stdout]     |
[INFO] [stdout] 154 | /     async fn delete_sessions(
[INFO] [stdout] 155 | |         &mut self,
[INFO] [stdout] 156 | |         user: UserId,
[INFO] [stdout] 157 | |         keep: Option<&SessionId>,
[INFO] [stdout] 158 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]    --> user/src/directory/store/mod.rs:161:1
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub trait HouseholdStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:162:5
[INFO] [stdout]     |
[INFO] [stdout] 162 |     async fn insert_household(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 162 ~     fn insert_household(
[INFO] [stdout] 163 |         &mut self,
[INFO] [stdout] 164 |         household: Household,
[INFO] [stdout] 165 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:162:5
[INFO] [stdout]     |
[INFO] [stdout] 162 | /     async fn insert_household(
[INFO] [stdout] 163 | |         &mut self,
[INFO] [stdout] 164 | |         household: Household,
[INFO] [stdout] 165 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:167:5
[INFO] [stdout]     |
[INFO] [stdout] 167 |     async fn get_household(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 167 ~     fn get_household(
[INFO] [stdout] 168 |         &mut self,
[INFO] [stdout] 169 |         id: HouseholdId,
[INFO] [stdout] 170 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Household>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:167:5
[INFO] [stdout]     |
[INFO] [stdout] 167 | /     async fn get_household(
[INFO] [stdout] 168 | |         &mut self,
[INFO] [stdout] 169 | |         id: HouseholdId,
[INFO] [stdout] 170 | |     ) -> DirectoryStoreResult<Household>;
[INFO] [stdout]     | |_________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:172:5
[INFO] [stdout]     |
[INFO] [stdout] 172 |     async fn update_household(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 172 ~     fn update_household(
[INFO] [stdout] 173 |         &mut self,
[INFO] [stdout] 174 |         household: Household,
[INFO] [stdout] 175 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:172:5
[INFO] [stdout]     |
[INFO] [stdout] 172 | /     async fn update_household(
[INFO] [stdout] 173 | |         &mut self,
[INFO] [stdout] 174 | |         household: Household,
[INFO] [stdout] 175 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:177:5
[INFO] [stdout]     |
[INFO] [stdout] 177 |     async fn delete_household(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 177 ~     fn delete_household(
[INFO] [stdout] 178 |         &mut self,
[INFO] [stdout] 179 |         id: HouseholdId,
[INFO] [stdout] 180 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:177:5
[INFO] [stdout]     |
[INFO] [stdout] 177 | /     async fn delete_household(
[INFO] [stdout] 178 | |         &mut self,
[INFO] [stdout] 179 | |         id: HouseholdId,
[INFO] [stdout] 180 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:182:5
[INFO] [stdout]     |
[INFO] [stdout] 182 |     async fn insert_membership(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 182 ~     fn insert_membership(
[INFO] [stdout] 183 |         &mut self,
[INFO] [stdout] 184 |         membership: Membership,
[INFO] [stdout] 185 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:182:5
[INFO] [stdout]     |
[INFO] [stdout] 182 | /     async fn insert_membership(
[INFO] [stdout] 183 | |         &mut self,
[INFO] [stdout] 184 | |         membership: Membership,
[INFO] [stdout] 185 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:187:5
[INFO] [stdout]     |
[INFO] [stdout] 187 |     async fn list_memberships_of_user(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 187 ~     fn list_memberships_of_user(
[INFO] [stdout] 188 |         &mut self,
[INFO] [stdout] 189 |         user: UserId,
[INFO] [stdout] 190 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Vec<Membership>>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:187:5
[INFO] [stdout]     |
[INFO] [stdout] 187 | /     async fn list_memberships_of_user(
[INFO] [stdout] 188 | |         &mut self,
[INFO] [stdout] 189 | |         user: UserId,
[INFO] [stdout] 190 | |     ) -> DirectoryStoreResult<Vec<Membership>>;
[INFO] [stdout]     | |_______________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:192:5
[INFO] [stdout]     |
[INFO] [stdout] 192 |     async fn list_memberships_of_household(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 192 ~     fn list_memberships_of_household(
[INFO] [stdout] 193 |         &mut self,
[INFO] [stdout] 194 |         household: HouseholdId,
[INFO] [stdout] 195 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<Vec<Membership>>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:192:5
[INFO] [stdout]     |
[INFO] [stdout] 192 | /     async fn list_memberships_of_household(
[INFO] [stdout] 193 | |         &mut self,
[INFO] [stdout] 194 | |         household: HouseholdId,
[INFO] [stdout] 195 | |     ) -> DirectoryStoreResult<Vec<Membership>>;
[INFO] [stdout]     | |_______________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:197:5
[INFO] [stdout]     |
[INFO] [stdout] 197 |     async fn delete_membership(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 197 ~     fn delete_membership(
[INFO] [stdout] 198 |         &mut self,
[INFO] [stdout] 199 |         household: HouseholdId,
[INFO] [stdout] 200 |         user: UserId,
[INFO] [stdout] 201 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:197:5
[INFO] [stdout]     |
[INFO] [stdout] 197 | /     async fn delete_membership(
[INFO] [stdout] 198 | |         &mut self,
[INFO] [stdout] 199 | |         household: HouseholdId,
[INFO] [stdout] 200 | |         user: UserId,
[INFO] [stdout] 201 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]    --> user/src/directory/store/mod.rs:204:1
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub trait TokenStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:205:5
[INFO] [stdout]     |
[INFO] [stdout] 205 |     async fn insert_token(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 205 ~     fn insert_token(
[INFO] [stdout] 206 |         &mut self,
[INFO] [stdout] 207 |         token: EmailToken,
[INFO] [stdout] 208 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:205:5
[INFO] [stdout]     |
[INFO] [stdout] 205 | /     async fn insert_token(
[INFO] [stdout] 206 | |         &mut self,
[INFO] [stdout] 207 | |         token: EmailToken,
[INFO] [stdout] 208 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:210:5
[INFO] [stdout]     |
[INFO] [stdout] 210 |     async fn take_token(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 210 ~     fn take_token(
[INFO] [stdout] 211 |         &mut self,
[INFO] [stdout] 212 |         secret: &TokenSecret,
[INFO] [stdout] 213 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult<EmailToken>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:210:5
[INFO] [stdout]     |
[INFO] [stdout] 210 | /     async fn take_token(
[INFO] [stdout] 211 | |         &mut self,
[INFO] [stdout] 212 | |         secret: &TokenSecret,
[INFO] [stdout] 213 | |     ) -> DirectoryStoreResult<EmailToken>;
[INFO] [stdout]     | |__________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> user/src/directory/store/mod.rs:215:5
[INFO] [stdout]     |
[INFO] [stdout] 215 |     async fn delete_tokens(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 215 ~     fn delete_tokens(
[INFO] [stdout] 216 |         &mut self,
[INFO] [stdout] 217 |         user: UserId,
[INFO] [stdout] 218 ~     ) -> impl std::future::Future<Output = DirectoryStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> user/src/directory/store/mod.rs:215:5
[INFO] [stdout]     |
[INFO] [stdout] 215 | /     async fn delete_tokens(
[INFO] [stdout] 216 | |         &mut self,
[INFO] [stdout] 217 | |         user: UserId,
[INFO] [stdout] 218 | |     ) -> DirectoryStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> user/src/directory/store/mod.rs:446:1
[INFO] [stdout]     |
[INFO] [stdout] 446 | pub struct InMemoryDirectoryStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]  --> user/src/errors.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const MIN_PASSWORD_LENGTH: usize = 8;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]  --> user/src/errors.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum UserError {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]  --> user/src/errors.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     MalformedEmail(String),
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     EmailTaken(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     WeakPassword,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     InvalidCredentials,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     DuplicateIdentity,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     LastIdentity,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     InvalidToken,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     MissingEmail,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     NotAMember,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     NotAnOwner,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     SharedHousehold,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     PasswordHash(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     Randomness(String),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/errors.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     DirectoryStoreError(#[from] DirectoryStoreError),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a type alias
[INFO] [stdout]   --> user/src/errors.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub type UserResult<T = ()> = Result<T, UserError>;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/household/mod.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Household {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/household/mod.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct HouseholdId(Uuid);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/household/mod.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct Membership {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> user/src/household/mod.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum Role {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/household/mod.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     Owner,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/household/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     Member,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/household/mod.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn id(&self) -> HouseholdId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/household/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/household/mod.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/household/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn household(&self) -> HouseholdId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/household/mod.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn user(&self) -> UserId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/household/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn role(&self) -> Role {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/identity/mod.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Identity {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> user/src/identity/mod.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum IdentityMethod {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/identity/mod.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     Password {
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/identity/mod.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |         digest: PasswordDigest,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/identity/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     Oidc {
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/identity/mod.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |         issuer: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/identity/mod.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |         subject: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/identity/mod.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |         email: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> user/src/identity/mod.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum IdentityKind {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/identity/mod.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     Password,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/identity/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     Oidc,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/identity/mod.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct PasswordDigest(pub(crate) String);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/identity/mod.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn user(&self) -> UserId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/identity/mod.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/identity/mod.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub fn method(&self) -> &IdentityMethod {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/identity/mod.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn kind(&self) -> IdentityKind {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/identity/mod.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 60 |     pub fn kind(&self) -> IdentityKind {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/identity/mod.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub fn as_str(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]   --> user/src/session/mod.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const CREDENTIALED_SESSION_LIFETIME: SignedDuration = SignedDuration::from_hours(30 * 24);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]   --> user/src/session/mod.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const ANONYMOUS_SESSION_LIFETIME: SignedDuration = SignedDuration::from_hours(400 * 24);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/session/mod.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct SessionId(String);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/session/mod.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Session {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/session/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fingerprint: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/session/mod.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub device: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/session/mod.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub created_at: Timestamp,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/session/mod.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub last_seen_at: Timestamp,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/session/mod.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub current: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub fn fingerprint(&self) -> String {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |     pub fn id(&self) -> &SessionId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn user(&self) -> UserId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub fn last_seen_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn device(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> user/src/session/mod.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub fn lifetime(credentialed: bool) -> SignedDuration {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | /     pub fn is_live(
[INFO] [stdout] 79 | |         &self,
[INFO] [stdout] 80 | |         credentialed: bool,
[INFO] [stdout] 81 | |         now: Timestamp,
[INFO] [stdout] 82 | |     ) -> bool {
[INFO] [stdout]    | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/session/mod.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 86 | /     pub fn overview(
[INFO] [stdout] 87 | |         &self,
[INFO] [stdout] 88 | |         current: bool,
[INFO] [stdout] 89 | |     ) -> SessionOverview {
[INFO] [stdout]    | |________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]   --> user/src/token/mod.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const VERIFY_EMAIL_TOKEN_LIFETIME: SignedDuration = SignedDuration::from_hours(24);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a constant
[INFO] [stdout]   --> user/src/token/mod.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const RESET_PASSWORD_TOKEN_LIFETIME: SignedDuration = SignedDuration::from_hours(1);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/token/mod.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct TokenSecret(String);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/token/mod.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct EmailToken {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> user/src/token/mod.rs:33:1
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum TokenPurpose {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/token/mod.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     VerifyEmail,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/token/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     ResetPassword,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/token/mod.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn secret(&self) -> &TokenSecret {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/token/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn user(&self) -> UserId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/token/mod.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 |     pub fn email(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/token/mod.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn purpose(&self) -> TokenPurpose {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/token/mod.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |     pub fn expires_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/token/mod.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | /     pub fn is_expired(
[INFO] [stdout] 60 | |         &self,
[INFO] [stdout] 61 | |         now: Timestamp,
[INFO] [stdout] 62 | |     ) -> bool {
[INFO] [stdout]    | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/token/mod.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 68 |     pub fn lifetime(self) -> SignedDuration {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> user/src/user/mod.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub mod display;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/user/mod.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct User {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/user/mod.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct UserEmail {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/user/mod.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct NotificationPreferences {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> user/src/user/mod.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub spending_summary: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/user/mod.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     En,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> user/src/user/mod.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     De,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> user/src/user/mod.rs:46:1
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct UserId(Uuid);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn id(&self) -> UserId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn email(&self) -> Option<&UserEmail> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 65 |     pub fn notifications(&self) -> NotificationPreferences {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub fn locale(&self) -> Option<Locale> {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     pub fn tag(self) -> &'static str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub fn address(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> user/src/user/mod.rs:97:5
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub fn verified(&self) -> bool {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking publicsuffix v2.3.0
[INFO] [stderr]     Checking dioxus-signals v0.7.10
[INFO] [stderr]     Checking dioxus-history v0.7.10
[INFO] [stderr]     Checking cookie_store v0.22.1
[INFO] [stderr]     Checking dioxus-devtools-types v0.7.10
[INFO] [stderr]     Checking js-sys v0.3.103
[INFO] [stderr]     Checking dioxus-cli-config v0.7.10
[INFO] [stderr]     Checking sledgehammer_bindgen v0.6.0
[INFO] [stderr]     Checking dioxus-logger v0.7.10
[INFO] [stderr]     Checking dioxus-hooks v0.7.10
[INFO] [stderr]     Checking manganis v0.7.10
[INFO] [stderr]     Checking dioxus-stores v0.7.10
[INFO] [stderr]     Checking dioxus-html v0.7.10
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking ravif v0.13.0
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking exr v1.74.2
[INFO] [stderr]     Checking tiff v0.11.3
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking rand v0.9.5
[INFO] [stderr]     Checking tokio-util v0.7.19
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tungstenite v0.27.0
[INFO] [stderr]     Checking tungstenite v0.28.0
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking axum v0.8.9
[INFO] [stderr]     Checking dioxus-router v0.7.10
[INFO] [stderr]     Checking dioxus-devtools v0.7.10
[INFO] [stderr]     Checking async-tungstenite v0.31.0
[INFO] [stderr]     Checking h2 v0.4.15
[INFO] [stderr]     Checking dioxus-fullstack-core v0.7.10
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]     Checking hyper v1.11.0
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking web-sys v0.3.103
[INFO] [stderr]     Checking wasm-bindgen-futures v0.4.76
[INFO] [stderr]     Checking serde-wasm-bindgen v0.6.5
[INFO] [stderr]     Checking gloo-timers v0.3.0
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking rustls-platform-verifier v0.7.0
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking reqwest v0.13.4
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking zeni-inventory v0.1.0 (/opt/rustwide/workdir/inventory)
[INFO] [stdout] warning: unused import: `zeni_finance::ledger::store::LedgerStoreError`
[INFO] [stdout]  --> inventory/src/warehouse/store/mod.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use zeni_finance::ledger::store::LedgerStoreError;
[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 import: `zeni_finance::ledger::store::LedgerStoreError`
[INFO] [stdout]  --> inventory/src/warehouse/store/mod.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use zeni_finance::ledger::store::LedgerStoreError;
[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 variable: `f`
[INFO] [stdout]  --> inventory/src/item/display.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |         f: &mut std::fmt::Formatter<'_>,
[INFO] [stdout]   |         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `image`
[INFO] [stdout]   --> inventory/src/receipt/extractors/anthropic.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         image: &image::DynamicImage,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_image`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `created_at`
[INFO] [stdout]   --> inventory/src/receipt/extractors/raw.rs:68:13
[INFO] [stdout]    |
[INFO] [stdout] 68 |         let created_at = Timestamp::now();
[INFO] [stdout]    |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_created_at`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f`
[INFO] [stdout]  --> inventory/src/item/display.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |         f: &mut std::fmt::Formatter<'_>,
[INFO] [stdout]   |         ^ help: if this is intentional, prefix it with an underscore: `_f`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `image`
[INFO] [stdout]   --> inventory/src/receipt/extractors/anthropic.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |         image: &image::DynamicImage,
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_image`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `created_at`
[INFO] [stdout]   --> inventory/src/receipt/extractors/raw.rs:68:13
[INFO] [stdout]    |
[INFO] [stdout] 68 |         let created_at = Timestamp::now();
[INFO] [stdout]    |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_created_at`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `api_key` is never read
[INFO] [stdout]  --> inventory/src/receipt/extractors/anthropic.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct AnthropicExtractor {
[INFO] [stdout]   |            ------------------ field in this struct
[INFO] [stdout] 7 |     api_key: String,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for the crate
[INFO] [stdout]  --> inventory/src/lib.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | / pub mod errors;
[INFO] [stdout] 2 | | pub mod item;
[INFO] [stdout] 3 | | pub mod receipt;
[INFO] [stdout] 4 | | pub mod warehouse;
[INFO] [stdout]   | |__________________^
[INFO] [stdout]   |
[INFO] [stdout]   = note: requested on the command line with `-W missing-docs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> inventory/src/lib.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub mod errors;
[INFO] [stdout]   | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> inventory/src/lib.rs:2:1
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub mod item;
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> inventory/src/lib.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub mod receipt;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> inventory/src/lib.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub mod warehouse;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]  --> inventory/src/errors.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum InventoryError {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]  --> inventory/src/errors.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     Image(#[from] image::ImageError),
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]  --> inventory/src/errors.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     MediaWrite(#[from] std::io::Error),
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     Request(#[from] reqwest::Error),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     EmptyResponse,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     MalformedReceipt(#[from] serde_json::Error),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     UnsupportedCurrency(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     UnsupportedImageFormat(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     MalformedAmount(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     MalformedCivil { kind: &'static str, value: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/errors.rs:24:22
[INFO] [stdout]    |
[INFO] [stdout] 24 |     MalformedCivil { kind: &'static str, value: String },
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/errors.rs:24:42
[INFO] [stdout]    |
[INFO] [stdout] 24 |     MalformedCivil { kind: &'static str, value: String },
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     MissingQuantity(&'static str),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     EmptyReceipt,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     ZeroQuantity,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     DifferentCurrencies,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     WarehouseStoreError(#[from] WarehouseStoreError),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a type alias
[INFO] [stdout]   --> inventory/src/errors.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub type InventoryResult<T = ()> = Result<T, InventoryError>;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> inventory/src/item/mod.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub mod display;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> inventory/src/item/mod.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Item {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> inventory/src/item/mod.rs:25:1
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct ItemId(Uuid);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/item/mod.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub fn id(&self) -> ItemId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/item/mod.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/item/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn description(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/item/mod.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fn r#type(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub mod extractors;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Receipt {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fn id(&self) -> ReceiptId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn header(&self) -> &ReceiptHeader {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 52 |     pub fn articles(&self) -> &[ReceiptArticle] {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn id(&self) -> ReceiptId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn extracted(&self) -> &ExtractedReceipt {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:80:1
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub enum ReceiptState {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     Draft(ReceiptDraft),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     Confirmed(Receipt),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub purchased_at_date: Option<Date>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub purchased_at_time: Option<Time>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub merchant: Option<Merchant>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub total: Money,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub articles: Vec<ArticleConfirmation>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:96:1
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub struct ArticleConfirmation {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:97:5
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub resolution: ArticleResolution,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:98:5
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub unit_price: Money,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub quantity: Quantity,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub total: Money,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:104:1
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub enum ArticleResolution {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:105:5
[INFO] [stdout]     |
[INFO] [stdout] 105 |     Existing(ItemId),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 |     New { description: String, r#type: String },
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:106:11
[INFO] [stdout]     |
[INFO] [stdout] 106 |     New { description: String, r#type: String },
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:106:32
[INFO] [stdout]     |
[INFO] [stdout] 106 |     New { description: String, r#type: String },
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:119:5
[INFO] [stdout]     |
[INFO] [stdout] 119 | /     pub fn new(
[INFO] [stdout] 120 | |         format: ImageFormat,
[INFO] [stdout] 121 | |         bytes: Vec<u8>,
[INFO] [stdout] 122 | |     ) -> Self {
[INFO] [stdout]     | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub fn format(&self) -> ImageFormat {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:130:5
[INFO] [stdout]     |
[INFO] [stdout] 130 |     pub fn bytes(&self) -> &[u8] {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:135:5
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub fn decode(&self) -> InventoryResult<image::DynamicImage> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:141:1
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub enum ImageFormat {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 142 |     Jpeg,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:143:5
[INFO] [stdout]     |
[INFO] [stdout] 143 |     Png,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:144:5
[INFO] [stdout]     |
[INFO] [stdout] 144 |     WebP,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:148:5
[INFO] [stdout]     |
[INFO] [stdout] 148 |     pub fn media_type(self) -> &'static str {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:156:5
[INFO] [stdout]     |
[INFO] [stdout] 156 |     pub fn from_media_type(media_type: &str) -> InventoryResult<Self> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:178:1
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub struct ReceiptHeader {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:189:1
[INFO] [stdout]     |
[INFO] [stdout] 189 | pub struct Merchant {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:190:5
[INFO] [stdout]     |
[INFO] [stdout] 190 |     pub name: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:191:5
[INFO] [stdout]     |
[INFO] [stdout] 191 |     pub address: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:195:5
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub fn purchased_at_date(&self) -> Option<Date> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:199:5
[INFO] [stdout]     |
[INFO] [stdout] 199 |     pub fn purchased_at_time(&self) -> Option<Time> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:203:5
[INFO] [stdout]     |
[INFO] [stdout] 203 |     pub fn total(&self) -> Money {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:207:5
[INFO] [stdout]     |
[INFO] [stdout] 207 |     pub fn merchant(&self) -> Option<&Merchant> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:211:5
[INFO] [stdout]     |
[INFO] [stdout] 211 |     pub fn additional_fields(&self) -> &HashMap<String, String> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:215:5
[INFO] [stdout]     |
[INFO] [stdout] 215 |     pub fn raw_ocr(&self) -> &str {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:221:1
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct ReceiptArticle {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:229:5
[INFO] [stdout]     |
[INFO] [stdout] 229 |     pub fn item(&self) -> ItemId {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:233:5
[INFO] [stdout]     |
[INFO] [stdout] 233 |     pub fn unit_price(&self) -> Money {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:237:5
[INFO] [stdout]     |
[INFO] [stdout] 237 |     pub fn quantity(&self) -> Quantity {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:241:5
[INFO] [stdout]     |
[INFO] [stdout] 241 |     pub fn total(&self) -> Money {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:247:1
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub enum Quantity {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:248:5
[INFO] [stdout]     |
[INFO] [stdout] 248 |     Count(u64),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:249:5
[INFO] [stdout]     |
[INFO] [stdout] 249 |     Weight(u64),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:253:1
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub struct ReceiptId(Uuid);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub mod anthropic;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub mod llama_cpp;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct ExtractedReceipt {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub header: ReceiptHeader,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub articles: Vec<ExtractedArticle>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub description: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub unit_price: Money,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub quantity: Quantity,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub total: Money,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub trait ReceiptExtractor {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | /     fn extract_image(
[INFO] [stdout] 41 | |         &mut self,
[INFO] [stdout] 42 | |         image: &DynamicImage,
[INFO] [stdout] 43 | |     ) -> impl Future<Output = InventoryResult<ExtractedReceipt>> + Send;
[INFO] [stdout]    | |________________________________________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> inventory/src/receipt/extractors/anthropic.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct AnthropicExtractor {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> inventory/src/receipt/extractors/anthropic.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(api_key: String) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> inventory/src/receipt/extractors/llama_cpp.rs:174:5
[INFO] [stdout]     |
[INFO] [stdout] 174 |     pub fn new(endpoint: String) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> inventory/src/warehouse/mod.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub mod store;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> inventory/src/warehouse/mod.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct Warehouse<S> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> inventory/src/warehouse/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | /     pub fn new(
[INFO] [stdout] 44 | |         store: S,
[INFO] [stdout] 45 | |         owner: WarehouseOwner,
[INFO] [stdout] 46 | |     ) -> Self {
[INFO] [stdout]    | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/mod.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | /     pub async fn create_item(
[INFO] [stdout] 51 | |         &mut self,
[INFO] [stdout] 52 | |         description: String,
[INFO] [stdout] 53 | |         r#type: String,
[INFO] [stdout] 54 | |     ) -> InventoryResult<Item> {
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/mod.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | /     pub async fn rename_item(
[INFO] [stdout] 70 | |         &mut self,
[INFO] [stdout] 71 | |         id: ItemId,
[INFO] [stdout] 72 | |         description: String,
[INFO] [stdout] 73 | |     ) -> InventoryResult<Item> {
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/mod.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 80 | /     pub async fn set_item_category(
[INFO] [stdout] 81 | |         &mut self,
[INFO] [stdout] 82 | |         id: ItemId,
[INFO] [stdout] 83 | |         r#type: String,
[INFO] [stdout] 84 | |     ) -> InventoryResult<Item> {
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/warehouse/mod.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 | /     pub async fn discard_draft(
[INFO] [stdout] 171 | |         &mut self,
[INFO] [stdout] 172 | |         id: ReceiptId,
[INFO] [stdout] 173 | |     ) -> InventoryResult {
[INFO] [stdout]     | |________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> inventory/src/warehouse/mod.rs:208:1
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub struct WarehouseOwner(Uuid);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum WarehouseStoreError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     DuplicateItemId(ItemId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     NoSuchItem(ItemId),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     DuplicateReceiptId(ReceiptId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     NoSuchReceipt(ReceiptId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     DuplicateReceiptDraftId(ReceiptId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     NoSuchReceiptDraft(ReceiptId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     DuplicateReceiptImage(ReceiptId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     NoSuchReceiptImage(ReceiptId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     Domain(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     Backend(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a type alias
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:46:1
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub type WarehouseStoreResult<T = ()> = Result<T, WarehouseStoreError>;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub trait WarehouseStore {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 49 |     async fn insert_item(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout]    = note: `#[warn(async_fn_in_trait)]` on by default
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 49 ~     fn insert_item(
[INFO] [stdout] 50 |         &mut self,
[INFO] [stdout] 51 |         owner: WarehouseOwner,
[INFO] [stdout] 52 |         item: Item,
[INFO] [stdout] 53 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | /     async fn insert_item(
[INFO] [stdout] 50 | |         &mut self,
[INFO] [stdout] 51 | |         owner: WarehouseOwner,
[INFO] [stdout] 52 | |         item: Item,
[INFO] [stdout] 53 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |     async fn get_item(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 55 ~     fn get_item(
[INFO] [stdout] 56 |         &mut self,
[INFO] [stdout] 57 |         owner: WarehouseOwner,
[INFO] [stdout] 58 |         id: ItemId,
[INFO] [stdout] 59 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult<Item>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | /     async fn get_item(
[INFO] [stdout] 56 | |         &mut self,
[INFO] [stdout] 57 | |         owner: WarehouseOwner,
[INFO] [stdout] 58 | |         id: ItemId,
[INFO] [stdout] 59 | |     ) -> WarehouseStoreResult<Item>;
[INFO] [stdout]    | |____________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     async fn list_items(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 61 ~     fn list_items(
[INFO] [stdout] 62 |         &mut self,
[INFO] [stdout] 63 |         owner: WarehouseOwner,
[INFO] [stdout] 64 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult<Vec<Item>>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | /     async fn list_items(
[INFO] [stdout] 62 | |         &mut self,
[INFO] [stdout] 63 | |         owner: WarehouseOwner,
[INFO] [stdout] 64 | |     ) -> WarehouseStoreResult<Vec<Item>>;
[INFO] [stdout]    | |_________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 |     async fn update_item(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 66 ~     fn update_item(
[INFO] [stdout] 67 |         &mut self,
[INFO] [stdout] 68 |         owner: WarehouseOwner,
[INFO] [stdout] 69 |         item: Item,
[INFO] [stdout] 70 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | /     async fn update_item(
[INFO] [stdout] 67 | |         &mut self,
[INFO] [stdout] 68 | |         owner: WarehouseOwner,
[INFO] [stdout] 69 | |         item: Item,
[INFO] [stdout] 70 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 |     async fn insert_receipt(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 72 ~     fn insert_receipt(
[INFO] [stdout] 73 |         &mut self,
[INFO] [stdout] 74 |         owner: WarehouseOwner,
[INFO] [stdout] 75 |         receipt: Receipt,
[INFO] [stdout] 76 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | /     async fn insert_receipt(
[INFO] [stdout] 73 | |         &mut self,
[INFO] [stdout] 74 | |         owner: WarehouseOwner,
[INFO] [stdout] 75 | |         receipt: Receipt,
[INFO] [stdout] 76 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 |     async fn get_receipt(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 78 ~     fn get_receipt(
[INFO] [stdout] 79 |         &mut self,
[INFO] [stdout] 80 |         owner: WarehouseOwner,
[INFO] [stdout] 81 |         id: ReceiptId,
[INFO] [stdout] 82 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult<Receipt>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | /     async fn get_receipt(
[INFO] [stdout] 79 | |         &mut self,
[INFO] [stdout] 80 | |         owner: WarehouseOwner,
[INFO] [stdout] 81 | |         id: ReceiptId,
[INFO] [stdout] 82 | |     ) -> WarehouseStoreResult<Receipt>;
[INFO] [stdout]    | |_______________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 84 |     async fn list_receipts(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 84 ~     fn list_receipts(
[INFO] [stdout] 85 |         &mut self,
[INFO] [stdout] 86 |         owner: WarehouseOwner,
[INFO] [stdout] 87 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult<Vec<Receipt>>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 84 | /     async fn list_receipts(
[INFO] [stdout] 85 | |         &mut self,
[INFO] [stdout] 86 | |         owner: WarehouseOwner,
[INFO] [stdout] 87 | |     ) -> WarehouseStoreResult<Vec<Receipt>>;
[INFO] [stdout]    | |____________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 |     async fn insert_receipt_draft(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 89 ~     fn insert_receipt_draft(
[INFO] [stdout] 90 |         &mut self,
[INFO] [stdout] 91 |         owner: WarehouseOwner,
[INFO] [stdout] 92 |         draft: ReceiptDraft,
[INFO] [stdout] 93 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 | /     async fn insert_receipt_draft(
[INFO] [stdout] 90 | |         &mut self,
[INFO] [stdout] 91 | |         owner: WarehouseOwner,
[INFO] [stdout] 92 | |         draft: ReceiptDraft,
[INFO] [stdout] 93 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 95 |     async fn get_receipt_draft(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 95 ~     fn get_receipt_draft(
[INFO] [stdout] 96 |         &mut self,
[INFO] [stdout] 97 |         owner: WarehouseOwner,
[INFO] [stdout] 98 |         id: ReceiptId,
[INFO] [stdout] 99 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult<ReceiptDraft>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 95 | /     async fn get_receipt_draft(
[INFO] [stdout] 96 | |         &mut self,
[INFO] [stdout] 97 | |         owner: WarehouseOwner,
[INFO] [stdout] 98 | |         id: ReceiptId,
[INFO] [stdout] 99 | |     ) -> WarehouseStoreResult<ReceiptDraft>;
[INFO] [stdout]    | |____________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout] 101 |     async fn list_receipt_drafts(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 101 ~     fn list_receipt_drafts(
[INFO] [stdout] 102 |         &mut self,
[INFO] [stdout] 103 |         owner: WarehouseOwner,
[INFO] [stdout] 104 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult<Vec<ReceiptDraft>>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout] 101 | /     async fn list_receipt_drafts(
[INFO] [stdout] 102 | |         &mut self,
[INFO] [stdout] 103 | |         owner: WarehouseOwner,
[INFO] [stdout] 104 | |     ) -> WarehouseStoreResult<Vec<ReceiptDraft>>;
[INFO] [stdout]     | |_________________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 |     async fn delete_receipt_draft(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 106 ~     fn delete_receipt_draft(
[INFO] [stdout] 107 |         &mut self,
[INFO] [stdout] 108 |         owner: WarehouseOwner,
[INFO] [stdout] 109 |         id: ReceiptId,
[INFO] [stdout] 110 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 | /     async fn delete_receipt_draft(
[INFO] [stdout] 107 | |         &mut self,
[INFO] [stdout] 108 | |         owner: WarehouseOwner,
[INFO] [stdout] 109 | |         id: ReceiptId,
[INFO] [stdout] 110 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:112:5
[INFO] [stdout]     |
[INFO] [stdout] 112 |     async fn insert_receipt_image(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 112 ~     fn insert_receipt_image(
[INFO] [stdout] 113 |         &mut self,
[INFO] [stdout] ...
[INFO] [stdout] 116 |         image: ReceiptImage,
[INFO] [stdout] 117 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:112:5
[INFO] [stdout]     |
[INFO] [stdout] 112 | /     async fn insert_receipt_image(
[INFO] [stdout] 113 | |         &mut self,
[INFO] [stdout] 114 | |         owner: WarehouseOwner,
[INFO] [stdout] 115 | |         receipt: ReceiptId,
[INFO] [stdout] 116 | |         image: ReceiptImage,
[INFO] [stdout] 117 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:119:5
[INFO] [stdout]     |
[INFO] [stdout] 119 |     async fn get_receipt_image(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 119 ~     fn get_receipt_image(
[INFO] [stdout] 120 |         &mut self,
[INFO] [stdout] 121 |         owner: WarehouseOwner,
[INFO] [stdout] 122 |         receipt: ReceiptId,
[INFO] [stdout] 123 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult<ReceiptImage>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:119:5
[INFO] [stdout]     |
[INFO] [stdout] 119 | /     async fn get_receipt_image(
[INFO] [stdout] 120 | |         &mut self,
[INFO] [stdout] 121 | |         owner: WarehouseOwner,
[INFO] [stdout] 122 | |         receipt: ReceiptId,
[INFO] [stdout] 123 | |     ) -> WarehouseStoreResult<ReceiptImage>;
[INFO] [stdout]     | |____________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 125 |     async fn delete_receipt_image(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 125 ~     fn delete_receipt_image(
[INFO] [stdout] 126 |         &mut self,
[INFO] [stdout] 127 |         owner: WarehouseOwner,
[INFO] [stdout] 128 |         receipt: ReceiptId,
[INFO] [stdout] 129 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | /     async fn delete_receipt_image(
[INFO] [stdout] 126 | |         &mut self,
[INFO] [stdout] 127 | |         owner: WarehouseOwner,
[INFO] [stdout] 128 | |         receipt: ReceiptId,
[INFO] [stdout] 129 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:131:5
[INFO] [stdout]     |
[INFO] [stdout] 131 |     async fn purge(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 131 ~     fn purge(
[INFO] [stdout] 132 |         &mut self,
[INFO] [stdout] 133 |         owner: WarehouseOwner,
[INFO] [stdout] 134 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:131:5
[INFO] [stdout]     |
[INFO] [stdout] 131 | /     async fn purge(
[INFO] [stdout] 132 | |         &mut self,
[INFO] [stdout] 133 | |         owner: WarehouseOwner,
[INFO] [stdout] 134 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:259:1
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub struct InMemoryWarehouseStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `api_key` is never read
[INFO] [stdout]  --> inventory/src/receipt/extractors/anthropic.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct AnthropicExtractor {
[INFO] [stdout]   |            ------------------ field in this struct
[INFO] [stdout] 7 |     api_key: String,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for the crate
[INFO] [stdout]  --> inventory/src/lib.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | / pub mod errors;
[INFO] [stdout] 2 | | pub mod item;
[INFO] [stdout] 3 | | pub mod receipt;
[INFO] [stdout] 4 | | pub mod warehouse;
[INFO] [stdout]   | |__________________^
[INFO] [stdout]   |
[INFO] [stdout]   = note: requested on the command line with `-W missing-docs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> inventory/src/lib.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub mod errors;
[INFO] [stdout]   | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> inventory/src/lib.rs:2:1
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub mod item;
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> inventory/src/lib.rs:3:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub mod receipt;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]  --> inventory/src/lib.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub mod warehouse;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]  --> inventory/src/errors.rs:4:1
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum InventoryError {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]  --> inventory/src/errors.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     Image(#[from] image::ImageError),
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]  --> inventory/src/errors.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     MediaWrite(#[from] std::io::Error),
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     Request(#[from] reqwest::Error),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     EmptyResponse,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     MalformedReceipt(#[from] serde_json::Error),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 |     UnsupportedCurrency(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     UnsupportedImageFormat(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     MalformedAmount(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     MalformedCivil { kind: &'static str, value: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/errors.rs:24:22
[INFO] [stdout]    |
[INFO] [stdout] 24 |     MalformedCivil { kind: &'static str, value: String },
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/errors.rs:24:42
[INFO] [stdout]    |
[INFO] [stdout] 24 |     MalformedCivil { kind: &'static str, value: String },
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     MissingQuantity(&'static str),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     EmptyReceipt,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     ZeroQuantity,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     DifferentCurrencies,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/errors.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     WarehouseStoreError(#[from] WarehouseStoreError),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a type alias
[INFO] [stdout]   --> inventory/src/errors.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub type InventoryResult<T = ()> = Result<T, InventoryError>;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> inventory/src/item/mod.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub mod display;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> inventory/src/item/mod.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Item {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> inventory/src/item/mod.rs:25:1
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct ItemId(Uuid);
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/item/mod.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub fn id(&self) -> ItemId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/item/mod.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/item/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn description(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/item/mod.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fn r#type(&self) -> &str {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub mod extractors;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Receipt {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fn id(&self) -> ReceiptId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn header(&self) -> &ReceiptHeader {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 52 |     pub fn articles(&self) -> &[ReceiptArticle] {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn id(&self) -> ReceiptId {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub fn created_at(&self) -> Timestamp {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn extracted(&self) -> &ExtractedReceipt {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:80:1
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub enum ReceiptState {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     Draft(ReceiptDraft),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     Confirmed(Receipt),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 88 |     pub purchased_at_date: Option<Date>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub purchased_at_time: Option<Time>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub merchant: Option<Merchant>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub total: Money,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 |     pub articles: Vec<ArticleConfirmation>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:96:1
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub struct ArticleConfirmation {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:97:5
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub resolution: ArticleResolution,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:98:5
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub unit_price: Money,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/mod.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub quantity: Quantity,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:100:5
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub total: Money,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:104:1
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub enum ArticleResolution {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:105:5
[INFO] [stdout]     |
[INFO] [stdout] 105 |     Existing(ItemId),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 |     New { description: String, r#type: String },
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:106:11
[INFO] [stdout]     |
[INFO] [stdout] 106 |     New { description: String, r#type: String },
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:106:32
[INFO] [stdout]     |
[INFO] [stdout] 106 |     New { description: String, r#type: String },
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:119:5
[INFO] [stdout]     |
[INFO] [stdout] 119 | /     pub fn new(
[INFO] [stdout] 120 | |         format: ImageFormat,
[INFO] [stdout] 121 | |         bytes: Vec<u8>,
[INFO] [stdout] 122 | |     ) -> Self {
[INFO] [stdout]     | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:126:5
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub fn format(&self) -> ImageFormat {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:130:5
[INFO] [stdout]     |
[INFO] [stdout] 130 |     pub fn bytes(&self) -> &[u8] {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:135:5
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub fn decode(&self) -> InventoryResult<image::DynamicImage> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:141:1
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub enum ImageFormat {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 142 |     Jpeg,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:143:5
[INFO] [stdout]     |
[INFO] [stdout] 143 |     Png,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:144:5
[INFO] [stdout]     |
[INFO] [stdout] 144 |     WebP,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:148:5
[INFO] [stdout]     |
[INFO] [stdout] 148 |     pub fn media_type(self) -> &'static str {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:156:5
[INFO] [stdout]     |
[INFO] [stdout] 156 |     pub fn from_media_type(media_type: &str) -> InventoryResult<Self> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:178:1
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub struct ReceiptHeader {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:189:1
[INFO] [stdout]     |
[INFO] [stdout] 189 | pub struct Merchant {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:190:5
[INFO] [stdout]     |
[INFO] [stdout] 190 |     pub name: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:191:5
[INFO] [stdout]     |
[INFO] [stdout] 191 |     pub address: String,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:195:5
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub fn purchased_at_date(&self) -> Option<Date> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:199:5
[INFO] [stdout]     |
[INFO] [stdout] 199 |     pub fn purchased_at_time(&self) -> Option<Time> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:203:5
[INFO] [stdout]     |
[INFO] [stdout] 203 |     pub fn total(&self) -> Money {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:207:5
[INFO] [stdout]     |
[INFO] [stdout] 207 |     pub fn merchant(&self) -> Option<&Merchant> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:211:5
[INFO] [stdout]     |
[INFO] [stdout] 211 |     pub fn additional_fields(&self) -> &HashMap<String, String> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:215:5
[INFO] [stdout]     |
[INFO] [stdout] 215 |     pub fn raw_ocr(&self) -> &str {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:221:1
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct ReceiptArticle {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:229:5
[INFO] [stdout]     |
[INFO] [stdout] 229 |     pub fn item(&self) -> ItemId {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:233:5
[INFO] [stdout]     |
[INFO] [stdout] 233 |     pub fn unit_price(&self) -> Money {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:237:5
[INFO] [stdout]     |
[INFO] [stdout] 237 |     pub fn quantity(&self) -> Quantity {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:241:5
[INFO] [stdout]     |
[INFO] [stdout] 241 |     pub fn total(&self) -> Money {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:247:1
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub enum Quantity {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:248:5
[INFO] [stdout]     |
[INFO] [stdout] 248 |     Count(u64),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:249:5
[INFO] [stdout]     |
[INFO] [stdout] 249 |     Weight(u64),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> inventory/src/receipt/mod.rs:253:1
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub struct ReceiptId(Uuid);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:17:1
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub mod anthropic;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub mod llama_cpp;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:24:1
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct ExtractedReceipt {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub header: ReceiptHeader,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub articles: Vec<ExtractedArticle>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub description: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub unit_price: Money,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub quantity: Quantity,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     pub total: Money,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub trait ReceiptExtractor {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/receipt/extractors/mod.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | /     fn extract_image(
[INFO] [stdout] 41 | |         &mut self,
[INFO] [stdout] 42 | |         image: &DynamicImage,
[INFO] [stdout] 43 | |     ) -> impl Future<Output = InventoryResult<ExtractedReceipt>> + Send;
[INFO] [stdout]    | |________________________________________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]  --> inventory/src/receipt/extractors/anthropic.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct AnthropicExtractor {
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> inventory/src/receipt/extractors/anthropic.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(api_key: String) -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]    --> inventory/src/receipt/extractors/llama_cpp.rs:174:5
[INFO] [stdout]     |
[INFO] [stdout] 174 |     pub fn new(endpoint: String) -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a module
[INFO] [stdout]   --> inventory/src/warehouse/mod.rs:35:1
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub mod store;
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> inventory/src/warehouse/mod.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct Warehouse<S> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an associated function
[INFO] [stdout]   --> inventory/src/warehouse/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | /     pub fn new(
[INFO] [stdout] 44 | |         store: S,
[INFO] [stdout] 45 | |         owner: WarehouseOwner,
[INFO] [stdout] 46 | |     ) -> Self {
[INFO] [stdout]    | |_____________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/mod.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | /     pub async fn create_item(
[INFO] [stdout] 51 | |         &mut self,
[INFO] [stdout] 52 | |         description: String,
[INFO] [stdout] 53 | |         r#type: String,
[INFO] [stdout] 54 | |     ) -> InventoryResult<Item> {
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/mod.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 69 | /     pub async fn rename_item(
[INFO] [stdout] 70 | |         &mut self,
[INFO] [stdout] 71 | |         id: ItemId,
[INFO] [stdout] 72 | |         description: String,
[INFO] [stdout] 73 | |     ) -> InventoryResult<Item> {
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/mod.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 80 | /     pub async fn set_item_category(
[INFO] [stdout] 81 | |         &mut self,
[INFO] [stdout] 82 | |         id: ItemId,
[INFO] [stdout] 83 | |         r#type: String,
[INFO] [stdout] 84 | |     ) -> InventoryResult<Item> {
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/warehouse/mod.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 | /     pub async fn discard_draft(
[INFO] [stdout] 171 | |         &mut self,
[INFO] [stdout] 172 | |         id: ReceiptId,
[INFO] [stdout] 173 | |     ) -> InventoryResult {
[INFO] [stdout]     | |________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> inventory/src/warehouse/mod.rs:208:1
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub struct WarehouseOwner(Uuid);
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for an enum
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum WarehouseStoreError {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 |     DuplicateItemId(ItemId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     NoSuchItem(ItemId),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     DuplicateReceiptId(ReceiptId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     NoSuchReceipt(ReceiptId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     DuplicateReceiptDraftId(ReceiptId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     NoSuchReceiptDraft(ReceiptId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 |     DuplicateReceiptImage(ReceiptId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 |     NoSuchReceiptImage(ReceiptId),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     Domain(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a variant
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 |     Backend(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a type alias
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:46:1
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub type WarehouseStoreResult<T = ()> = Result<T, WarehouseStoreError>;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a trait
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub trait WarehouseStore {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 49 |     async fn insert_item(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout]    = note: `#[warn(async_fn_in_trait)]` on by default
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 49 ~     fn insert_item(
[INFO] [stdout] 50 |         &mut self,
[INFO] [stdout] 51 |         owner: WarehouseOwner,
[INFO] [stdout] 52 |         item: Item,
[INFO] [stdout] 53 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 49 | /     async fn insert_item(
[INFO] [stdout] 50 | |         &mut self,
[INFO] [stdout] 51 | |         owner: WarehouseOwner,
[INFO] [stdout] 52 | |         item: Item,
[INFO] [stdout] 53 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 |     async fn get_item(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 55 ~     fn get_item(
[INFO] [stdout] 56 |         &mut self,
[INFO] [stdout] 57 |         owner: WarehouseOwner,
[INFO] [stdout] 58 |         id: ItemId,
[INFO] [stdout] 59 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult<Item>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | /     async fn get_item(
[INFO] [stdout] 56 | |         &mut self,
[INFO] [stdout] 57 | |         owner: WarehouseOwner,
[INFO] [stdout] 58 | |         id: ItemId,
[INFO] [stdout] 59 | |     ) -> WarehouseStoreResult<Item>;
[INFO] [stdout]    | |____________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     async fn list_items(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 61 ~     fn list_items(
[INFO] [stdout] 62 |         &mut self,
[INFO] [stdout] 63 |         owner: WarehouseOwner,
[INFO] [stdout] 64 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult<Vec<Item>>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | /     async fn list_items(
[INFO] [stdout] 62 | |         &mut self,
[INFO] [stdout] 63 | |         owner: WarehouseOwner,
[INFO] [stdout] 64 | |     ) -> WarehouseStoreResult<Vec<Item>>;
[INFO] [stdout]    | |_________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 |     async fn update_item(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 66 ~     fn update_item(
[INFO] [stdout] 67 |         &mut self,
[INFO] [stdout] 68 |         owner: WarehouseOwner,
[INFO] [stdout] 69 |         item: Item,
[INFO] [stdout] 70 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | /     async fn update_item(
[INFO] [stdout] 67 | |         &mut self,
[INFO] [stdout] 68 | |         owner: WarehouseOwner,
[INFO] [stdout] 69 | |         item: Item,
[INFO] [stdout] 70 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 |     async fn insert_receipt(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 72 ~     fn insert_receipt(
[INFO] [stdout] 73 |         &mut self,
[INFO] [stdout] 74 |         owner: WarehouseOwner,
[INFO] [stdout] 75 |         receipt: Receipt,
[INFO] [stdout] 76 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | /     async fn insert_receipt(
[INFO] [stdout] 73 | |         &mut self,
[INFO] [stdout] 74 | |         owner: WarehouseOwner,
[INFO] [stdout] 75 | |         receipt: Receipt,
[INFO] [stdout] 76 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 |     async fn get_receipt(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 78 ~     fn get_receipt(
[INFO] [stdout] 79 |         &mut self,
[INFO] [stdout] 80 |         owner: WarehouseOwner,
[INFO] [stdout] 81 |         id: ReceiptId,
[INFO] [stdout] 82 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult<Receipt>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | /     async fn get_receipt(
[INFO] [stdout] 79 | |         &mut self,
[INFO] [stdout] 80 | |         owner: WarehouseOwner,
[INFO] [stdout] 81 | |         id: ReceiptId,
[INFO] [stdout] 82 | |     ) -> WarehouseStoreResult<Receipt>;
[INFO] [stdout]    | |_______________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 84 |     async fn list_receipts(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 84 ~     fn list_receipts(
[INFO] [stdout] 85 |         &mut self,
[INFO] [stdout] 86 |         owner: WarehouseOwner,
[INFO] [stdout] 87 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult<Vec<Receipt>>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 84 | /     async fn list_receipts(
[INFO] [stdout] 85 | |         &mut self,
[INFO] [stdout] 86 | |         owner: WarehouseOwner,
[INFO] [stdout] 87 | |     ) -> WarehouseStoreResult<Vec<Receipt>>;
[INFO] [stdout]    | |____________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 |     async fn insert_receipt_draft(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 89 ~     fn insert_receipt_draft(
[INFO] [stdout] 90 |         &mut self,
[INFO] [stdout] 91 |         owner: WarehouseOwner,
[INFO] [stdout] 92 |         draft: ReceiptDraft,
[INFO] [stdout] 93 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 | /     async fn insert_receipt_draft(
[INFO] [stdout] 90 | |         &mut self,
[INFO] [stdout] 91 | |         owner: WarehouseOwner,
[INFO] [stdout] 92 | |         draft: ReceiptDraft,
[INFO] [stdout] 93 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]    | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 95 |     async fn get_receipt_draft(
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]    |
[INFO] [stdout] 95 ~     fn get_receipt_draft(
[INFO] [stdout] 96 |         &mut self,
[INFO] [stdout] 97 |         owner: WarehouseOwner,
[INFO] [stdout] 98 |         id: ReceiptId,
[INFO] [stdout] 99 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult<ReceiptDraft>> + Send;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]   --> inventory/src/warehouse/store/mod.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 95 | /     async fn get_receipt_draft(
[INFO] [stdout] 96 | |         &mut self,
[INFO] [stdout] 97 | |         owner: WarehouseOwner,
[INFO] [stdout] 98 | |         id: ReceiptId,
[INFO] [stdout] 99 | |     ) -> WarehouseStoreResult<ReceiptDraft>;
[INFO] [stdout]    | |____________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout] 101 |     async fn list_receipt_drafts(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 101 ~     fn list_receipt_drafts(
[INFO] [stdout] 102 |         &mut self,
[INFO] [stdout] 103 |         owner: WarehouseOwner,
[INFO] [stdout] 104 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult<Vec<ReceiptDraft>>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:101:5
[INFO] [stdout]     |
[INFO] [stdout] 101 | /     async fn list_receipt_drafts(
[INFO] [stdout] 102 | |         &mut self,
[INFO] [stdout] 103 | |         owner: WarehouseOwner,
[INFO] [stdout] 104 | |     ) -> WarehouseStoreResult<Vec<ReceiptDraft>>;
[INFO] [stdout]     | |_________________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 |     async fn delete_receipt_draft(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 106 ~     fn delete_receipt_draft(
[INFO] [stdout] 107 |         &mut self,
[INFO] [stdout] 108 |         owner: WarehouseOwner,
[INFO] [stdout] 109 |         id: ReceiptId,
[INFO] [stdout] 110 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 | /     async fn delete_receipt_draft(
[INFO] [stdout] 107 | |         &mut self,
[INFO] [stdout] 108 | |         owner: WarehouseOwner,
[INFO] [stdout] 109 | |         id: ReceiptId,
[INFO] [stdout] 110 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:112:5
[INFO] [stdout]     |
[INFO] [stdout] 112 |     async fn insert_receipt_image(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 112 ~     fn insert_receipt_image(
[INFO] [stdout] 113 |         &mut self,
[INFO] [stdout] ...
[INFO] [stdout] 116 |         image: ReceiptImage,
[INFO] [stdout] 117 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:112:5
[INFO] [stdout]     |
[INFO] [stdout] 112 | /     async fn insert_receipt_image(
[INFO] [stdout] 113 | |         &mut self,
[INFO] [stdout] 114 | |         owner: WarehouseOwner,
[INFO] [stdout] 115 | |         receipt: ReceiptId,
[INFO] [stdout] 116 | |         image: ReceiptImage,
[INFO] [stdout] 117 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:119:5
[INFO] [stdout]     |
[INFO] [stdout] 119 |     async fn get_receipt_image(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 119 ~     fn get_receipt_image(
[INFO] [stdout] 120 |         &mut self,
[INFO] [stdout] 121 |         owner: WarehouseOwner,
[INFO] [stdout] 122 |         receipt: ReceiptId,
[INFO] [stdout] 123 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult<ReceiptImage>> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:119:5
[INFO] [stdout]     |
[INFO] [stdout] 119 | /     async fn get_receipt_image(
[INFO] [stdout] 120 | |         &mut self,
[INFO] [stdout] 121 | |         owner: WarehouseOwner,
[INFO] [stdout] 122 | |         receipt: ReceiptId,
[INFO] [stdout] 123 | |     ) -> WarehouseStoreResult<ReceiptImage>;
[INFO] [stdout]     | |____________________________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 125 |     async fn delete_receipt_image(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 125 ~     fn delete_receipt_image(
[INFO] [stdout] 126 |         &mut self,
[INFO] [stdout] 127 |         owner: WarehouseOwner,
[INFO] [stdout] 128 |         receipt: ReceiptId,
[INFO] [stdout] 129 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:125:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | /     async fn delete_receipt_image(
[INFO] [stdout] 126 | |         &mut self,
[INFO] [stdout] 127 | |         owner: WarehouseOwner,
[INFO] [stdout] 128 | |         receipt: ReceiptId,
[INFO] [stdout] 129 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of `async fn` in public traits is discouraged as auto trait bounds cannot be specified
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:131:5
[INFO] [stdout]     |
[INFO] [stdout] 131 |     async fn purge(
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: you can suppress this lint if you plan to use the trait only in your own code, or do not care about auto traits like `Send` on the `Future`
[INFO] [stdout] help: you can alternatively desugar to a normal `fn` that returns `impl Future` and add any desired bounds such as `Send`, but these cannot be relaxed without a breaking API change
[INFO] [stdout]     |
[INFO] [stdout] 131 ~     fn purge(
[INFO] [stdout] 132 |         &mut self,
[INFO] [stdout] 133 |         owner: WarehouseOwner,
[INFO] [stdout] 134 ~     ) -> impl std::future::Future<Output = WarehouseStoreResult> + Send;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a method
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:131:5
[INFO] [stdout]     |
[INFO] [stdout] 131 | /     async fn purge(
[INFO] [stdout] 132 | |         &mut self,
[INFO] [stdout] 133 | |         owner: WarehouseOwner,
[INFO] [stdout] 134 | |     ) -> WarehouseStoreResult;
[INFO] [stdout]     | |______________________________^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]    --> inventory/src/warehouse/store/mod.rs:259:1
[INFO] [stdout]     |
[INFO] [stdout] 259 | pub struct InMemoryWarehouseStore {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for the crate
[INFO] [stdout]   --> inventory/examples/casa-del-mondo.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 | / use std::io::Cursor;
[INFO] [stdout]  2 | | use std::path::PathBuf;
[INFO] [stdout]  3 | |
[INFO] [stdout]  4 | | use image::ImageReader;
[INFO] [stdout] ...  |
[INFO] [stdout] 76 | |     eprintln!("receipt = {:#?}", receipt);
[INFO] [stdout] 77 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-W missing-docs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking gloo-utils v0.2.0
[INFO] [stderr]     Checking wasm-streams v0.4.2
[INFO] [stderr]     Checking dioxus-asset-resolver v0.7.10
[INFO] [stderr]     Checking gloo-net v0.6.0
[INFO] [stderr]     Checking dioxus-fullstack v0.7.10
[INFO] [stderr]     Checking dioxus v0.7.10
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/purchase/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub receipt: ReceiptId,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-W missing-docs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/purchase/mod.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub transaction: TransactionId,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub user: User,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub household: Household,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 60 |     pub role: Role,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub credentialed: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub identities: Vec<IdentityKind>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub google_email: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> web/src/api/user/mod.rs:67:1
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct HouseholdMember {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 68 |     pub user: UserId,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub name: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub role: Role,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/purchase/mod.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub receipt: ReceiptId,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-W missing-docs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/purchase/mod.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub transaction: TransactionId,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub user: User,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub household: Household,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 60 |     pub role: Role,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub credentialed: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 62 |     pub identities: Vec<IdentityKind>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     pub google_email: Option<String>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct
[INFO] [stdout]   --> web/src/api/user/mod.rs:67:1
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct HouseholdMember {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 68 |     pub user: UserId,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub name: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: missing documentation for a struct field
[INFO] [stdout]   --> web/src/api/user/mod.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 |     pub role: Role,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `fluent-typed`
[INFO] [stderr]   --> web/Cargo.toml:17:1
[INFO] [stderr]    |
[INFO] [stderr] 17 | fluent-typed = { version = "0.9", default-features = false, features = ["langneg"] }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `fluent-typed`
[INFO] [stderr] warning: `zeni-web` (manifest) generated 1 warning
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 38s
[INFO] running `Command { std: "docker" "inspect" "9123d6a100f2579df1d0bcee1cc1ee6ce82f5f893de28c313bd5af88279e2dca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9123d6a100f2579df1d0bcee1cc1ee6ce82f5f893de28c313bd5af88279e2dca", kill_on_drop: false }`
[INFO] [stdout] 9123d6a100f2579df1d0bcee1cc1ee6ce82f5f893de28c313bd5af88279e2dca
