file-vec 0.1.0

Uses memory mapping to store a vec like structure in the file system rather than on the heap. Although diskalloc already exists, I needed the option to make data persistent so an opaque allocator structure was inadequate for me. This reimplements most of Vec's features, with a couple extra stuff for relating to the backing file
Documentation
Build #3169477 2026-04-22 13:47:31

# rustc version rustc 1.97.0-nightly (9ec5d5f32 2026-04-21)

# docs.rs version docsrs 0.0.0 (15f7e1e9 2026-04-21 )

# build log [INFO] running `Command { std: "docker" "create" "-v" "/home/cratesfyi/workspace-builder6/builds/file-vec-0.1.0/target:/opt/rustwide/target:rw,Z" "-v" "/home/cratesfyi/workspace-builder6/builds/file-vec-0.1.0/source:/opt/rustwide/workdir:ro,Z" "-v" "/home/cratesfyi/workspace-builder6/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/home/cratesfyi/workspace-builder6/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "6442450944" "--cpuset-cpus" "28-31" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "sleep" "infinity", kill_on_drop: false }` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 739baf8379c6a5a0269ba51b53733e51158a1e85bba30f29147c5cb1ecb6e4bd [INFO] running `Command { std: "docker" "start" "739baf8379c6a5a0269ba51b53733e51158a1e85bba30f29147c5cb1ecb6e4bd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "DOCS_RS=1" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "--user" "1001:1001" "739baf8379c6a5a0269ba51b53733e51158a1e85bba30f29147c5cb1ecb6e4bd" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "rustdoc" "--lib" "-Zrustdoc-map" "--config" "build.rustdocflags=[\"--cfg\", \"docsrs\", \"-Z\", \"unstable-options\", \"--emit=invocation-specific\", \"--resource-suffix\", \"-20260421-1.97.0-nightly-9ec5d5f32\", \"--static-root-path\", \"/-/rustdoc.static/\", \"--cap-lints\", \"warn\", \"--extern-html-root-takes-precedence\"]" "--offline" "-Zunstable-options" "--config=doc.extern-map.registries.crates-io=\"https://docs.rs/{pkg_name}/{version}/x86_64-unknown-linux-gnu\"" "-Zrustdoc-scrape-examples" "-j4" "--target" "x86_64-unknown-linux-gnu", kill_on_drop: false }` [INFO] [stderr] warning: target filter specified, but no targets matched; this is a no-op [INFO] [stderr] Documenting file-vec v0.1.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: unresolved link to `E;N` [INFO] [stderr] --> src/vec.rs:18:23 [INFO] [stderr] | [INFO] [stderr] 18 | /// flatten FileVec<[E;N]> to FileVec<E> [INFO] [stderr] | ^^^ no item named `E;N` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `T` [INFO] [stderr] --> src/vec.rs:537:90 [INFO] [stderr] | [INFO] [stderr] 537 | /// opens a file as a FileVec. The bytes in the file must be valid when interpreted as [T], the file should not be modified whi... [INFO] [stderr] | ^ no item named `T` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unclosed HTML tag `E` [INFO] [stderr] --> src/vec.rs:18:39 [INFO] [stderr] | [INFO] [stderr] 18 | /// flatten FileVec<[E;N]> to FileVec<E> [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(rustdoc::invalid_html_tags)]` on by default [INFO] [stderr] help: try marking as source code [INFO] [stderr] | [INFO] [stderr] 18 | /// flatten FileVec<[E;N]> to `FileVec<E>` [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: unclosed HTML tag `T` [INFO] [stderr] --> src/vec.rs:262:23 [INFO] [stderr] | [INFO] [stderr] 262 | /// Creates a FileVec<T> where each element is produced by calling f with that element’s index while walking forward through th... [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] help: try marking as source code [INFO] [stderr] | [INFO] [stderr] 262 | /// Creates a `FileVec<T>` where each element is produced by calling f with that element’s index while walking forward through the FileVec<T> [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: unclosed HTML tag `T` [INFO] [stderr] --> src/vec.rs:262:138 [INFO] [stderr] | [INFO] [stderr] 262 | ...that element’s index while walking forward through the FileVec<T> [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] help: try marking as source code [INFO] [stderr] | [INFO] [stderr] 262 | /// Creates a FileVec<T> where each element is produced by calling f with that element’s index while walking forward through the `FileVec<T>` [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: unclosed HTML tag `E` [INFO] [stderr] --> src/vec.rs:491:82 [INFO] [stderr] | [INFO] [stderr] 491 | /// Returns the remaining spare capacity of the vector as a slice of MaybeUninit<E> [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] help: try marking as source code [INFO] [stderr] | [INFO] [stderr] 491 | /// Returns the remaining spare capacity of the vector as a slice of `MaybeUninit<E>` [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: unclosed HTML tag `T` [INFO] [stderr] --> src/vec.rs:493:125 [INFO] [stderr] | [INFO] [stderr] 493 | /// Returns vector content as a slice of T, along with the remaining spare capacity of the vector as a slice of MaybeUninit<T>. [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] help: try marking as source code [INFO] [stderr] | [INFO] [stderr] 493 | /// Returns vector content as a slice of T, along with the remaining spare capacity of the vector as a slice of `MaybeUninit<T>`. [INFO] [stderr] | + + [INFO] [stderr] [INFO] [stderr] warning: `file-vec` (lib doc) generated 7 warnings [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.50s [INFO] [stderr] Generated /opt/rustwide/target/x86_64-unknown-linux-gnu/doc/file_vec/index.html [INFO] running `Command { std: "docker" "stop" "-t" "1" "739baf8379c6a5a0269ba51b53733e51158a1e85bba30f29147c5cb1ecb6e4bd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "739baf8379c6a5a0269ba51b53733e51158a1e85bba30f29147c5cb1ecb6e4bd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "739baf8379c6a5a0269ba51b53733e51158a1e85bba30f29147c5cb1ecb6e4bd", kill_on_drop: false }` [INFO] [stdout] 739baf8379c6a5a0269ba51b53733e51158a1e85bba30f29147c5cb1ecb6e4bd