binary-layout 2.0.0

The binary-layout library allows type-safe, inplace, zero-copy access to structured binary data. You define a custom data layout and give it a slice of binary data, and it will allow you to read and write the fields defined in the layout from the binary data without having to copy any of the data. It's similar to transmuting to/from a `#[repr(packed)]` struct, but much safer.
Documentation
Build #412993 2021-07-19 05:58:21

# rustc version rustc 1.55.0-nightly (59216858a 2021-07-18)

# docs.rs version docsrs 0.6.0 (843531f 2021-06-26)

# build log [INFO] running `Command { std: "docker" "create" "-v" "/home/cratesfyi/workspace/builds/binary-layout-2.0.0/target:/opt/rustwide/target:rw,Z" "-v" "/home/cratesfyi/workspace/builds/binary-layout-2.0.0/source:/opt/rustwide/workdir:ro,Z" "-v" "/home/cratesfyi/workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/home/cratesfyi/workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "DOCS_RS=1" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "3221225472" "--cpus" "2" "--user" "1001:1001" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:bf3311aec13679c042c55305eed4f6f98359c47a37eb765a3317ad487259f4e0" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "rustdoc" "--lib" "-Zrustdoc-map" "-Zunstable-options" "--config=doc.extern-map.registries.crates-io=\"https://docs.rs/{pkg_name}/{version}/x86_64-unknown-linux-gnu\"" "-j2" "--" "-Z" "unstable-options" "--emit=invocation-specific" "--resource-suffix" "-20210718-1.55.0-nightly-59216858a" "--static-root-path" "/" "--cap-lints" "warn" "--disable-per-crate-search", kill_on_drop: false }` [INFO] [stdout] 400a1b5dec5a3c54870e82cf44c058cb9bfa6419d7ec8e92448528905ca0de74 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "400a1b5dec5a3c54870e82cf44c058cb9bfa6419d7ec8e92448528905ca0de74", kill_on_drop: false }` [INFO] [stderr] Documenting binary-layout v2.0.0 (/opt/rustwide/workdir) [INFO] [stderr] warning: incompatible link kind for `FieldView` [INFO] [stderr] --> src/lib.rs:82:244 [INFO] [stderr] | [INFO] [stderr] 82 | ...the example above. See [trait@FieldView] for another example. [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: to link to the struct, prefix with `struct@`: `struct@FieldView` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(rustdoc::broken_intra_doc_links)]` on by default [INFO] [stderr] = note: this link resolved to a struct, which is not a trait [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `Field::read` [INFO] [stderr] --> src/lib.rs:89:53 [INFO] [stderr] | [INFO] [stderr] 89 | //! For these fields, the [trait@Field] API offers [Field::read], [Field::write] and the [struct@FieldView] API offers [FieldView::read] ... [INFO] [stderr] | ^^^^^^^^^^^ the trait `Field` has no associated item named `read` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `Field::write` [INFO] [stderr] --> src/lib.rs:89:68 [INFO] [stderr] | [INFO] [stderr] 89 | //! For these fields, the [trait@Field] API offers [Field::read], [Field::write] and the [struct@FieldView] API offers [FieldView::read] ... [INFO] [stderr] | ^^^^^^^^^^^^ the trait `Field` has no associated item named `write` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `Field::data` [INFO] [stderr] --> src/lib.rs:92:53 [INFO] [stderr] | [INFO] [stderr] 92 | //! For these fields, the [trait@Field] API offers [Field::data], [Field::data_mut], and the [struct@FieldView] API offers [FieldView::da... [INFO] [stderr] | ^^^^^^^^^^^ the trait `Field` has no associated item named `data` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `Field::data_mut` [INFO] [stderr] --> src/lib.rs:92:68 [INFO] [stderr] | [INFO] [stderr] 92 | ...d] API offers [Field::data], [Field::data_mut], and the [struct@FieldView] API offers [FieldView::data] and [FieldView::data_mut]. [INFO] [stderr] | ^^^^^^^^^^^^^^^ the trait `Field` has no associated item named `data_mut` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `Field::data` [INFO] [stderr] --> src/lib.rs:97:53 [INFO] [stderr] | [INFO] [stderr] 97 | //! For these fields, the [trait@Field] API offers [Field::data], [Field::data_mut] and the [struct@FieldView] API offers [FieldView::dat... [INFO] [stderr] | ^^^^^^^^^^^ the trait `Field` has no associated item named `data` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `Field::data_mut` [INFO] [stderr] --> src/lib.rs:97:68 [INFO] [stderr] | [INFO] [stderr] 97 | ...d] API offers [Field::data], [Field::data_mut] and the [struct@FieldView] API offers [FieldView::data], [FieldView::data_mut] and [Fie... [INFO] [stderr] | ^^^^^^^^^^^^^^^ the trait `Field` has no associated item named `data_mut` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `PrimitiveField` [INFO] [stderr] --> src/fields/wrapped.rs:43:49 [INFO] [stderr] | [INFO] [stderr] 43 | /// A [WrappedField] is a [Field] that, unlike [PrimitiveField], does not directly represents a primitive type. [INFO] [stderr] | ^^^^^^^^^^^^^^ no item named `PrimitiveField` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `FieldView` [INFO] [stderr] --> src/fields/mod.rs:13:25 [INFO] [stderr] | [INFO] [stderr] 13 | /// take a look at the [FieldView] based API instead. [INFO] [stderr] | ^^^^^^^^^ no item named `FieldView` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `LittleEndian` [INFO] [stderr] --> src/fields/mod.rs:53:46 [INFO] [stderr] | [INFO] [stderr] 53 | /// The endianness of the field. Can be [LittleEndian] or [BigEndian]. [INFO] [stderr] | ^^^^^^^^^^^^ no item named `LittleEndian` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `BigEndian` [INFO] [stderr] --> src/fields/mod.rs:53:64 [INFO] [stderr] | [INFO] [stderr] 53 | /// The endianness of the field. Can be [LittleEndian] or [BigEndian]. [INFO] [stderr] | ^^^^^^^^^ no item named `BigEndian` in scope [INFO] [stderr] | [INFO] [stderr] = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `self::FieldMetadata::OFFSET` [INFO] [stderr] --> src/macro_define_layout.rs:41:32 [INFO] [stderr] | [INFO] [stderr] 41 | /// - metadata like [OFFSET](crate::FieldMetadata::OFFSET) and [SIZE](crate::SizedFieldMetadata::SIZE) as rust `const`s [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no item named `FieldMetadata` in module `binary_layout` [INFO] [stderr] [INFO] [stderr] warning: unresolved link to `self::SizedFieldMetadata::SIZE` [INFO] [stderr] --> src/macro_define_layout.rs:41:73 [INFO] [stderr] | [INFO] [stderr] 41 | /// - metadata like [OFFSET](crate::FieldMetadata::OFFSET) and [SIZE](crate::SizedFieldMetadata::SIZE) as rust `const`s [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no item named `SizedFieldMetadata` in module `binary_layout` [INFO] [stderr] [INFO] [stderr] warning: 13 warnings emitted [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.78s [INFO] running `Command { std: "docker" "inspect" "400a1b5dec5a3c54870e82cf44c058cb9bfa6419d7ec8e92448528905ca0de74", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "400a1b5dec5a3c54870e82cf44c058cb9bfa6419d7ec8e92448528905ca0de74", kill_on_drop: false }` [INFO] [stdout] 400a1b5dec5a3c54870e82cf44c058cb9bfa6419d7ec8e92448528905ca0de74