[INFO] fetching crate bijux-gnss-signal 0.1.0...
[INFO] documenting bijux-gnss-signal-0.1.0 against da3f5c31e5535b3dc210067de660a45784ae1e9c for pr-162169
[INFO] extracting crate bijux-gnss-signal 0.1.0 into /workspace/builds/worker-3-tc2/source
[INFO] started tweaking crates.io crate bijux-gnss-signal 0.1.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate bijux-gnss-signal 0.1.0
[INFO] tweaked toml for crates.io crate bijux-gnss-signal 0.1.0 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate bijux-gnss-signal 0.1.0 on toolchain da3f5c31e5535b3dc210067de660a45784ae1e9c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate bijux-gnss-signal 0.1.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] 58336545defe4c75c7e4a1054cc0908fd8cfb5da0201bb9be79ad34ec7c234a1
[INFO] running `Command { std: "docker" "start" "58336545defe4c75c7e4a1054cc0908fd8cfb5da0201bb9be79ad34ec7c234a1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "58336545defe4c75c7e4a1054cc0908fd8cfb5da0201bb9be79ad34ec7c234a1", 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" "58336545defe4c75c7e4a1054cc0908fd8cfb5da0201bb9be79ad34ec7c234a1" "/opt/rustwide/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "58336545defe4c75c7e4a1054cc0908fd8cfb5da0201bb9be79ad34ec7c234a1", 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" "58336545defe4c75c7e4a1054cc0908fd8cfb5da0201bb9be79ad34ec7c234a1" "/opt/rustwide/cargo-home/bin/cargo" "+da3f5c31e5535b3dc210067de660a45784ae1e9c" "doc" "--frozen" "--no-deps" "--document-private-items" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling zmij v1.0.19
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]     Checking strength_reduce v0.2.4
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling syn v3.0.0
[INFO] [stderr]     Checking transpose v0.2.3
[INFO] [stderr]     Checking primal-check v0.3.4
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]    Compiling serde_derive_internals v0.29.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling ref-cast-impl v1.0.25
[INFO] [stderr]    Compiling schemars_derive v1.2.1
[INFO] [stderr]     Checking ref-cast v1.0.25
[INFO] [stderr]     Checking thiserror v2.0.19
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking schemars v1.2.1
[INFO] [stderr]     Checking rustfft v6.4.1
[INFO] [stderr]     Checking bijux-gnss-core v0.1.0
[INFO] [stderr]  Documenting bijux-gnss-signal v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/codes/beidou_b1i.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | / pub fn beidou_b1i_code_assignment(
[INFO] [stdout] 71 | |     prn: u8,
[INFO] [stdout] 72 | | ) -> Result<&'static BeidouB1iCodeAssignment, SignalError> {
[INFO] [stdout] 73 | |     prn_index(prn).map(|index| &BEIDOU_B1I_CODE_ASSIGNMENTS[index])
[INFO] [stdout] 74 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Spreading code generators.`
[INFO] [stdout]    = help: ends near `Return the published BeiDou B1I phase assignment for one PRN.`
[INFO] [stdout]    = note: `#[deny(rustdoc::unportable_markdown)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/codes/beidou_b1i.rs:70:1
[INFO] [stdout]    |
[INFO] [stdout] 70 | / pub fn beidou_b1i_code_assignment(
[INFO] [stdout] 71 | |     prn: u8,
[INFO] [stdout] 72 | | ) -> Result<&'static BeidouB1iCodeAssignment, SignalError> {
[INFO] [stdout] 73 | |     prn_index(prn).map(|index| &BEIDOU_B1I_CODE_ASSIGNMENTS[index])
[INFO] [stdout] 74 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Return the published BeiDou B1I phase assignment for one PRN.`
[INFO] [stdout]    = help: ends near `Return the published BeiDou B1I phase assignment for one PRN.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/codes/beidou_b1i.rs:77:1
[INFO] [stdout]    |
[INFO] [stdout] 77 | / pub fn beidou_b1i_code_assignments() -> &'static [BeidouB1iCodeAssignment; 37] {
[INFO] [stdout] 78 | |     &BEIDOU_B1I_CODE_ASSIGNMENTS
[INFO] [stdout] 79 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Spreading code generators.`
[INFO] [stdout]    = help: ends near `Return the published BeiDou B1I phase assignments for PRNs 1 through 37.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/codes/beidou_b1i.rs:77:1
[INFO] [stdout]    |
[INFO] [stdout] 77 | / pub fn beidou_b1i_code_assignments() -> &'static [BeidouB1iCodeAssignment; 37] {
[INFO] [stdout] 78 | |     &BEIDOU_B1I_CODE_ASSIGNMENTS
[INFO] [stdout] 79 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Return the published BeiDou B1I phase assignments for PRNs 1 through 37.`
[INFO] [stdout]    = help: ends near `Return the published BeiDou B1I phase assignments for PRNs 1 through 37.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/codes/beidou_b1i.rs:84:1
[INFO] [stdout]     |
[INFO] [stdout]  84 | / pub fn generate_beidou_b1i_code(prn: u8) -> Result<Vec<i8>, SignalError> {
[INFO] [stdout]  85 | |     let (tap1, tap2) = beidou_b1i_code_assignment(prn)?.zero_based_g2_taps();
[INFO] [stdout]  86 | |     let mut g1 = [0_i8, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0];
[INFO] [stdout]  87 | |     let mut g2 = [0_i8, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0];
[INFO] [stdout] ...   |
[INFO] [stdout] 101 | |     Ok(code)
[INFO] [stdout] 102 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Spreading code generators.`
[INFO] [stdout]     = help: ends near `Generate one full-period BeiDou B1I ranging code for a given PRN.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/codes/beidou_b1i.rs:84:1
[INFO] [stdout]     |
[INFO] [stdout]  84 | / pub fn generate_beidou_b1i_code(prn: u8) -> Result<Vec<i8>, SignalError> {
[INFO] [stdout]  85 | |     let (tap1, tap2) = beidou_b1i_code_assignment(prn)?.zero_based_g2_taps();
[INFO] [stdout]  86 | |     let mut g1 = [0_i8, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0];
[INFO] [stdout]  87 | |     let mut g2 = [0_i8, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0];
[INFO] [stdout] ...   |
[INFO] [stdout] 101 | |     Ok(code)
[INFO] [stdout] 102 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Generate one full-period BeiDou B1I ranging code for a given PRN.`
[INFO] [stdout]     = help: ends near `Generate one full-period BeiDou B1I ranging code for a given PRN.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/codes/beidou_b1i.rs:106:1
[INFO] [stdout]     |
[INFO] [stdout] 106 | / pub fn generate_beidou_b1i_code_chips(prn: u8, chip_count: usize) -> Result<Vec<i8>, SignalError> {
[INFO] [stdout] 107 | |     let period = generate_beidou_b1i_code(prn)?;
[INFO] [stdout] 108 | |     let mut code = Vec::with_capacity(chip_count);
[INFO] [stdout] 109 | |     while code.len() < chip_count {
[INFO] [stdout] ...   |
[INFO] [stdout] 113 | |     Ok(code)
[INFO] [stdout] 114 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Spreading code generators.`
[INFO] [stdout]     = help: ends near `published 2046-chip truncated period.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/codes/beidou_b1i.rs:106:1
[INFO] [stdout]     |
[INFO] [stdout] 106 | / pub fn generate_beidou_b1i_code_chips(prn: u8, chip_count: usize) -> Result<Vec<i8>, SignalError> {
[INFO] [stdout] 107 | |     let period = generate_beidou_b1i_code(prn)?;
[INFO] [stdout] 108 | |     let mut code = Vec::with_capacity(chip_count);
[INFO] [stdout] 109 | |     while code.len() < chip_count {
[INFO] [stdout] ...   |
[INFO] [stdout] 113 | |     Ok(code)
[INFO] [stdout] 114 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Generate a BeiDou B1I ranging-code sequence of arbitrary length by repeating the`
[INFO] [stdout]     = help: ends near `Generate a BeiDou B1I ranging-code sequence of arbitrary length by repeating the`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/codes/beidou_b1i.rs:117:1
[INFO] [stdout]     |
[INFO] [stdout] 117 | / pub fn sample_beidou_b1i_code(
[INFO] [stdout] 118 | |     prn: u8,
[INFO] [stdout] 119 | |     sample_rate_hz: f64,
[INFO] [stdout] 120 | |     start_chip_phase: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 124 | |     sample_code(&code, sample_rate_hz, BEIDOU_B1I_CODE_RATE_HZ, start_chip_phase, sample_count)
[INFO] [stdout] 125 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Spreading code generators.`
[INFO] [stdout]     = help: ends near `Sample the BeiDou B1I ranging code at an arbitrary sample rate from a chip-phase origin.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/codes/beidou_b1i.rs:117:1
[INFO] [stdout]     |
[INFO] [stdout] 117 | / pub fn sample_beidou_b1i_code(
[INFO] [stdout] 118 | |     prn: u8,
[INFO] [stdout] 119 | |     sample_rate_hz: f64,
[INFO] [stdout] 120 | |     start_chip_phase: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 124 | |     sample_code(&code, sample_rate_hz, BEIDOU_B1I_CODE_RATE_HZ, start_chip_phase, sample_count)
[INFO] [stdout] 125 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Sample the BeiDou B1I ranging code at an arbitrary sample rate from a chip-phase origin.`
[INFO] [stdout]     = help: ends near `Sample the BeiDou B1I ranging code at an arbitrary sample rate from a chip-phase origin.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/codes/beidou_b1i.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | / pub struct BeidouB1iCodeAssignment {
[INFO] [stdout] 19 | |     pub prn: u8,
[INFO] [stdout] 20 | |     pub g2_taps: (u8, u8),
[INFO] [stdout] 21 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Spreading code generators.`
[INFO] [stdout]    = help: ends near `Published phase assignment for one BeiDou B1I PRN.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/codes/beidou_b1i.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | / pub struct BeidouB1iCodeAssignment {
[INFO] [stdout] 19 | |     pub prn: u8,
[INFO] [stdout] 20 | |     pub g2_taps: (u8, u8),
[INFO] [stdout] 21 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Published phase assignment for one BeiDou B1I PRN.`
[INFO] [stdout]    = help: ends near `Published phase assignment for one BeiDou B1I PRN.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/codes/beidou_b1i.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const BEIDOU_B1I_CODE_CHIPS: usize = 2046;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Spreading code generators.`
[INFO] [stdout]    = help: ends near `Number of chips in one published BeiDou B1I code period.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/codes/beidou_b1i.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const BEIDOU_B1I_CODE_CHIPS: usize = 2046;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Number of chips in one published BeiDou B1I code period.`
[INFO] [stdout]    = help: ends near `Number of chips in one published BeiDou B1I code period.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/codes/beidou_b1i.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const BEIDOU_B1I_CODE_RATE_HZ: f64 = 2_046_000.0;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Spreading code generators.`
[INFO] [stdout]    = help: ends near `Code rate of the BeiDou B1I ranging code.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/codes/beidou_b1i.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const BEIDOU_B1I_CODE_RATE_HZ: f64 = 2_046_000.0;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Code rate of the BeiDou B1I ranging code.`
[INFO] [stdout]    = help: ends near `Code rate of the BeiDou B1I ranging code.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/front_end.rs:204:1
[INFO] [stdout]     |
[INFO] [stdout] 204 | / pub fn measure_transfer_response_db(
[INFO] [stdout] 205 | |     input: &[Sample],
[INFO] [stdout] 206 | |     output: &[Sample],
[INFO] [stdout] 207 | |     sample_rate_hz: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 228 | |         .collect()
[INFO] [stdout] 229 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Complex front-end FIR design and response helpers.`
[INFO] [stdout]     = help: ends near `Measure front-end transfer response at selected frequencies.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/front_end.rs:204:1
[INFO] [stdout]     |
[INFO] [stdout] 204 | / pub fn measure_transfer_response_db(
[INFO] [stdout] 205 | |     input: &[Sample],
[INFO] [stdout] 206 | |     output: &[Sample],
[INFO] [stdout] 207 | |     sample_rate_hz: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 228 | |         .collect()
[INFO] [stdout] 229 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Measure front-end transfer response at selected frequencies.`
[INFO] [stdout]     = help: ends near `Measure front-end transfer response at selected frequencies.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/front_end.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | / pub enum FrontEndFilterSpec {
[INFO] [stdout] 14 | |     /// Linear-phase low-pass filter centered at baseband.
[INFO] [stdout] 15 | |     LowPass {
[INFO] [stdout] 16 | |         /// One-sided passband edge in Hz.
[INFO] [stdout] ...  |
[INFO] [stdout] 29 | |     },
[INFO] [stdout] 30 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Complex front-end FIR design and response helpers.`
[INFO] [stdout]    = help: ends near `Configurable complex front-end FIR filter.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/front_end.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | / pub enum FrontEndFilterSpec {
[INFO] [stdout] 14 | |     /// Linear-phase low-pass filter centered at baseband.
[INFO] [stdout] 15 | |     LowPass {
[INFO] [stdout] 16 | |         /// One-sided passband edge in Hz.
[INFO] [stdout] ...  |
[INFO] [stdout] 29 | |     },
[INFO] [stdout] 30 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Configurable complex front-end FIR filter.`
[INFO] [stdout]    = help: ends near `Configurable complex front-end FIR filter.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/front_end.rs:114:1
[INFO] [stdout]     |
[INFO] [stdout] 114 | / pub struct FrontEndFirFilter {
[INFO] [stdout] 115 | |     spec: FrontEndFilterSpec,
[INFO] [stdout] 116 | |     sample_rate_hz: f64,
[INFO] [stdout] 117 | |     taps: Vec<Sample>,
[INFO] [stdout] 118 | |     history: Vec<Sample>,
[INFO] [stdout] 119 | |     next_slot: usize,
[INFO] [stdout] 120 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Complex front-end FIR design and response helpers.`
[INFO] [stdout]     = help: ends near `Statefully applies a designed complex FIR front-end filter.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/front_end.rs:114:1
[INFO] [stdout]     |
[INFO] [stdout] 114 | / pub struct FrontEndFirFilter {
[INFO] [stdout] 115 | |     spec: FrontEndFilterSpec,
[INFO] [stdout] 116 | |     sample_rate_hz: f64,
[INFO] [stdout] 117 | |     taps: Vec<Sample>,
[INFO] [stdout] 118 | |     history: Vec<Sample>,
[INFO] [stdout] 119 | |     next_slot: usize,
[INFO] [stdout] 120 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Statefully applies a designed complex FIR front-end filter.`
[INFO] [stdout]     = help: ends near `Statefully applies a designed complex FIR front-end filter.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/front_end.rs:196:1
[INFO] [stdout]     |
[INFO] [stdout] 196 | / pub struct MeasuredFrontEndResponse {
[INFO] [stdout] 197 | |     /// Frequency at which the response was measured.
[INFO] [stdout] 198 | |     pub frequency_hz: f64,
[INFO] [stdout] 199 | |     /// Measured gain in decibels.
[INFO] [stdout] 200 | |     pub gain_db: f64,
[INFO] [stdout] 201 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Complex front-end FIR design and response helpers.`
[INFO] [stdout]     = help: ends near `Measured transfer response for one frequency.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/front_end.rs:196:1
[INFO] [stdout]     |
[INFO] [stdout] 196 | / pub struct MeasuredFrontEndResponse {
[INFO] [stdout] 197 | |     /// Frequency at which the response was measured.
[INFO] [stdout] 198 | |     pub frequency_hz: f64,
[INFO] [stdout] 199 | |     /// Measured gain in decibels.
[INFO] [stdout] 200 | |     pub gain_db: f64,
[INFO] [stdout] 201 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Measured transfer response for one frequency.`
[INFO] [stdout]     = help: ends near `Measured transfer response for one frequency.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/local_code.rs:373:1
[INFO] [stdout]     |
[INFO] [stdout] 373 | / pub fn default_local_code_model(
[INFO] [stdout] 374 | |     sat: SatId,
[INFO] [stdout] 375 | |     signal_band: SignalBand,
[INFO] [stdout] 376 | | ) -> Result<Option<LocalCodeModel>, SignalError> {
[INFO] [stdout] ...   |
[INFO] [stdout] 382 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Tracking-oriented local-code models.`
[INFO] [stdout]     = help: ends near `Build the default local code model for a supported satellite and signal band.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/local_code.rs:373:1
[INFO] [stdout]     |
[INFO] [stdout] 373 | / pub fn default_local_code_model(
[INFO] [stdout] 374 | |     sat: SatId,
[INFO] [stdout] 375 | |     signal_band: SignalBand,
[INFO] [stdout] 376 | | ) -> Result<Option<LocalCodeModel>, SignalError> {
[INFO] [stdout] ...   |
[INFO] [stdout] 382 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Build the default local code model for a supported satellite and signal band.`
[INFO] [stdout]     = help: ends near `Build the default local code model for a supported satellite and signal band.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/local_code.rs:385:1
[INFO] [stdout]     |
[INFO] [stdout] 385 | / pub fn default_local_code_model_for_signal(
[INFO] [stdout] 386 | |     sat: SatId,
[INFO] [stdout] 387 | |     signal_band: SignalBand,
[INFO] [stdout] 388 | |     signal_code: SignalCode,
[INFO] [stdout] ...   |
[INFO] [stdout] 422 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Tracking-oriented local-code models.`
[INFO] [stdout]     = help: ends near `Build the local code model for one explicit signal identity.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/local_code.rs:385:1
[INFO] [stdout]     |
[INFO] [stdout] 385 | / pub fn default_local_code_model_for_signal(
[INFO] [stdout] 386 | |     sat: SatId,
[INFO] [stdout] 387 | |     signal_band: SignalBand,
[INFO] [stdout] 388 | |     signal_code: SignalCode,
[INFO] [stdout] ...   |
[INFO] [stdout] 422 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Build the local code model for one explicit signal identity.`
[INFO] [stdout]     = help: ends near `Build the local code model for one explicit signal identity.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/local_code.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | / pub enum LocalCodeModel {
[INFO] [stdout] 30 | |     /// Generic BPSK local code with an explicit chip rate.
[INFO] [stdout] 31 | |     Bpsk { code: Vec<i8>, code_rate_hz: f64 },
[INFO] [stdout] 32 | |     /// GPS L1 C/A primary code.
[INFO] [stdout] ...  |
[INFO] [stdout] 53 | |     GlonassL1St { code: Vec<i8> },
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Tracking-oriented local-code models.`
[INFO] [stdout]    = help: ends near `Reusable local code models for acquisition and tracking replicas.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/local_code.rs:29:1
[INFO] [stdout]    |
[INFO] [stdout] 29 | / pub enum LocalCodeModel {
[INFO] [stdout] 30 | |     /// Generic BPSK local code with an explicit chip rate.
[INFO] [stdout] 31 | |     Bpsk { code: Vec<i8>, code_rate_hz: f64 },
[INFO] [stdout] 32 | |     /// GPS L1 C/A primary code.
[INFO] [stdout] ...  |
[INFO] [stdout] 53 | |     GlonassL1St { code: Vec<i8> },
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Reusable local code models for acquisition and tracking replicas.`
[INFO] [stdout]    = help: ends near `Reusable local code models for acquisition and tracking replicas.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/nco.rs:7:1
[INFO] [stdout]    |
[INFO] [stdout]  7 | / pub struct Nco {
[INFO] [stdout]  8 | |     phase_offset_rad: f64,
[INFO] [stdout]  9 | |     freq_hz: f64,
[INFO] [stdout] 10 | |     sample_rate_hz: f64,
[INFO] [stdout] 11 | |     sample_index: u64,
[INFO] [stdout] 12 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Numerically controlled oscillator helper.`
[INFO] [stdout]    = help: ends near `Numerically controlled oscillator for mixing at a given frequency.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/nco.rs:7:1
[INFO] [stdout]    |
[INFO] [stdout]  7 | / pub struct Nco {
[INFO] [stdout]  8 | |     phase_offset_rad: f64,
[INFO] [stdout]  9 | |     freq_hz: f64,
[INFO] [stdout] 10 | |     sample_rate_hz: f64,
[INFO] [stdout] 11 | |     sample_index: u64,
[INFO] [stdout] 12 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Numerically controlled oscillator for mixing at a given frequency.`
[INFO] [stdout]    = help: ends near `Numerically controlled oscillator for mixing at a given frequency.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/quality.rs:277:1
[INFO] [stdout]     |
[INFO] [stdout] 277 | / pub fn estimate_iq_noise_floor_db(samples: &[Sample]) -> f64 {
[INFO] [stdout] 278 | |     let metrics = measure_iq_front_end_metrics(samples);
[INFO] [stdout] 279 | |     estimate_iq_noise_floor_db_from_metrics(samples, &metrics)
[INFO] [stdout] 280 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Front-end quality metrics derived from complex I/Q samples.`
[INFO] [stdout]     = help: ends near `Estimate the complex noise floor from centered I/Q power.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/quality.rs:277:1
[INFO] [stdout]     |
[INFO] [stdout] 277 | / pub fn estimate_iq_noise_floor_db(samples: &[Sample]) -> f64 {
[INFO] [stdout] 278 | |     let metrics = measure_iq_front_end_metrics(samples);
[INFO] [stdout] 279 | |     estimate_iq_noise_floor_db_from_metrics(samples, &metrics)
[INFO] [stdout] 280 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Estimate the complex noise floor from centered I/Q power.`
[INFO] [stdout]     = help: ends near `Estimate the complex noise floor from centered I/Q power.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/quality.rs:283:1
[INFO] [stdout]     |
[INFO] [stdout] 283 | / pub fn estimate_iq_noise_floor_db_from_metrics(
[INFO] [stdout] 284 | |     samples: &[Sample],
[INFO] [stdout] 285 | |     metrics: &IqFrontEndMetrics,
[INFO] [stdout] 286 | | ) -> f64 {
[INFO] [stdout] ...   |
[INFO] [stdout] 293 | |     10.0 * noise_floor_power.log10()
[INFO] [stdout] 294 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Front-end quality metrics derived from complex I/Q samples.`
[INFO] [stdout]     = help: ends near `Estimate the complex noise floor from centered I/Q power using precomputed front-end metrics.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/quality.rs:283:1
[INFO] [stdout]     |
[INFO] [stdout] 283 | / pub fn estimate_iq_noise_floor_db_from_metrics(
[INFO] [stdout] 284 | |     samples: &[Sample],
[INFO] [stdout] 285 | |     metrics: &IqFrontEndMetrics,
[INFO] [stdout] 286 | | ) -> f64 {
[INFO] [stdout] ...   |
[INFO] [stdout] 293 | |     10.0 * noise_floor_power.log10()
[INFO] [stdout] 294 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Estimate the complex noise floor from centered I/Q power using precomputed front-end metrics.`
[INFO] [stdout]     = help: ends near `Estimate the complex noise floor from centered I/Q power using precomputed front-end metrics.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/quality.rs:256:1
[INFO] [stdout]     |
[INFO] [stdout] 256 | / pub fn measure_iq_front_end_metrics(samples: &[Sample]) -> IqFrontEndMetrics {
[INFO] [stdout] 257 | |     let mut analyzer = IqFrontEndAnalyzer::new();
[INFO] [stdout] 258 | |     analyzer.update(samples);
[INFO] [stdout] 259 | |     analyzer.finish()
[INFO] [stdout] 260 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Front-end quality metrics derived from complex I/Q samples.`
[INFO] [stdout]     = help: ends near `Measure front-end metrics over a single I/Q slice.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/quality.rs:256:1
[INFO] [stdout]     |
[INFO] [stdout] 256 | / pub fn measure_iq_front_end_metrics(samples: &[Sample]) -> IqFrontEndMetrics {
[INFO] [stdout] 257 | |     let mut analyzer = IqFrontEndAnalyzer::new();
[INFO] [stdout] 258 | |     analyzer.update(samples);
[INFO] [stdout] 259 | |     analyzer.finish()
[INFO] [stdout] 260 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Measure front-end metrics over a single I/Q slice.`
[INFO] [stdout]     = help: ends near `Measure front-end metrics over a single I/Q slice.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/quality.rs:263:1
[INFO] [stdout]     |
[INFO] [stdout] 263 | / pub fn measure_raw_iq_front_end_metrics(
[INFO] [stdout] 264 | |     samples: &[Sample],
[INFO] [stdout] 265 | |     metadata: &RawIqMetadata,
[INFO] [stdout] 266 | | ) -> IqFrontEndMetrics {
[INFO] [stdout] ...   |
[INFO] [stdout] 269 | |     analyzer.finish()
[INFO] [stdout] 270 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Front-end quality metrics derived from complex I/Q samples.`
[INFO] [stdout]     = help: ends near `Measure front-end metrics over a raw-IQ window with quantization-aware clipping detection.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/quality.rs:263:1
[INFO] [stdout]     |
[INFO] [stdout] 263 | / pub fn measure_raw_iq_front_end_metrics(
[INFO] [stdout] 264 | |     samples: &[Sample],
[INFO] [stdout] 265 | |     metadata: &RawIqMetadata,
[INFO] [stdout] 266 | | ) -> IqFrontEndMetrics {
[INFO] [stdout] ...   |
[INFO] [stdout] 269 | |     analyzer.finish()
[INFO] [stdout] 270 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Measure front-end metrics over a raw-IQ window with quantization-aware clipping detection.`
[INFO] [stdout]     = help: ends near `Measure front-end metrics over a raw-IQ window with quantization-aware clipping detection.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/quality.rs:299:1
[INFO] [stdout]     |
[INFO] [stdout] 299 | / pub fn remove_dc_offset_in_place(samples: &mut [Sample]) -> IqFrontEndMetrics {
[INFO] [stdout] 300 | |     let metrics = measure_iq_front_end_metrics(samples);
[INFO] [stdout] 301 | |     let i_mean = metrics.i_mean as f32;
[INFO] [stdout] 302 | |     let q_mean = metrics.q_mean as f32;
[INFO] [stdout] ...   |
[INFO] [stdout] 307 | |     metrics
[INFO] [stdout] 308 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Front-end quality metrics derived from complex I/Q samples.`
[INFO] [stdout]     = help: ends near `Remove the mean I/Q offset from a sample window in place.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/quality.rs:299:1
[INFO] [stdout]     |
[INFO] [stdout] 299 | / pub fn remove_dc_offset_in_place(samples: &mut [Sample]) -> IqFrontEndMetrics {
[INFO] [stdout] 300 | |     let metrics = measure_iq_front_end_metrics(samples);
[INFO] [stdout] 301 | |     let i_mean = metrics.i_mean as f32;
[INFO] [stdout] 302 | |     let q_mean = metrics.q_mean as f32;
[INFO] [stdout] ...   |
[INFO] [stdout] 307 | |     metrics
[INFO] [stdout] 308 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Remove the mean I/Q offset from a sample window in place.`
[INFO] [stdout]     = help: ends near `Remove the mean I/Q offset from a sample window in place.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/quality.rs:92:1
[INFO] [stdout]     |
[INFO] [stdout]  92 | / pub struct IqFrontEndAnalyzer {
[INFO] [stdout]  93 | |     sample_count: usize,
[INFO] [stdout]  94 | |     sum_i: f64,
[INFO] [stdout]  95 | |     sum_q: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 101 | |     clipped_sample_count: usize,
[INFO] [stdout] 102 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Front-end quality metrics derived from complex I/Q samples.`
[INFO] [stdout]     = help: ends near `Incremental analyzer for front-end metrics over one or more I/Q frames.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/quality.rs:92:1
[INFO] [stdout]     |
[INFO] [stdout]  92 | / pub struct IqFrontEndAnalyzer {
[INFO] [stdout]  93 | |     sample_count: usize,
[INFO] [stdout]  94 | |     sum_i: f64,
[INFO] [stdout]  95 | |     sum_q: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 101 | |     clipped_sample_count: usize,
[INFO] [stdout] 102 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Incremental analyzer for front-end metrics over one or more I/Q frames.`
[INFO] [stdout]     = help: ends near `Incremental analyzer for front-end metrics over one or more I/Q frames.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/quality.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | / pub struct IqFrontEndMetrics {
[INFO] [stdout] 12 | |     /// Number of complex samples used for the measurement.
[INFO] [stdout] 13 | |     pub sample_count: usize,
[INFO] [stdout] 14 | |     /// Mean of the in-phase component.
[INFO] [stdout] ...  |
[INFO] [stdout] 53 | |     pub dc_imbalance: f64,
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Front-end quality metrics derived from complex I/Q samples.`
[INFO] [stdout]    = help: ends near `Front-end metrics measured from a complex I/Q sample window.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/quality.rs:11:1
[INFO] [stdout]    |
[INFO] [stdout] 11 | / pub struct IqFrontEndMetrics {
[INFO] [stdout] 12 | |     /// Number of complex samples used for the measurement.
[INFO] [stdout] 13 | |     pub sample_count: usize,
[INFO] [stdout] 14 | |     /// Mean of the in-phase component.
[INFO] [stdout] ...  |
[INFO] [stdout] 53 | |     pub dc_imbalance: f64,
[INFO] [stdout] 54 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Front-end metrics measured from a complex I/Q sample window.`
[INFO] [stdout]    = help: ends near `Front-end metrics measured from a complex I/Q sample window.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/replica/acquisition_model.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | / pub struct AcquisitionSignalModel {
[INFO] [stdout] 15 | |     /// Signal band searched during acquisition.
[INFO] [stdout] 16 | |     pub signal_band: SignalBand,
[INFO] [stdout] 17 | |     /// Code rate in chips per second.
[INFO] [stdout] ...  |
[INFO] [stdout] 25 | |     local_code_model: LocalCodeModel,
[INFO] [stdout] 26 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Replica-generation and synthetic modulation helpers.`
[INFO] [stdout]    = help: ends near `Signal-owned metadata and local-code sampling for supported acquisition search signals.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/replica/acquisition_model.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | / pub struct AcquisitionSignalModel {
[INFO] [stdout] 15 | |     /// Signal band searched during acquisition.
[INFO] [stdout] 16 | |     pub signal_band: SignalBand,
[INFO] [stdout] 17 | |     /// Code rate in chips per second.
[INFO] [stdout] ...  |
[INFO] [stdout] 25 | |     local_code_model: LocalCodeModel,
[INFO] [stdout] 26 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Signal-owned metadata and local-code sampling for supported acquisition search signals.`
[INFO] [stdout]    = help: ends near `Signal-owned metadata and local-code sampling for supported acquisition search signals.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/sample_timing.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 | / pub fn code_sample_position_at_index(
[INFO] [stdout] 20 | |     initial_code_phase_chips: f64,
[INFO] [stdout] 21 | |     sample_rate_hz: f64,
[INFO] [stdout] 22 | |     code_rate_hz: f64,
[INFO] [stdout] ...  |
[INFO] [stdout] 44 | |     })
[INFO] [stdout] 45 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Absolute sample-index timing helpers for chunk-stable generation.`
[INFO] [stdout]    = help: ends near `Resolve wrapped code phase and primary-period state at an absolute sample index.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/sample_timing.rs:19:1
[INFO] [stdout]    |
[INFO] [stdout] 19 | / pub fn code_sample_position_at_index(
[INFO] [stdout] 20 | |     initial_code_phase_chips: f64,
[INFO] [stdout] 21 | |     sample_rate_hz: f64,
[INFO] [stdout] 22 | |     code_rate_hz: f64,
[INFO] [stdout] ...  |
[INFO] [stdout] 44 | |     })
[INFO] [stdout] 45 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Resolve wrapped code phase and primary-period state at an absolute sample index.`
[INFO] [stdout]    = help: ends near `Resolve wrapped code phase and primary-period state at an absolute sample index.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/sample_timing.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | / pub struct CodeSamplePosition {
[INFO] [stdout] 10 | |     /// Elapsed seconds from the origin sample.
[INFO] [stdout] 11 | |     pub elapsed_s: f64,
[INFO] [stdout] 12 | |     /// Wrapped code-chip phase within one primary code period.
[INFO] [stdout] ...  |
[INFO] [stdout] 15 | |     pub primary_code_period_index: usize,
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Absolute sample-index timing helpers for chunk-stable generation.`
[INFO] [stdout]    = help: ends near `Code and elapsed-time state for one absolute sample position.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/sample_timing.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | / pub struct CodeSamplePosition {
[INFO] [stdout] 10 | |     /// Elapsed seconds from the origin sample.
[INFO] [stdout] 11 | |     pub elapsed_s: f64,
[INFO] [stdout] 12 | |     /// Wrapped code-chip phase within one primary code period.
[INFO] [stdout] ...  |
[INFO] [stdout] 15 | |     pub primary_code_period_index: usize,
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Code and elapsed-time state for one absolute sample position.`
[INFO] [stdout]    = help: ends near `Code and elapsed-time state for one absolute sample position.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:125:1
[INFO] [stdout]     |
[INFO] [stdout] 125 | / pub fn advance_code_phase_chips(
[INFO] [stdout] 126 | |     start_chip_phase: f64,
[INFO] [stdout] 127 | |     sample_rate_hz: f64,
[INFO] [stdout] 128 | |     code_rate_hz: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 138 | |     Ok((start_chip_phase + chip_advance).rem_euclid(code_length as f64))
[INFO] [stdout] 139 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal processing utilities.`
[INFO] [stdout]     = help: ends near `Advance a wrapped code phase by a number of sampled intervals.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:125:1
[INFO] [stdout]     |
[INFO] [stdout] 125 | / pub fn advance_code_phase_chips(
[INFO] [stdout] 126 | |     start_chip_phase: f64,
[INFO] [stdout] 127 | |     sample_rate_hz: f64,
[INFO] [stdout] 128 | |     code_rate_hz: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 138 | |     Ok((start_chip_phase + chip_advance).rem_euclid(code_length as f64))
[INFO] [stdout] 139 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Advance a wrapped code phase by a number of sampled intervals.`
[INFO] [stdout]     = help: ends near `Advance a wrapped code phase by a number of sampled intervals.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:142:1
[INFO] [stdout]     |
[INFO] [stdout] 142 | / pub fn advance_code_phase_seconds(
[INFO] [stdout] 143 | |     start_chip_phase: f64,
[INFO] [stdout] 144 | |     code_rate_hz: f64,
[INFO] [stdout] 145 | |     elapsed_seconds: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 154 | |     Ok((start_chip_phase + chip_advance).rem_euclid(code_length as f64))
[INFO] [stdout] 155 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal processing utilities.`
[INFO] [stdout]     = help: ends near `Advance a wrapped code phase by an elapsed duration in seconds.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:142:1
[INFO] [stdout]     |
[INFO] [stdout] 142 | / pub fn advance_code_phase_seconds(
[INFO] [stdout] 143 | |     start_chip_phase: f64,
[INFO] [stdout] 144 | |     code_rate_hz: f64,
[INFO] [stdout] 145 | |     elapsed_seconds: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 154 | |     Ok((start_chip_phase + chip_advance).rem_euclid(code_length as f64))
[INFO] [stdout] 155 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Advance a wrapped code phase by an elapsed duration in seconds.`
[INFO] [stdout]     = help: ends near `Advance a wrapped code phase by an elapsed duration in seconds.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/signal.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | / pub fn code_phase_samples_at_sample_index(
[INFO] [stdout] 63 | |     sample_rate_hz: f64,
[INFO] [stdout] 64 | |     code_rate_hz: f64,
[INFO] [stdout] 65 | |     code_length: usize,
[INFO] [stdout] ...  |
[INFO] [stdout] 78 | |     Ok(chip_phase * samples_per_chip)
[INFO] [stdout] 79 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Signal processing utilities.`
[INFO] [stdout]    = help: ends near `Convert an injected code chip phase into sample-domain code phase at a sample index.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/signal.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | / pub fn code_phase_samples_at_sample_index(
[INFO] [stdout] 63 | |     sample_rate_hz: f64,
[INFO] [stdout] 64 | |     code_rate_hz: f64,
[INFO] [stdout] 65 | |     code_length: usize,
[INFO] [stdout] ...  |
[INFO] [stdout] 78 | |     Ok(chip_phase * samples_per_chip)
[INFO] [stdout] 79 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Convert an injected code chip phase into sample-domain code phase at a sample index.`
[INFO] [stdout]    = help: ends near `Convert an injected code chip phase into sample-domain code phase at a sample index.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:158:1
[INFO] [stdout]     |
[INFO] [stdout] 158 | / pub fn code_value_at_phase(code: &[i8], chip_phase: f64) -> Result<f32, SignalError> {
[INFO] [stdout] 159 | |     validate_code_phase(chip_phase)?;
[INFO] [stdout] 160 | |     validate_code(code)?;
[INFO] [stdout] ...   |
[INFO] [stdout] 163 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal processing utilities.`
[INFO] [stdout]     = help: ends near `Return the code value at a wrapped chip phase.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:158:1
[INFO] [stdout]     |
[INFO] [stdout] 158 | / pub fn code_value_at_phase(code: &[i8], chip_phase: f64) -> Result<f32, SignalError> {
[INFO] [stdout] 159 | |     validate_code_phase(chip_phase)?;
[INFO] [stdout] 160 | |     validate_code(code)?;
[INFO] [stdout] ...   |
[INFO] [stdout] 163 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Return the code value at a wrapped chip phase.`
[INFO] [stdout]     = help: ends near `Return the code value at a wrapped chip phase.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/signal.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | / pub fn epoch_start_code_phase_samples_from_receiver_phase(
[INFO] [stdout] 28 | |     receiver_code_phase_samples: f64,
[INFO] [stdout] 29 | |     samples_per_code: usize,
[INFO] [stdout] 30 | | ) -> f64 {
[INFO] [stdout] ...  |
[INFO] [stdout] 33 | |         .rem_euclid(code_period_samples)
[INFO] [stdout] 34 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Signal processing utilities.`
[INFO] [stdout]    = help: ends near `Convert receiver-aligned code phase into the epoch-start convention used by tracking.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/signal.rs:27:1
[INFO] [stdout]    |
[INFO] [stdout] 27 | / pub fn epoch_start_code_phase_samples_from_receiver_phase(
[INFO] [stdout] 28 | |     receiver_code_phase_samples: f64,
[INFO] [stdout] 29 | |     samples_per_code: usize,
[INFO] [stdout] 30 | | ) -> f64 {
[INFO] [stdout] ...  |
[INFO] [stdout] 33 | |         .rem_euclid(code_period_samples)
[INFO] [stdout] 34 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Convert receiver-aligned code phase into the epoch-start convention used by tracking.`
[INFO] [stdout]    = help: ends near `Convert receiver-aligned code phase into the epoch-start convention used by tracking.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/signal.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | / pub fn receiver_code_phase_samples_from_epoch_start_phase(
[INFO] [stdout] 38 | |     epoch_start_code_phase_samples: f64,
[INFO] [stdout] 39 | |     samples_per_code: usize,
[INFO] [stdout] 40 | | ) -> f64 {
[INFO] [stdout] ...  |
[INFO] [stdout] 43 | |         .rem_euclid(code_period_samples)
[INFO] [stdout] 44 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Signal processing utilities.`
[INFO] [stdout]    = help: ends near `Convert epoch-start code phase back into the receiver-aligned search convention.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/signal.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | / pub fn receiver_code_phase_samples_from_epoch_start_phase(
[INFO] [stdout] 38 | |     epoch_start_code_phase_samples: f64,
[INFO] [stdout] 39 | |     samples_per_code: usize,
[INFO] [stdout] 40 | | ) -> f64 {
[INFO] [stdout] ...  |
[INFO] [stdout] 43 | |         .rem_euclid(code_period_samples)
[INFO] [stdout] 44 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Convert epoch-start code phase back into the receiver-aligned search convention.`
[INFO] [stdout]    = help: ends near `Convert epoch-start code phase back into the receiver-aligned search convention.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/signal.rs:82:1
[INFO] [stdout]    |
[INFO] [stdout] 82 | / pub fn receiver_search_code_phase_samples(
[INFO] [stdout] 83 | |     sample_rate_hz: f64,
[INFO] [stdout] 84 | |     code_rate_hz: f64,
[INFO] [stdout] 85 | |     code_length: usize,
[INFO] [stdout] ...  |
[INFO] [stdout] 97 | |     Ok((period_samples - phase_samples.rem_euclid(period_samples)).rem_euclid(period_samples))
[INFO] [stdout] 98 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Signal processing utilities.`
[INFO] [stdout]    = help: ends near `Convert an injected code chip phase into the receiver search convention.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/signal.rs:82:1
[INFO] [stdout]    |
[INFO] [stdout] 82 | / pub fn receiver_search_code_phase_samples(
[INFO] [stdout] 83 | |     sample_rate_hz: f64,
[INFO] [stdout] 84 | |     code_rate_hz: f64,
[INFO] [stdout] 85 | |     code_length: usize,
[INFO] [stdout] ...  |
[INFO] [stdout] 97 | |     Ok((period_samples - phase_samples.rem_euclid(period_samples)).rem_euclid(period_samples))
[INFO] [stdout] 98 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Convert an injected code chip phase into the receiver search convention.`
[INFO] [stdout]    = help: ends near `Convert an injected code chip phase into the receiver search convention.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:190:1
[INFO] [stdout]     |
[INFO] [stdout] 190 | / pub fn sample_ca_code(
[INFO] [stdout] 191 | |     prn: Prn,
[INFO] [stdout] 192 | |     sample_rate_hz: f64,
[INFO] [stdout] 193 | |     code_rate_hz: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 198 | |     sample_code(&code, sample_rate_hz, code_rate_hz, start_chip_phase, sample_count)
[INFO] [stdout] 199 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal processing utilities.`
[INFO] [stdout]     = help: ends near `Sample a GPS L1 C/A code at arbitrary sample and code rates from a chip phase origin.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:190:1
[INFO] [stdout]     |
[INFO] [stdout] 190 | / pub fn sample_ca_code(
[INFO] [stdout] 191 | |     prn: Prn,
[INFO] [stdout] 192 | |     sample_rate_hz: f64,
[INFO] [stdout] 193 | |     code_rate_hz: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 198 | |     sample_code(&code, sample_rate_hz, code_rate_hz, start_chip_phase, sample_count)
[INFO] [stdout] 199 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Sample a GPS L1 C/A code at arbitrary sample and code rates from a chip phase origin.`
[INFO] [stdout]     = help: ends near `Sample a GPS L1 C/A code at arbitrary sample and code rates from a chip phase origin.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:166:1
[INFO] [stdout]     |
[INFO] [stdout] 166 | / pub fn sample_code(
[INFO] [stdout] 167 | |     code: &[i8],
[INFO] [stdout] 168 | |     sample_rate_hz: f64,
[INFO] [stdout] 169 | |     code_rate_hz: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 186 | |     Ok(samples)
[INFO] [stdout] 187 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal processing utilities.`
[INFO] [stdout]     = help: ends near `Sample a spreading code at arbitrary sample and code rates from a chip phase origin.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:166:1
[INFO] [stdout]     |
[INFO] [stdout] 166 | / pub fn sample_code(
[INFO] [stdout] 167 | |     code: &[i8],
[INFO] [stdout] 168 | |     sample_rate_hz: f64,
[INFO] [stdout] 169 | |     code_rate_hz: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 186 | |     Ok(samples)
[INFO] [stdout] 187 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Sample a spreading code at arbitrary sample and code rates from a chip phase origin.`
[INFO] [stdout]     = help: ends near `Sample a spreading code at arbitrary sample and code rates from a chip phase origin.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/signal.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | / pub fn samples_per_code(
[INFO] [stdout] 13 | |     sampling_freq_hz: f64,
[INFO] [stdout] 14 | |     code_freq_basis_hz: f64,
[INFO] [stdout] 15 | |     code_length: usize,
[INFO] [stdout] 16 | | ) -> usize {
[INFO] [stdout] 17 | |     (sampling_freq_hz / (code_freq_basis_hz / code_length as f64)).round() as usize
[INFO] [stdout] 18 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Signal processing utilities.`
[INFO] [stdout]    = help: ends near `frequency and code parameters.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/signal.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | / pub fn samples_per_code(
[INFO] [stdout] 13 | |     sampling_freq_hz: f64,
[INFO] [stdout] 14 | |     code_freq_basis_hz: f64,
[INFO] [stdout] 15 | |     code_length: usize,
[INFO] [stdout] 16 | | ) -> usize {
[INFO] [stdout] 17 | |     (sampling_freq_hz / (code_freq_basis_hz / code_length as f64)).round() as usize
[INFO] [stdout] 18 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Compute the number of samples per C/A code period (1 ms) given sampling`
[INFO] [stdout]    = help: ends near `Compute the number of samples per C/A code period (1 ms) given sampling`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:202:1
[INFO] [stdout]     |
[INFO] [stdout] 202 | / pub fn wipeoff_carrier(
[INFO] [stdout] 203 | |     samples: &[Complex<f32>],
[INFO] [stdout] 204 | |     carrier_hz: f64,
[INFO] [stdout] 205 | |     sample_rate_hz: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 221 | |     Ok(mixed)
[INFO] [stdout] 222 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal processing utilities.`
[INFO] [stdout]     = help: ends near `Mix a carrier down to baseband from an absolute sample origin.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:202:1
[INFO] [stdout]     |
[INFO] [stdout] 202 | / pub fn wipeoff_carrier(
[INFO] [stdout] 203 | |     samples: &[Complex<f32>],
[INFO] [stdout] 204 | |     carrier_hz: f64,
[INFO] [stdout] 205 | |     sample_rate_hz: f64,
[INFO] [stdout] ...   |
[INFO] [stdout] 221 | |     Ok(mixed)
[INFO] [stdout] 222 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Mix a carrier down to baseband from an absolute sample origin.`
[INFO] [stdout]     = help: ends near `Mix a carrier down to baseband from an absolute sample origin.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/signal.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | / pub fn wrap_code_phase_samples(code_phase_samples: f64, samples_per_code: usize) -> f64 {
[INFO] [stdout] 22 | |     let code_period_samples = samples_per_code.max(1) as f64;
[INFO] [stdout] 23 | |     code_phase_samples.rem_euclid(code_period_samples)
[INFO] [stdout] 24 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Signal processing utilities.`
[INFO] [stdout]    = help: ends near `Wrap a receiver code phase into one code period expressed in samples.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/signal.rs:21:1
[INFO] [stdout]    |
[INFO] [stdout] 21 | / pub fn wrap_code_phase_samples(code_phase_samples: f64, samples_per_code: usize) -> f64 {
[INFO] [stdout] 22 | |     let code_period_samples = samples_per_code.max(1) as f64;
[INFO] [stdout] 23 | |     code_phase_samples.rem_euclid(code_period_samples)
[INFO] [stdout] 24 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Wrap a receiver code phase into one code period expressed in samples.`
[INFO] [stdout]    = help: ends near `Wrap a receiver code phase into one code period expressed in samples.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/signal.rs:47:1
[INFO] [stdout]    |
[INFO] [stdout] 47 | / pub fn wrapped_code_phase_delta_samples(
[INFO] [stdout] 48 | |     next_code_phase_samples: f64,
[INFO] [stdout] 49 | |     previous_code_phase_samples: f64,
[INFO] [stdout] 50 | |     samples_per_code: usize,
[INFO] [stdout] ...  |
[INFO] [stdout] 58 | |     delta
[INFO] [stdout] 59 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Signal processing utilities.`
[INFO] [stdout]    = help: ends near `Measure the shortest wrapped code-phase delta between two sample-domain phases.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/signal.rs:47:1
[INFO] [stdout]    |
[INFO] [stdout] 47 | / pub fn wrapped_code_phase_delta_samples(
[INFO] [stdout] 48 | |     next_code_phase_samples: f64,
[INFO] [stdout] 49 | |     previous_code_phase_samples: f64,
[INFO] [stdout] 50 | |     samples_per_code: usize,
[INFO] [stdout] ...  |
[INFO] [stdout] 58 | |     delta
[INFO] [stdout] 59 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Measure the shortest wrapped code-phase delta between two sample-domain phases.`
[INFO] [stdout]    = help: ends near `Measure the shortest wrapped code-phase delta between two sample-domain phases.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:101:1
[INFO] [stdout]     |
[INFO] [stdout] 101 | / pub fn wrapped_code_phase_error_samples(
[INFO] [stdout] 102 | |     actual: usize,
[INFO] [stdout] 103 | |     expected: usize,
[INFO] [stdout] 104 | |     period_samples: usize,
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     forward.min(wrapped)
[INFO] [stdout] 110 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal processing utilities.`
[INFO] [stdout]     = help: ends near `Measure wrapped code-phase error in samples over one code period.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:101:1
[INFO] [stdout]     |
[INFO] [stdout] 101 | / pub fn wrapped_code_phase_error_samples(
[INFO] [stdout] 102 | |     actual: usize,
[INFO] [stdout] 103 | |     expected: usize,
[INFO] [stdout] 104 | |     period_samples: usize,
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     forward.min(wrapped)
[INFO] [stdout] 110 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Measure wrapped code-phase error in samples over one code period.`
[INFO] [stdout]     = help: ends near `Measure wrapped code-phase error in samples over one code period.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:113:1
[INFO] [stdout]     |
[INFO] [stdout] 113 | / pub fn wrapped_code_phase_error_samples_f64(
[INFO] [stdout] 114 | |     actual: f64,
[INFO] [stdout] 115 | |     expected: f64,
[INFO] [stdout] 116 | |     period_samples: usize,
[INFO] [stdout] ...   |
[INFO] [stdout] 121 | |     forward.min(wrapped)
[INFO] [stdout] 122 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal processing utilities.`
[INFO] [stdout]     = help: ends near `Measure wrapped code-phase error in samples over one code period for fractional estimates.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/signal.rs:113:1
[INFO] [stdout]     |
[INFO] [stdout] 113 | / pub fn wrapped_code_phase_error_samples_f64(
[INFO] [stdout] 114 | |     actual: f64,
[INFO] [stdout] 115 | |     expected: f64,
[INFO] [stdout] 116 | |     period_samples: usize,
[INFO] [stdout] ...   |
[INFO] [stdout] 121 | |     forward.min(wrapped)
[INFO] [stdout] 122 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Measure wrapped code-phase error in samples over one code period for fractional estimates.`
[INFO] [stdout]     = help: ends near `Measure wrapped code-phase error in samples over one code period for fractional estimates.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:234:1
[INFO] [stdout]     |
[INFO] [stdout] 234 | / pub fn apply_front_end_transfer_power_spectral_density(
[INFO] [stdout] 235 | |     points: &[PowerSpectralDensityPoint],
[INFO] [stdout] 236 | |     filter: &FrontEndFirFilter,
[INFO] [stdout] 237 | | ) -> Result<Vec<PowerSpectralDensityPoint>, SignalError> {
[INFO] [stdout] ...   |
[INFO] [stdout] 248 | |         .collect()
[INFO] [stdout] 249 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal-spectrum analysis helpers.`
[INFO] [stdout]     = help: ends near `Apply a front-end transfer response to an expected or measured PSD.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:234:1
[INFO] [stdout]     |
[INFO] [stdout] 234 | / pub fn apply_front_end_transfer_power_spectral_density(
[INFO] [stdout] 235 | |     points: &[PowerSpectralDensityPoint],
[INFO] [stdout] 236 | |     filter: &FrontEndFirFilter,
[INFO] [stdout] 237 | | ) -> Result<Vec<PowerSpectralDensityPoint>, SignalError> {
[INFO] [stdout] ...   |
[INFO] [stdout] 248 | |         .collect()
[INFO] [stdout] 249 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Apply a front-end transfer response to an expected or measured PSD.`
[INFO] [stdout]     = help: ends near `Apply a front-end transfer response to an expected or measured PSD.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:169:1
[INFO] [stdout]     |
[INFO] [stdout] 169 | / pub fn estimate_complex_power_spectral_density(
[INFO] [stdout] 170 | |     samples: &[Sample],
[INFO] [stdout] 171 | |     sample_rate_hz: f64,
[INFO] [stdout] 172 | |     config: SpectrumEstimatorConfig,
[INFO] [stdout] ...   |
[INFO] [stdout] 230 | |     Ok(points)
[INFO] [stdout] 231 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal-spectrum analysis helpers.`
[INFO] [stdout]     = help: ends near `Estimate a two-sided baseband PSD from complex samples using Welch averaging.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:169:1
[INFO] [stdout]     |
[INFO] [stdout] 169 | / pub fn estimate_complex_power_spectral_density(
[INFO] [stdout] 170 | |     samples: &[Sample],
[INFO] [stdout] 171 | |     sample_rate_hz: f64,
[INFO] [stdout] 172 | |     config: SpectrumEstimatorConfig,
[INFO] [stdout] ...   |
[INFO] [stdout] 230 | |     Ok(points)
[INFO] [stdout] 231 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Estimate a two-sided baseband PSD from complex samples using Welch averaging.`
[INFO] [stdout]     = help: ends near `Estimate a two-sided baseband PSD from complex samples using Welch averaging.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:158:1
[INFO] [stdout]     |
[INFO] [stdout] 158 | / pub fn estimate_power_spectral_density(
[INFO] [stdout] 159 | |     samples: &[f32],
[INFO] [stdout] 160 | |     sample_rate_hz: f64,
[INFO] [stdout] 161 | |     config: SpectrumEstimatorConfig,
[INFO] [stdout] ...   |
[INFO] [stdout] 165 | |     estimate_complex_power_spectral_density(&complex_samples, sample_rate_hz, config)
[INFO] [stdout] 166 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal-spectrum analysis helpers.`
[INFO] [stdout]     = help: ends near `Estimate a two-sided baseband PSD from generated samples using Welch averaging.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:158:1
[INFO] [stdout]     |
[INFO] [stdout] 158 | / pub fn estimate_power_spectral_density(
[INFO] [stdout] 159 | |     samples: &[f32],
[INFO] [stdout] 160 | |     sample_rate_hz: f64,
[INFO] [stdout] 161 | |     config: SpectrumEstimatorConfig,
[INFO] [stdout] ...   |
[INFO] [stdout] 165 | |     estimate_complex_power_spectral_density(&complex_samples, sample_rate_hz, config)
[INFO] [stdout] 166 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Estimate a two-sided baseband PSD from generated samples using Welch averaging.`
[INFO] [stdout]     = help: ends near `Estimate a two-sided baseband PSD from generated samples using Welch averaging.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:87:1
[INFO] [stdout]     |
[INFO] [stdout]  87 | / pub fn expected_component_power_spectral_density(
[INFO] [stdout]  88 | |     component: SignalComponentSpec,
[INFO] [stdout]  89 | |     frequencies_hz: &[f64],
[INFO] [stdout]  90 | | ) -> Result<Vec<PowerSpectralDensityPoint>, SignalError> {
[INFO] [stdout] ...   |
[INFO] [stdout] 106 | |         .collect())
[INFO] [stdout] 107 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal-spectrum analysis helpers.`
[INFO] [stdout]     = help: ends near `Compute the expected two-sided baseband PSD for one signal component.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:87:1
[INFO] [stdout]     |
[INFO] [stdout]  87 | / pub fn expected_component_power_spectral_density(
[INFO] [stdout]  88 | |     component: SignalComponentSpec,
[INFO] [stdout]  89 | |     frequencies_hz: &[f64],
[INFO] [stdout]  90 | | ) -> Result<Vec<PowerSpectralDensityPoint>, SignalError> {
[INFO] [stdout] ...   |
[INFO] [stdout] 106 | |         .collect())
[INFO] [stdout] 107 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Compute the expected two-sided baseband PSD for one signal component.`
[INFO] [stdout]     = help: ends near `Compute the expected two-sided baseband PSD for one signal component.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:110:1
[INFO] [stdout]     |
[INFO] [stdout] 110 | / pub fn expected_filtered_component_power_spectral_density(
[INFO] [stdout] 111 | |     component: SignalComponentSpec,
[INFO] [stdout] 112 | |     filter: &FrontEndFirFilter,
[INFO] [stdout] 113 | |     frequencies_hz: &[f64],
[INFO] [stdout] ...   |
[INFO] [stdout] 116 | |     apply_front_end_transfer_power_spectral_density(&unfiltered, filter)
[INFO] [stdout] 117 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal-spectrum analysis helpers.`
[INFO] [stdout]     = help: ends near `Compute the expected two-sided baseband PSD for one signal component after front-end filtering.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:110:1
[INFO] [stdout]     |
[INFO] [stdout] 110 | / pub fn expected_filtered_component_power_spectral_density(
[INFO] [stdout] 111 | |     component: SignalComponentSpec,
[INFO] [stdout] 112 | |     filter: &FrontEndFirFilter,
[INFO] [stdout] 113 | |     frequencies_hz: &[f64],
[INFO] [stdout] ...   |
[INFO] [stdout] 116 | |     apply_front_end_transfer_power_spectral_density(&unfiltered, filter)
[INFO] [stdout] 117 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Compute the expected two-sided baseband PSD for one signal component after front-end filtering.`
[INFO] [stdout]     = help: ends near `Compute the expected two-sided baseband PSD for one signal component after front-end filtering.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:148:1
[INFO] [stdout]     |
[INFO] [stdout] 148 | / pub fn expected_filtered_signal_power_spectral_density(
[INFO] [stdout] 149 | |     entry: &SignalRegistryEntry,
[INFO] [stdout] 150 | |     filter: &FrontEndFirFilter,
[INFO] [stdout] 151 | |     frequencies_hz: &[f64],
[INFO] [stdout] ...   |
[INFO] [stdout] 154 | |     apply_front_end_transfer_power_spectral_density(&unfiltered, filter)
[INFO] [stdout] 155 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal-spectrum analysis helpers.`
[INFO] [stdout]     = help: ends near `Compute the expected two-sided baseband PSD for a full signal after front-end filtering.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:148:1
[INFO] [stdout]     |
[INFO] [stdout] 148 | / pub fn expected_filtered_signal_power_spectral_density(
[INFO] [stdout] 149 | |     entry: &SignalRegistryEntry,
[INFO] [stdout] 150 | |     filter: &FrontEndFirFilter,
[INFO] [stdout] 151 | |     frequencies_hz: &[f64],
[INFO] [stdout] ...   |
[INFO] [stdout] 154 | |     apply_front_end_transfer_power_spectral_density(&unfiltered, filter)
[INFO] [stdout] 155 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Compute the expected two-sided baseband PSD for a full signal after front-end filtering.`
[INFO] [stdout]     = help: ends near `Compute the expected two-sided baseband PSD for a full signal after front-end filtering.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:120:1
[INFO] [stdout]     |
[INFO] [stdout] 120 | / pub fn expected_signal_power_spectral_density(
[INFO] [stdout] 121 | |     entry: &SignalRegistryEntry,
[INFO] [stdout] 122 | |     frequencies_hz: &[f64],
[INFO] [stdout] 123 | | ) -> Result<Vec<PowerSpectralDensityPoint>, SignalError> {
[INFO] [stdout] ...   |
[INFO] [stdout] 144 | |     Ok(total)
[INFO] [stdout] 145 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal-spectrum analysis helpers.`
[INFO] [stdout]     = help: ends near `Compute the expected two-sided baseband PSD for a full registered signal.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:120:1
[INFO] [stdout]     |
[INFO] [stdout] 120 | / pub fn expected_signal_power_spectral_density(
[INFO] [stdout] 121 | |     entry: &SignalRegistryEntry,
[INFO] [stdout] 122 | |     frequencies_hz: &[f64],
[INFO] [stdout] 123 | | ) -> Result<Vec<PowerSpectralDensityPoint>, SignalError> {
[INFO] [stdout] ...   |
[INFO] [stdout] 144 | |     Ok(total)
[INFO] [stdout] 145 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Compute the expected two-sided baseband PSD for a full registered signal.`
[INFO] [stdout]     = help: ends near `Compute the expected two-sided baseband PSD for a full registered signal.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:286:1
[INFO] [stdout]     |
[INFO] [stdout] 286 | / pub fn find_deep_spectrum_nulls(
[INFO] [stdout] 287 | |     points: &[PowerSpectralDensityPoint],
[INFO] [stdout] 288 | |     relative_threshold_db: f64,
[INFO] [stdout] 289 | | ) -> Result<Vec<SpectrumNull>, SignalError> {
[INFO] [stdout] ...   |
[INFO] [stdout] 336 | |     Ok(nulls)
[INFO] [stdout] 337 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal-spectrum analysis helpers.`
[INFO] [stdout]     = help: ends near `Find deep local minima below a relative threshold, returned on the non-negative side.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:286:1
[INFO] [stdout]     |
[INFO] [stdout] 286 | / pub fn find_deep_spectrum_nulls(
[INFO] [stdout] 287 | |     points: &[PowerSpectralDensityPoint],
[INFO] [stdout] 288 | |     relative_threshold_db: f64,
[INFO] [stdout] 289 | | ) -> Result<Vec<SpectrumNull>, SignalError> {
[INFO] [stdout] ...   |
[INFO] [stdout] 336 | |     Ok(nulls)
[INFO] [stdout] 337 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Find deep local minima below a relative threshold, returned on the non-negative side.`
[INFO] [stdout]     = help: ends near `Find deep local minima below a relative threshold, returned on the non-negative side.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:252:1
[INFO] [stdout]     |
[INFO] [stdout] 252 | / pub fn summarize_power_spectral_density(
[INFO] [stdout] 253 | |     points: &[PowerSpectralDensityPoint],
[INFO] [stdout] 254 | |     occupied_power_fraction: f64,
[INFO] [stdout] 255 | | ) -> Result<PowerSpectralDensitySummary, SignalError> {
[INFO] [stdout] ...   |
[INFO] [stdout] 282 | |     })
[INFO] [stdout] 283 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Signal-spectrum analysis helpers.`
[INFO] [stdout]     = help: ends near `Summarize a PSD with centroid, occupied bandwidth, integrated power, and symmetry error.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/spectrum.rs:252:1
[INFO] [stdout]     |
[INFO] [stdout] 252 | / pub fn summarize_power_spectral_density(
[INFO] [stdout] 253 | |     points: &[PowerSpectralDensityPoint],
[INFO] [stdout] 254 | |     occupied_power_fraction: f64,
[INFO] [stdout] 255 | | ) -> Result<PowerSpectralDensitySummary, SignalError> {
[INFO] [stdout] ...   |
[INFO] [stdout] 282 | |     })
[INFO] [stdout] 283 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Summarize a PSD with centroid, occupied bandwidth, integrated power, and symmetry error.`
[INFO] [stdout]     = help: ends near `Summarize a PSD with centroid, occupied bandwidth, integrated power, and symmetry error.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/spectrum.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | / pub struct PowerSpectralDensityPoint {
[INFO] [stdout] 15 | |     /// Baseband frequency of the point in Hz.
[INFO] [stdout] 16 | |     pub frequency_hz: f64,
[INFO] [stdout] 17 | |     /// Power spectral density at the point in power-per-Hz units.
[INFO] [stdout] 18 | |     pub power_density: f64,
[INFO] [stdout] 19 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Signal-spectrum analysis helpers.`
[INFO] [stdout]    = help: ends near `One point of a two-sided baseband power spectral density.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/spectrum.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | / pub struct PowerSpectralDensityPoint {
[INFO] [stdout] 15 | |     /// Baseband frequency of the point in Hz.
[INFO] [stdout] 16 | |     pub frequency_hz: f64,
[INFO] [stdout] 17 | |     /// Power spectral density at the point in power-per-Hz units.
[INFO] [stdout] 18 | |     pub power_density: f64,
[INFO] [stdout] 19 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `One point of a two-sided baseband power spectral density.`
[INFO] [stdout]    = help: ends near `One point of a two-sided baseband power spectral density.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/spectrum.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | / pub struct PowerSpectralDensitySummary {
[INFO] [stdout] 24 | |     /// Power-weighted spectral centroid in Hz.
[INFO] [stdout] 25 | |     pub center_frequency_hz: f64,
[INFO] [stdout] 26 | |     /// Symmetric occupied bandwidth in Hz containing the requested power fraction.
[INFO] [stdout] ...  |
[INFO] [stdout] 31 | |     pub symmetry_error: f64,
[INFO] [stdout] 32 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Signal-spectrum analysis helpers.`
[INFO] [stdout]    = help: ends near `Summary metrics derived from a two-sided baseband power spectral density.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/spectrum.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | / pub struct PowerSpectralDensitySummary {
[INFO] [stdout] 24 | |     /// Power-weighted spectral centroid in Hz.
[INFO] [stdout] 25 | |     pub center_frequency_hz: f64,
[INFO] [stdout] 26 | |     /// Symmetric occupied bandwidth in Hz containing the requested power fraction.
[INFO] [stdout] ...  |
[INFO] [stdout] 31 | |     pub symmetry_error: f64,
[INFO] [stdout] 32 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Summary metrics derived from a two-sided baseband power spectral density.`
[INFO] [stdout]    = help: ends near `Summary metrics derived from a two-sided baseband power spectral density.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/spectrum.rs:45:1
[INFO] [stdout]    |
[INFO] [stdout] 45 | / pub struct SpectrumEstimatorConfig {
[INFO] [stdout] 46 | |     /// FFT segment length used per Welch window.
[INFO] [stdout] 47 | |     pub segment_len: usize,
[INFO] [stdout] 48 | |     /// Overlap between consecutive Welch windows.
[INFO] [stdout] 49 | |     pub overlap_len: usize,
[INFO] [stdout] 50 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Signal-spectrum analysis helpers.`
[INFO] [stdout]    = help: ends near `Welch estimator configuration for generated-signal PSD measurements.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/spectrum.rs:45:1
[INFO] [stdout]    |
[INFO] [stdout] 45 | / pub struct SpectrumEstimatorConfig {
[INFO] [stdout] 46 | |     /// FFT segment length used per Welch window.
[INFO] [stdout] 47 | |     pub segment_len: usize,
[INFO] [stdout] 48 | |     /// Overlap between consecutive Welch windows.
[INFO] [stdout] 49 | |     pub overlap_len: usize,
[INFO] [stdout] 50 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Welch estimator configuration for generated-signal PSD measurements.`
[INFO] [stdout]    = help: ends near `Welch estimator configuration for generated-signal PSD measurements.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/spectrum.rs:36:1
[INFO] [stdout]    |
[INFO] [stdout] 36 | / pub struct SpectrumNull {
[INFO] [stdout] 37 | |     /// Null frequency in Hz.
[INFO] [stdout] 38 | |     pub frequency_hz: f64,
[INFO] [stdout] 39 | |     /// Power density measured at the null.
[INFO] [stdout] 40 | |     pub power_density: f64,
[INFO] [stdout] 41 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Signal-spectrum analysis helpers.`
[INFO] [stdout]    = help: ends near `One detected deep spectral null.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/spectrum.rs:36:1
[INFO] [stdout]    |
[INFO] [stdout] 36 | / pub struct SpectrumNull {
[INFO] [stdout] 37 | |     /// Null frequency in Hz.
[INFO] [stdout] 38 | |     pub frequency_hz: f64,
[INFO] [stdout] 39 | |     /// Power density measured at the null.
[INFO] [stdout] 40 | |     pub power_density: f64,
[INFO] [stdout] 41 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `One detected deep spectral null.`
[INFO] [stdout]    = help: ends near `One detected deep spectral null.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/tracking_adaptation.rs:85:1
[INFO] [stdout]     |
[INFO] [stdout]  85 | / pub fn advance_tracking_adaptation(
[INFO] [stdout]  86 | |     base_profile: TrackingLoopProfile,
[INFO] [stdout]  87 | |     state: TrackingAdaptationState,
[INFO] [stdout]  88 | |     input: TrackingAdaptationInput,
[INFO] [stdout] ...   |
[INFO] [stdout] 119 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Tracking helpers.`
[INFO] [stdout]     = help: ends near `Advance the tracking adaptation controller by one epoch.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/dsp/tracking_adaptation.rs:85:1
[INFO] [stdout]     |
[INFO] [stdout]  85 | / pub fn advance_tracking_adaptation(
[INFO] [stdout]  86 | |     base_profile: TrackingLoopProfile,
[INFO] [stdout]  87 | |     state: TrackingAdaptationState,
[INFO] [stdout]  88 | |     input: TrackingAdaptationInput,
[INFO] [stdout] ...   |
[INFO] [stdout] 119 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Advance the tracking adaptation controller by one epoch.`
[INFO] [stdout]     = help: ends near `Advance the tracking adaptation controller by one epoch.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/tracking_adaptation.rs:75:1
[INFO] [stdout]    |
[INFO] [stdout] 75 | / pub struct TrackingAdaptationDecision {
[INFO] [stdout] 76 | |     /// Updated adaptation state to persist into the next epoch.
[INFO] [stdout] 77 | |     pub state: TrackingAdaptationState,
[INFO] [stdout] 78 | |     /// Active loop profile kind chosen for the next epoch.
[INFO] [stdout] ...  |
[INFO] [stdout] 81 | |     pub profile: TrackingLoopProfile,
[INFO] [stdout] 82 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Tracking helpers.`
[INFO] [stdout]    = help: ends near `Result of one tracking adaptation step.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/tracking_adaptation.rs:75:1
[INFO] [stdout]    |
[INFO] [stdout] 75 | / pub struct TrackingAdaptationDecision {
[INFO] [stdout] 76 | |     /// Updated adaptation state to persist into the next epoch.
[INFO] [stdout] 77 | |     pub state: TrackingAdaptationState,
[INFO] [stdout] 78 | |     /// Active loop profile kind chosen for the next epoch.
[INFO] [stdout] ...  |
[INFO] [stdout] 81 | |     pub profile: TrackingLoopProfile,
[INFO] [stdout] 82 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Result of one tracking adaptation step.`
[INFO] [stdout]    = help: ends near `Result of one tracking adaptation step.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/tracking_adaptation.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | / pub struct TrackingAdaptationInput {
[INFO] [stdout] 40 | |     /// Current CN0 estimate in dB-Hz.
[INFO] [stdout] 41 | |     pub cn0_dbhz: f64,
[INFO] [stdout] 42 | |     /// Current FLL discriminator error in Hz.
[INFO] [stdout] ...  |
[INFO] [stdout] 51 | |     pub discriminator_stable: bool,
[INFO] [stdout] 52 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Tracking helpers.`
[INFO] [stdout]    = help: ends near `Inputs evaluated by the tracking adaptation controller.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/tracking_adaptation.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | / pub struct TrackingAdaptationInput {
[INFO] [stdout] 40 | |     /// Current CN0 estimate in dB-Hz.
[INFO] [stdout] 41 | |     pub cn0_dbhz: f64,
[INFO] [stdout] 42 | |     /// Current FLL discriminator error in Hz.
[INFO] [stdout] ...  |
[INFO] [stdout] 51 | |     pub discriminator_stable: bool,
[INFO] [stdout] 52 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Inputs evaluated by the tracking adaptation controller.`
[INFO] [stdout]    = help: ends near `Inputs evaluated by the tracking adaptation controller.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/tracking_adaptation.rs:56:1
[INFO] [stdout]    |
[INFO] [stdout] 56 | / pub struct TrackingAdaptationState {
[INFO] [stdout] 57 | |     /// Currently active loop profile.
[INFO] [stdout] 58 | |     pub active_profile: TrackingLoopProfileKind,
[INFO] [stdout] 59 | |     pub(crate) pending_profile: Option<TrackingLoopProfileKind>,
[INFO] [stdout] 60 | |     pub(crate) pending_epochs: u8,
[INFO] [stdout] 61 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Tracking helpers.`
[INFO] [stdout]    = help: ends near `Stateful hysteresis memory for tracking adaptation.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/tracking_adaptation.rs:56:1
[INFO] [stdout]    |
[INFO] [stdout] 56 | / pub struct TrackingAdaptationState {
[INFO] [stdout] 57 | |     /// Currently active loop profile.
[INFO] [stdout] 58 | |     pub active_profile: TrackingLoopProfileKind,
[INFO] [stdout] 59 | |     pub(crate) pending_profile: Option<TrackingLoopProfileKind>,
[INFO] [stdout] 60 | |     pub(crate) pending_epochs: u8,
[INFO] [stdout] 61 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Stateful hysteresis memory for tracking adaptation.`
[INFO] [stdout]    = help: ends near `Stateful hysteresis memory for tracking adaptation.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/tracking_adaptation.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | / pub struct TrackingLoopProfile {
[INFO] [stdout] 27 | |     /// Effective DLL bandwidth in Hz.
[INFO] [stdout] 28 | |     pub dll_bw_hz: f64,
[INFO] [stdout] 29 | |     /// Effective PLL bandwidth in Hz.
[INFO] [stdout] ...  |
[INFO] [stdout] 34 | |     pub integration_ms: u32,
[INFO] [stdout] 35 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Tracking helpers.`
[INFO] [stdout]    = help: ends near `Loop parameters chosen for the next tracking epoch.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/tracking_adaptation.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | / pub struct TrackingLoopProfile {
[INFO] [stdout] 27 | |     /// Effective DLL bandwidth in Hz.
[INFO] [stdout] 28 | |     pub dll_bw_hz: f64,
[INFO] [stdout] 29 | |     /// Effective PLL bandwidth in Hz.
[INFO] [stdout] ...  |
[INFO] [stdout] 34 | |     pub integration_ms: u32,
[INFO] [stdout] 35 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Loop parameters chosen for the next tracking epoch.`
[INFO] [stdout]    = help: ends near `Loop parameters chosen for the next tracking epoch.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/tracking_adaptation.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | / pub enum TrackingLoopProfileKind {
[INFO] [stdout] 16 | |     /// Use the configured base loop parameters unchanged.
[INFO] [stdout] 17 | |     Nominal,
[INFO] [stdout] 18 | |     /// Narrow the loops and lengthen coherent integration for weak but stable signals.
[INFO] [stdout] ...  |
[INFO] [stdout] 21 | |     DynamicStress,
[INFO] [stdout] 22 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Tracking helpers.`
[INFO] [stdout]    = help: ends near `Tracking loop profile selected by the adaptation controller.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/dsp/tracking_adaptation.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | / pub enum TrackingLoopProfileKind {
[INFO] [stdout] 16 | |     /// Use the configured base loop parameters unchanged.
[INFO] [stdout] 17 | |     Nominal,
[INFO] [stdout] 18 | |     /// Narrow the loops and lengthen coherent integration for weak but stable signals.
[INFO] [stdout] ...  |
[INFO] [stdout] 21 | |     DynamicStress,
[INFO] [stdout] 22 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Tracking loop profile selected by the adaptation controller.`
[INFO] [stdout]    = help: ends near `Tracking loop profile selected by the adaptation controller.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/error.rs:7:1
[INFO] [stdout]    |
[INFO] [stdout]  7 | / pub enum SignalError {
[INFO] [stdout]  8 | |     /// Unsupported or out-of-range PRN.
[INFO] [stdout]  9 | |     #[error("unsupported PRN {0}")]
[INFO] [stdout] 10 | |     UnsupportedPrn(u8),
[INFO] [stdout] ...  |
[INFO] [stdout] 67 | |     },
[INFO] [stdout] 68 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Error types.`
[INFO] [stdout]    = help: ends near `Errors emitted by signal utilities.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/error.rs:7:1
[INFO] [stdout]    |
[INFO] [stdout]  7 | / pub enum SignalError {
[INFO] [stdout]  8 | |     /// Unsupported or out-of-range PRN.
[INFO] [stdout]  9 | |     #[error("unsupported PRN {0}")]
[INFO] [stdout] 10 | |     UnsupportedPrn(u8),
[INFO] [stdout] ...  |
[INFO] [stdout] 67 | |     },
[INFO] [stdout] 68 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Errors emitted by signal utilities.`
[INFO] [stdout]    = help: ends near `Errors emitted by signal utilities.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/obs_validation.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | / pub struct BandLagEvent {
[INFO] [stdout] 17 | |     pub sat: SatId,
[INFO] [stdout] 18 | |     pub band: SignalBand,
[INFO] [stdout] 19 | |     pub lag_epochs: u64,
[INFO] [stdout] 20 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Observation validation and dual-frequency compatibility helpers.`
[INFO] [stdout]    = help: ends near `Event describing missing band observations over time.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/obs_validation.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | / pub struct BandLagEvent {
[INFO] [stdout] 17 | |     pub sat: SatId,
[INFO] [stdout] 18 | |     pub band: SignalBand,
[INFO] [stdout] 19 | |     pub lag_epochs: u64,
[INFO] [stdout] 20 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Event describing missing band observations over time.`
[INFO] [stdout]    = help: ends near `Event describing missing band observations over time.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/raw_iq.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | / pub enum IqQuantization {
[INFO] [stdout] 33 | |     /// Preserve scaled complex samples in float32 without additional quantization.
[INFO] [stdout] 34 | |     Float32,
[INFO] [stdout] 35 | |     /// Apply a bipolar sign quantizer and store the result in signed 8-bit IQ.
[INFO] [stdout] ...  |
[INFO] [stdout] 44 | |     Signed16Bit,
[INFO] [stdout] 45 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Raw IQ metadata contracts.`
[INFO] [stdout]    = help: ends near `Controlled quantization profile applied before raw-IQ storage.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/raw_iq.rs:32:1
[INFO] [stdout]    |
[INFO] [stdout] 32 | / pub enum IqQuantization {
[INFO] [stdout] 33 | |     /// Preserve scaled complex samples in float32 without additional quantization.
[INFO] [stdout] 34 | |     Float32,
[INFO] [stdout] 35 | |     /// Apply a bipolar sign quantizer and store the result in signed 8-bit IQ.
[INFO] [stdout] ...  |
[INFO] [stdout] 44 | |     Signed16Bit,
[INFO] [stdout] 45 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Controlled quantization profile applied before raw-IQ storage.`
[INFO] [stdout]    = help: ends near `Controlled quantization profile applied before raw-IQ storage.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/raw_iq.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | / pub enum IqSampleFormat {
[INFO] [stdout] 10 | |     /// Signed 8-bit interleaved I/Q pairs.
[INFO] [stdout] 11 | |     Iq8,
[INFO] [stdout] 12 | |     /// Signed 16-bit little-endian interleaved I/Q pairs.
[INFO] [stdout] ...  |
[INFO] [stdout] 15 | |     Cf32Le,
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Raw IQ metadata contracts.`
[INFO] [stdout]    = help: ends near `Supported raw IQ sample encodings.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/raw_iq.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | / pub enum IqSampleFormat {
[INFO] [stdout] 10 | |     /// Signed 8-bit interleaved I/Q pairs.
[INFO] [stdout] 11 | |     Iq8,
[INFO] [stdout] 12 | |     /// Signed 16-bit little-endian interleaved I/Q pairs.
[INFO] [stdout] ...  |
[INFO] [stdout] 15 | |     Cf32Le,
[INFO] [stdout] 16 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Supported raw IQ sample encodings.`
[INFO] [stdout]    = help: ends near `Supported raw IQ sample encodings.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/raw_iq.rs:92:1
[INFO] [stdout]     |
[INFO] [stdout]  92 | / pub struct RawIqMetadata {
[INFO] [stdout]  93 | |     /// Encoded sample format on disk.
[INFO] [stdout]  94 | |     pub format: IqSampleFormat,
[INFO] [stdout]  95 | |     /// Sample rate in Hz.
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     pub notes: Option<String>,
[INFO] [stdout] 110 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Raw IQ metadata contracts.`
[INFO] [stdout]     = help: ends near `Explicit metadata required to ingest a raw IQ capture.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]    --> src/raw_iq.rs:92:1
[INFO] [stdout]     |
[INFO] [stdout]  92 | / pub struct RawIqMetadata {
[INFO] [stdout]  93 | |     /// Encoded sample format on disk.
[INFO] [stdout]  94 | |     pub format: IqSampleFormat,
[INFO] [stdout]  95 | |     /// Sample rate in Hz.
[INFO] [stdout] ...   |
[INFO] [stdout] 109 | |     pub notes: Option<String>,
[INFO] [stdout] 110 | | }
[INFO] [stdout]     | |_^
[INFO] [stdout]     |
[INFO] [stdout]     = help: the way this is parsed might change in the future
[INFO] [stdout]     = help: starts near `Explicit metadata required to ingest a raw IQ capture.`
[INFO] [stdout]     = help: ends near `Explicit metadata required to ingest a raw IQ capture.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/samples.rs:46:1
[INFO] [stdout]    |
[INFO] [stdout] 46 | / pub fn encode_quantized_samples(samples: &[Sample], quantization: IqQuantization) -> Vec<u8> {
[INFO] [stdout] 47 | |     match quantization {
[INFO] [stdout] 48 | |         IqQuantization::Float32 => encode_cf32_le_bytes(samples),
[INFO] [stdout] 49 | |         IqQuantization::Bipolar1Bit
[INFO] [stdout] ...  |
[INFO] [stdout] 55 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Sample conversion helpers.`
[INFO] [stdout]    = help: ends near `Encode complex samples into raw-IQ bytes using one controlled quantization profile.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/samples.rs:46:1
[INFO] [stdout]    |
[INFO] [stdout] 46 | / pub fn encode_quantized_samples(samples: &[Sample], quantization: IqQuantization) -> Vec<u8> {
[INFO] [stdout] 47 | |     match quantization {
[INFO] [stdout] 48 | |         IqQuantization::Float32 => encode_cf32_le_bytes(samples),
[INFO] [stdout] 49 | |         IqQuantization::Bipolar1Bit
[INFO] [stdout] ...  |
[INFO] [stdout] 55 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Encode complex samples into raw-IQ bytes using one controlled quantization profile.`
[INFO] [stdout]    = help: ends near `Encode complex samples into raw-IQ bytes using one controlled quantization profile.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/samples.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | / pub fn iq_f32_to_samples(input: &[f32]) -> Vec<Sample> {
[INFO] [stdout] 38 | |     let mut out = Vec::with_capacity(input.len() / 2);
[INFO] [stdout] 39 | |     for chunk in input.chunks_exact(2) {
[INFO] [stdout] 40 | |         out.push(num_complex::Complex::new(chunk[0], chunk[1]));
[INFO] [stdout] 41 | |     }
[INFO] [stdout] 42 | |     out
[INFO] [stdout] 43 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Sample conversion helpers.`
[INFO] [stdout]    = help: ends near `Convert interleaved f32 IQ samples into complex f32 samples without quantization scaling.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/samples.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | / pub fn iq_f32_to_samples(input: &[f32]) -> Vec<Sample> {
[INFO] [stdout] 38 | |     let mut out = Vec::with_capacity(input.len() / 2);
[INFO] [stdout] 39 | |     for chunk in input.chunks_exact(2) {
[INFO] [stdout] 40 | |         out.push(num_complex::Complex::new(chunk[0], chunk[1]));
[INFO] [stdout] 41 | |     }
[INFO] [stdout] 42 | |     out
[INFO] [stdout] 43 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Convert interleaved f32 IQ samples into complex f32 samples without quantization scaling.`
[INFO] [stdout]    = help: ends near `Convert interleaved f32 IQ samples into complex f32 samples without quantization scaling.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/samples.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | / pub fn iq_i16_to_samples(input: &[i16]) -> Vec<Sample> {
[INFO] [stdout] 27 | |     let mut out = Vec::with_capacity(input.len() / 2);
[INFO] [stdout] 28 | |     for chunk in input.chunks_exact(2) {
[INFO] [stdout] 29 | |         let i = chunk[0] as f32 * I16_SCALE;
[INFO] [stdout] ...  |
[INFO] [stdout] 33 | |     out
[INFO] [stdout] 34 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Sample conversion helpers.`
[INFO] [stdout]    = help: ends near `Convert interleaved i16 IQ samples into complex f32 samples.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/samples.rs:26:1
[INFO] [stdout]    |
[INFO] [stdout] 26 | / pub fn iq_i16_to_samples(input: &[i16]) -> Vec<Sample> {
[INFO] [stdout] 27 | |     let mut out = Vec::with_capacity(input.len() / 2);
[INFO] [stdout] 28 | |     for chunk in input.chunks_exact(2) {
[INFO] [stdout] 29 | |         let i = chunk[0] as f32 * I16_SCALE;
[INFO] [stdout] ...  |
[INFO] [stdout] 33 | |     out
[INFO] [stdout] 34 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Convert interleaved i16 IQ samples into complex f32 samples.`
[INFO] [stdout]    = help: ends near `Convert interleaved i16 IQ samples into complex f32 samples.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/samples.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | / pub fn iq_i8_to_samples(input: &[i8]) -> Vec<Sample> {
[INFO] [stdout] 16 | |     let mut out = Vec::with_capacity(input.len() / 2);
[INFO] [stdout] 17 | |     for chunk in input.chunks_exact(2) {
[INFO] [stdout] 18 | |         let i = chunk[0] as f32 * I8_SCALE;
[INFO] [stdout] ...  |
[INFO] [stdout] 22 | |     out
[INFO] [stdout] 23 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Sample conversion helpers.`
[INFO] [stdout]    = help: ends near `Convert interleaved i8 IQ samples into complex f32 samples.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/samples.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | / pub fn iq_i8_to_samples(input: &[i8]) -> Vec<Sample> {
[INFO] [stdout] 16 | |     let mut out = Vec::with_capacity(input.len() / 2);
[INFO] [stdout] 17 | |     for chunk in input.chunks_exact(2) {
[INFO] [stdout] 18 | |         let i = chunk[0] as f32 * I8_SCALE;
[INFO] [stdout] ...  |
[INFO] [stdout] 22 | |     out
[INFO] [stdout] 23 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `A time-stamped frame of complex baseband samples.`
[INFO] [stdout]    = help: ends near `A time-stamped frame of complex baseband samples.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/samples.rs:58:1
[INFO] [stdout]    |
[INFO] [stdout] 58 | / pub fn quantize_samples_for_storage(
[INFO] [stdout] 59 | |     samples: &[Sample],
[INFO] [stdout] 60 | |     quantization: IqQuantization,
[INFO] [stdout] 61 | | ) -> Vec<Sample> {
[INFO] [stdout] ...  |
[INFO] [stdout] 76 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Sample conversion helpers.`
[INFO] [stdout]    = help: ends near `Quantize complex samples through one storage profile and return the receiver-visible samples.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: markdown element starts on one item and ends on another
[INFO] [stdout]   --> src/samples.rs:58:1
[INFO] [stdout]    |
[INFO] [stdout] 58 | / pub fn quantize_samples_for_storage(
[INFO] [stdout] 59 | |     samples: &[Sample],
[INFO] [stdout] 60 | |     quantization: IqQuantization,
[INFO] [stdout] 61 | | ) -> Vec<Sample> {
[INFO] [stdout] ...  |
[INFO] [stdout] 76 | | }
[INFO] [stdout]    | |_^
[INFO] [stdout]    |
[INFO] [stdout]    = help: the way this is parsed might change in the future
[INFO] [stdout]    = help: starts near `Quantize complex samples through one storage profile and return the receiver-visible samples.`
[INFO] [stdout]    = help: ends near `Quantize complex samples through one storage profile and return the receiver-visible samples.`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not document `bijux-gnss-signal`
[INFO] running `Command { std: "docker" "inspect" "58336545defe4c75c7e4a1054cc0908fd8cfb5da0201bb9be79ad34ec7c234a1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "58336545defe4c75c7e4a1054cc0908fd8cfb5da0201bb9be79ad34ec7c234a1", kill_on_drop: false }`
[INFO] [stdout] 58336545defe4c75c7e4a1054cc0908fd8cfb5da0201bb9be79ad34ec7c234a1
