aligned_box 0.2.1

Allocate heap memory with user-specified alignment
Documentation
Build #355518 2021-02-27 21:40:35
# rustc version
rustc 1.52.0-nightly (9c09c1f7c 2021-02-26)# docs.rs version
docsrs 0.6.0 (78d4fc1 2021-02-22)# build log
[INFO] running `Command { std: "docker" "create" "-v" "/home/cratesfyi/workspace/builds/aligned_box-0.2.1/target:/opt/rustwide/target:rw,Z" "-v" "/home/cratesfyi/workspace/builds/aligned_box-0.2.1/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" "rustops/crates-build-env@sha256:f2f6bcd4b43ebee4e173f653a26493129bdb64017c85f916b780ca7fbdbaa79d" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "rustdoc" "--lib" "-Zrustdoc-map" "-Zunstable-options" "--config=doc.extern-map.registries.crates-io=\"https://docs.rs\"" "-j2" "--" "-Z" "unstable-options" "--resource-suffix" "-20210226-1.52.0-nightly-9c09c1f7c" "--static-root-path" "/" "--cap-lints" "warn" "--disable-per-crate-search", kill_on_drop: false }`
[INFO] [stdout] feee1d95dfb9cd721d472009921444c9438080fe69d5cf41e515a7dc6d65960e
[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" "feee1d95dfb9cd721d472009921444c9438080fe69d5cf41e515a7dc6d65960e", kill_on_drop: false }`
[INFO] [stderr] /opt/crates-build-env/entrypoint.sh: line 7: /etc/hosts: Permission denied
[INFO] [stderr]  Documenting aligned_box v0.2.1 (/opt/rustwide/workdir)
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]  --> src/lib.rs:5:1
[INFO] [stderr]   |
[INFO] [stderr] 5 | //! Allocate heap memory with user-specified alignment.
[INFO] [stderr]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr] note: the lint level is defined here
[INFO] [stderr]  --> src/lib.rs:2:9
[INFO] [stderr]   |
[INFO] [stderr] 2 | #![warn(missing_doc_code_examples)]
[INFO] [stderr]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]  --> src/lib.rs:7:1
[INFO] [stderr]   |
[INFO] [stderr] 7 | /// Error type for custom errors of `AlignedBox`.
[INFO] [stderr]   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]   --> src/lib.rs:30:1
[INFO] [stderr]    |
[INFO] [stderr] 30 | / /// A wrapper around `std::boxed::Box` which allows allocating aligned heap memory. An instance of
[INFO] [stderr] 31 | | /// `AlignedBox<T>` consists of a `Box<T>` and the `std::alloc::Layout` that has been used to
[INFO] [stderr] 32 | | /// allocate the referenced memory.
[INFO] [stderr]    | |___________________________________^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]    --> src/lib.rs:94:1
[INFO] [stderr]     |
[INFO] [stderr] 94  | / impl<T: ?Sized> AlignedBox<T> {
[INFO] [stderr] 95  | |     /// Decompose the `AlignedBox` into a raw pointer and the layout used during allocation.
[INFO] [stderr] 96  | |     /// The caller of this function becomes responsible for proper deallocation of the memory
[INFO] [stderr] 97  | |     /// behind the pointer. This can for example be done by reconstructing the `AlignedBox` using
[INFO] [stderr] ...   |
[INFO] [stderr] 122 | |     }
[INFO] [stderr] 123 | | }
[INFO] [stderr]     | |_^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]   --> src/lib.rs:95:5
[INFO] [stderr]    |
[INFO] [stderr] 95 | /     /// Decompose the `AlignedBox` into a raw pointer and the layout used during allocation.
[INFO] [stderr] 96 | |     /// The caller of this function becomes responsible for proper deallocation of the memory
[INFO] [stderr] 97 | |     /// behind the pointer. This can for example be done by reconstructing the `AlignedBox` using
[INFO] [stderr] 98 | |     /// `AlignedBox::from_raw_parts`.
[INFO] [stderr]    | |_____________________________________^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]    --> src/lib.rs:109:5
[INFO] [stderr]     |
[INFO] [stderr] 109 | /     /// Construct an `AlignedBox` from a raw pointer and the layout that has been used to allocate
[INFO] [stderr] 110 | |     /// the memory behind that pointer. After calling this function, the pointer is owned by the
[INFO] [stderr] 111 | |     /// `AlignedBox`. In particular, the memory will be freed when the `AlignedBox` is dropped.
[INFO] [stderr] 112 | |     /// This is only safe if the given layout is the same as the one that was used during memory
[INFO] [stderr] ...   |
[INFO] [stderr] 117 | |     /// behavior is undefined if the given layout does not correspond to the one used for
[INFO] [stderr] 118 | |     /// allocation.
[INFO] [stderr]     | |___________________^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]    --> src/lib.rs:125:1
[INFO] [stderr]     |
[INFO] [stderr] 125 | / impl<T> AlignedBox<T> {
[INFO] [stderr] 126 | |     fn allocate(
[INFO] [stderr] 127 | |         mut alignment: usize,
[INFO] [stderr] 128 | |         nelems: usize,
[INFO] [stderr] ...   |
[INFO] [stderr] 182 | |     }
[INFO] [stderr] 183 | | }
[INFO] [stderr]     | |_^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]    --> src/lib.rs:126:5
[INFO] [stderr]     |
[INFO] [stderr] 126 | /     fn allocate(
[INFO] [stderr] 127 | |         mut alignment: usize,
[INFO] [stderr] 128 | |         nelems: usize,
[INFO] [stderr] 129 | |     ) -> std::result::Result<(*mut T, std::alloc::Layout), std::boxed::Box<dyn std::error::Error>>
[INFO] [stderr] ...   |
[INFO] [stderr] 149 | |         Ok((ptr, layout))
[INFO] [stderr] 150 | |     }
[INFO] [stderr]     | |_____^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]    --> src/lib.rs:185:1
[INFO] [stderr]     |
[INFO] [stderr] 185 | / impl<T> AlignedBox<[T]> {
[INFO] [stderr] 186 | |     // Create a AlignedBox<[T]> where each value is initialized by the given initializer
[INFO] [stderr] 187 | |     // function.
[INFO] [stderr] 188 | |     //
[INFO] [stderr] ...   |
[INFO] [stderr] 313 | |     }
[INFO] [stderr] 314 | | }
[INFO] [stderr]     | |_^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]    --> src/lib.rs:193:5
[INFO] [stderr]     |
[INFO] [stderr] 193 | /     unsafe fn new_slice(
[INFO] [stderr] 194 | |         alignment: usize,
[INFO] [stderr] 195 | |         nelems: usize,
[INFO] [stderr] 196 | |         initializer: impl Fn(*mut T) -> (),
[INFO] [stderr] ...   |
[INFO] [stderr] 224 | |         Ok(b)
[INFO] [stderr] 225 | |     }
[INFO] [stderr]     | |_____^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]    --> src/lib.rs:236:5
[INFO] [stderr]     |
[INFO] [stderr] 236 | /     unsafe fn realloc(
[INFO] [stderr] 237 | |         &mut self,
[INFO] [stderr] 238 | |         nelems: usize,
[INFO] [stderr] 239 | |         initializer: impl Fn(*mut T) -> (),
[INFO] [stderr] ...   |
[INFO] [stderr] 312 | |         Ok(())
[INFO] [stderr] 313 | |     }
[INFO] [stderr]     | |_____^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]    --> src/lib.rs:316:1
[INFO] [stderr]     |
[INFO] [stderr] 316 | / impl<T: Default> AlignedBox<[T]> {
[INFO] [stderr] 317 | |     /// Allocate memory for `nelems` values of type `T` on the heap, making sure that it is aligned
[INFO] [stderr] 318 | |     /// to a multiple of `alignment`. All values are initialized by the default value of type `T`.
[INFO] [stderr] 319 | |     /// It is also checked if `alignment` is a valid alignment for type `T` or increased to a
[INFO] [stderr] ...   |
[INFO] [stderr] 382 | |     }
[INFO] [stderr] 383 | | }
[INFO] [stderr]     | |_^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]    --> src/lib.rs:385:1
[INFO] [stderr]     |
[INFO] [stderr] 385 | / impl<T: Copy> AlignedBox<[T]> {
[INFO] [stderr] 386 | |     /// Allocate memory for `nelems` values of type `T` on the heap, making sure that it is aligned
[INFO] [stderr] 387 | |     /// to a multiple of `alignment`. All values are initialized by copies of `value`. It is also
[INFO] [stderr] 388 | |     /// checked if `alignment` is a valid alignment for type `T` or increased to a
[INFO] [stderr] ...   |
[INFO] [stderr] 448 | |     }
[INFO] [stderr] 449 | | }
[INFO] [stderr]     | |_^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]   --> src/lib.rs:52:1
[INFO] [stderr]    |
[INFO] [stderr] 52 | / impl<T: ?Sized> Drop for AlignedBox<T> {
[INFO] [stderr] 53 | |     fn drop(&mut self) {
[INFO] [stderr] 54 | |         // SAFETY:
[INFO] [stderr] 55 | |         // * self being dropped right now, self.container is not used after taking the Box out of it
[INFO] [stderr] ...  |
[INFO] [stderr] 65 | |     }
[INFO] [stderr] 66 | | }
[INFO] [stderr]    | |_^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]   --> src/lib.rs:53:5
[INFO] [stderr]    |
[INFO] [stderr] 53 | /     fn drop(&mut self) {
[INFO] [stderr] 54 | |         // SAFETY:
[INFO] [stderr] 55 | |         // * self being dropped right now, self.container is not used after taking the Box out of it
[INFO] [stderr] 56 | |         let container = unsafe { std::mem::ManuallyDrop::take(&mut self.container) };
[INFO] [stderr] ...  |
[INFO] [stderr] 64 | |         }
[INFO] [stderr] 65 | |     }
[INFO] [stderr]    | |_____^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]   --> src/lib.rs:68:1
[INFO] [stderr]    |
[INFO] [stderr] 68 | / impl<T: Clone + ?Sized> Clone for AlignedBox<T> {
[INFO] [stderr] 69 | |     fn clone(&self) -> Self {
[INFO] [stderr] 70 | |         // SAFETY:
[INFO] [stderr] 71 | |         // layout is certainly valid as it has already been used to create self
[INFO] [stderr] ...  |
[INFO] [stderr] 91 | |     }
[INFO] [stderr] 92 | | }
[INFO] [stderr]    | |_^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]   --> src/lib.rs:69:5
[INFO] [stderr]    |
[INFO] [stderr] 69 | /     fn clone(&self) -> Self {
[INFO] [stderr] 70 | |         // SAFETY:
[INFO] [stderr] 71 | |         // layout is certainly valid as it has already been used to create self
[INFO] [stderr] 72 | |         let ptr = unsafe { std::alloc::alloc(self.layout) as *mut T };
[INFO] [stderr] ...  |
[INFO] [stderr] 90 | |         b
[INFO] [stderr] 91 | |     }
[INFO] [stderr]    | |_____^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]   --> src/lib.rs:38:1
[INFO] [stderr]    |
[INFO] [stderr] 38 | / impl<T: ?Sized> std::ops::Deref for AlignedBox<T> {
[INFO] [stderr] 39 | |     type Target = T;
[INFO] [stderr] 40 | |
[INFO] [stderr] 41 | |     fn deref(&self) -> &T {
[INFO] [stderr] 42 | |         &self.container
[INFO] [stderr] 43 | |     }
[INFO] [stderr] 44 | | }
[INFO] [stderr]    | |_^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]   --> src/lib.rs:41:5
[INFO] [stderr]    |
[INFO] [stderr] 41 | /     fn deref(&self) -> &T {
[INFO] [stderr] 42 | |         &self.container
[INFO] [stderr] 43 | |     }
[INFO] [stderr]    | |_____^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]   --> src/lib.rs:46:1
[INFO] [stderr]    |
[INFO] [stderr] 46 | / impl<T: ?Sized> std::ops::DerefMut for AlignedBox<T> {
[INFO] [stderr] 47 | |     fn deref_mut(&mut self) -> &mut T {
[INFO] [stderr] 48 | |         &mut self.container
[INFO] [stderr] 49 | |     }
[INFO] [stderr] 50 | | }
[INFO] [stderr]    | |_^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]   --> src/lib.rs:47:5
[INFO] [stderr]    |
[INFO] [stderr] 47 | /     fn deref_mut(&mut self) -> &mut T {
[INFO] [stderr] 48 | |         &mut self.container
[INFO] [stderr] 49 | |     }
[INFO] [stderr]    | |_____^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]  --> src/lib.rs:8:10
[INFO] [stderr]   |
[INFO] [stderr] 8 | #[derive(Debug)]
[INFO] [stderr]   |          ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]   --> src/lib.rs:20:1
[INFO] [stderr]    |
[INFO] [stderr] 20 | / impl std::fmt::Display for AlignedBoxError {
[INFO] [stderr] 21 | |     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
[INFO] [stderr] 22 | |         match self {
[INFO] [stderr] 23 | |             AlignedBoxError::TooManyElements => write!(f, "Too many elements for a slice."),
[INFO] [stderr] ...  |
[INFO] [stderr] 27 | |     }
[INFO] [stderr] 28 | | }
[INFO] [stderr]    | |_^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]   --> src/lib.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | /     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
[INFO] [stderr] 22 | |         match self {
[INFO] [stderr] 23 | |             AlignedBoxError::TooManyElements => write!(f, "Too many elements for a slice."),
[INFO] [stderr] 24 | |             AlignedBoxError::OutOfMemory => write!(f, "Memory allocation failed. Out of memory?"),
[INFO] [stderr] 25 | |             AlignedBoxError::ZeroAlloc => write!(f, "Zero byte allocations not supported."),
[INFO] [stderr] 26 | |         }
[INFO] [stderr] 27 | |     }
[INFO] [stderr]    | |_____^
[INFO] [stderr] 
[INFO] [stderr] warning: missing code example in this documentation
[INFO] [stderr]   --> src/lib.rs:18:1
[INFO] [stderr]    |
[INFO] [stderr] 18 | impl std::error::Error for AlignedBoxError {}
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: 25 warnings emitted
[INFO] [stderr] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 1.67s
[INFO] running `Command { std: "docker" "inspect" "feee1d95dfb9cd721d472009921444c9438080fe69d5cf41e515a7dc6d65960e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "feee1d95dfb9cd721d472009921444c9438080fe69d5cf41e515a7dc6d65960e", kill_on_drop: false }`
[INFO] [stdout] feee1d95dfb9cd721d472009921444c9438080fe69d5cf41e515a7dc6d65960e