From 233f7eb2db09ca514a55fa325762c31a2ca8273e Mon Sep 17 00:00:00 2001 From: korken89 Date: Wed, 25 Aug 2021 16:34:07 +0000 Subject: [PATCH] deploy: f76a8bdb97da2f72d77a0d2113082d35899bf148 --- heapless/pool/enum.Init.html | 2 +- heapless/pool/enum.Uninit.html | 2 +- heapless/pool/index.html | 7 ++- heapless/pool/singleton/index.html | 2 +- heapless/pool/singleton/struct.Box.html | 34 ++++++------- heapless/pool/singleton/trait.Pool.html | 10 ++-- heapless/pool/struct.Box.html | 28 +++++------ heapless/pool/struct.Node.html | 2 +- heapless/pool/struct.Pool.html | 14 +++--- search-index.js | 2 +- src/heapless/pool/cas.rs.html | 64 ++++++++++++++++++------- src/heapless/pool/mod.rs.html | 38 +++++++++++---- src/heapless/pool/singleton.rs.html | 8 +++- 13 files changed, 136 insertions(+), 77 deletions(-) diff --git a/heapless/pool/enum.Init.html b/heapless/pool/enum.Init.html index 9a32909a..a840d6cd 100644 --- a/heapless/pool/enum.Init.html +++ b/heapless/pool/enum.Init.html @@ -1,6 +1,6 @@ Init in heapless::pool - Rust -

Enum heapless::pool::Init[][src]

pub enum Init {}
Expand description

Initialized type state

+

Enum heapless::pool::Init[][src]

pub enum Init {}
Expand description

Initialized type state

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/heapless/pool/enum.Uninit.html b/heapless/pool/enum.Uninit.html index c0d872a3..9ebf7243 100644 --- a/heapless/pool/enum.Uninit.html +++ b/heapless/pool/enum.Uninit.html @@ -1,6 +1,6 @@ Uninit in heapless::pool - Rust -

Enum heapless::pool::Uninit[][src]

pub enum Uninit {}
Expand description

Uninitialized type state

+

Enum heapless::pool::Uninit[][src]

pub enum Uninit {}
Expand description

Uninitialized type state

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

diff --git a/heapless/pool/index.html b/heapless/pool/index.html index bf31abe5..ed99aade 100644 --- a/heapless/pool/index.html +++ b/heapless/pool/index.html @@ -1,6 +1,6 @@ heapless::pool - Rust -

Module heapless::pool[][src]

Expand description

A heap-less, interrupt-safe, lock-free memory pool (*)

+

Module heapless::pool[][src]

Expand description

A heap-less, interrupt-safe, lock-free memory pool (*)

NOTE: This module is not available on targets that do not support CAS operations, e.g. ARMv6-M

(*) Currently, the implementation is only lock-free and Sync on ARMv7-{A,R,M} & ARMv8-M devices

@@ -134,7 +134,8 @@ problem on Cortex-M.

while the current core is somewhere between LDREX and STREX then the current core will fail its STREX operation.

x86_64 support / limitations

-

NOTE Pool is only Sync on x86_64 if the Cargo feature “x86-sync-pool” is enabled

+

NOTE Pool is only Sync on x86_64 and x86 (i686) if the Cargo feature “x86-sync-pool” +is enabled

x86_64 support is a gamble. Yes, a gamble. Do you feel lucky enough to use Pool on x86_64?

As it’s not possible to implement ideal LL/SC semantics (*) on x86_64 the architecture is susceptible to the ABA problem described above. To reduce the chances of ABA occurring in @@ -176,6 +177,8 @@ the technique appears to be documented in “ABA Prevention Using Single-Word In is not public AFAICT – but hazard pointers require Thread Local Storage (TLS), which is a non-starter for a no_std library like heapless.

x86_64 Limitations

+

NOTE this limitation does not apply to x86 (32-bit address space). If you run into this +issue, on an x86_64 processor try running your code compiled for x86, e.g. cargo run --target i686-unknown-linux-musl

Because stack nodes must be located within +- 2 GB of the hidden ANCHOR variable, which lives in the .bss section, Pool may not be able to manage static references created using Box::leak – these heap allocated chunks of memory may live in a very different address space. diff --git a/heapless/pool/singleton/index.html b/heapless/pool/singleton/index.html index ab40bb24..ec87367d 100644 --- a/heapless/pool/singleton/index.html +++ b/heapless/pool/singleton/index.html @@ -1,6 +1,6 @@ heapless::pool::singleton - Rust -

Module heapless::pool::singleton[][src]

Expand description

Pool as a global singleton

+

Module heapless::pool::singleton[][src]

Expand description

Pool as a global singleton

Structs

Box

A memory block that belongs to the global memory pool, POOL

Traits

diff --git a/heapless/pool/singleton/struct.Box.html b/heapless/pool/singleton/struct.Box.html index 7560a5af..82f18cc8 100644 --- a/heapless/pool/singleton/struct.Box.html +++ b/heapless/pool/singleton/struct.Box.html @@ -1,38 +1,38 @@ Box in heapless::pool::singleton - Rust -

Struct heapless::pool::singleton::Box[][src]

pub struct Box<POOL, STATE = Init> where
    POOL: Pool,
    STATE: 'static, 
{ /* fields omitted */ }
Expand description

A memory block that belongs to the global memory pool, POOL

-

Implementations

Initializes this memory block

-
👎 Deprecated since 0.7.3:

This can access uninitialized memory, use init(..) instead (https://github.com/japaric/heapless/issues/212)

+

Struct heapless::pool::singleton::Box[][src]

pub struct Box<POOL, STATE = Init> where
    POOL: Pool,
    STATE: 'static, 
{ /* fields omitted */ }
Expand description

A memory block that belongs to the global memory pool, POOL

+

Implementations

Initializes this memory block

+
👎 Deprecated since 0.7.3:

This can access uninitialized memory, use init(..) instead (https://github.com/japaric/heapless/issues/212)

(DO NOT USE, SEE DEPRECATION) Freezes the contents of this memory block

See rust-lang/rust#58363 for details.

-

Forgets the contents of this memory block without running its destructor.

+

Forgets the contents of this memory block without running its destructor.

Note that this this does not return the memory block to the pool. The block can be reused, or returned to the pool by dropping it.

-

Trait Implementations

Performs the conversion.

-

Performs the conversion.

-

Formats the value using the given formatter. Read more

-

The resulting type after dereferencing.

-

Dereferences the value.

-

Mutably dereferences the value.

-

Formats the value using the given formatter. Read more

-

Executes the destructor for this type. Read more

-

Feeds this value into the given Hasher. Read more

+

Trait Implementations

Performs the conversion.

+

Performs the conversion.

+

Formats the value using the given formatter. Read more

+

The resulting type after dereferencing.

+

Dereferences the value.

+

Mutably dereferences the value.

+

Formats the value using the given formatter. Read more

+

Executes the destructor for this type. Read more

+

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

-

This method returns an Ordering between self and other. Read more

+

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

-

This method tests for self and other values to be equal, and is used +

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

-

This method returns an ordering between self and other values if one exists. Read more

+

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/heapless/pool/singleton/trait.Pool.html b/heapless/pool/singleton/trait.Pool.html index c3cb99ac..33832470 100644 --- a/heapless/pool/singleton/trait.Pool.html +++ b/heapless/pool/singleton/trait.Pool.html @@ -1,6 +1,6 @@ Pool in heapless::pool::singleton - Rust -

Trait heapless::pool::singleton::Pool[][src]

pub trait Pool {
+

Trait heapless::pool::singleton::Pool[][src]

pub trait Pool {
     type Data: 'static;
     fn alloc() -> Option<Box<Self, Uninit>>
    where
        Self: Sized
, { ... } @@ -8,14 +8,14 @@
fn grow_exact<A>(memory: &'static mut MaybeUninit<A>) -> usize
    where
        A: AsMut<[Node<Self::Data>]>
, { ... } }
Expand description

A global singleton memory pool

-

Associated Types

The type of data that can be allocated on this pool

-

Provided methods

Claims a memory block from the pool

+

Associated Types

The type of data that can be allocated on this pool

+

Provided methods

Claims a memory block from the pool

Returns None when the pool is observed as exhausted

NOTE: This method does not have bounded execution time; i.e. it contains a CAS loop

-

Increases the capacity of the pool

+

Increases the capacity of the pool

This method might not fully utilize the given memory block due to alignment requirements

This method returns the number of new blocks that can be allocated.

-

Increases the capacity of the pool

+

Increases the capacity of the pool

Unlike Pool.grow this method fully utilizes the given memory block

Implementors

\ No newline at end of file diff --git a/heapless/pool/struct.Box.html b/heapless/pool/struct.Box.html index fe73d467..ea406ab5 100644 --- a/heapless/pool/struct.Box.html +++ b/heapless/pool/struct.Box.html @@ -1,31 +1,31 @@ Box in heapless::pool - Rust -

Struct heapless::pool::Box[][src]

pub struct Box<T, STATE = Init> { /* fields omitted */ }
Expand description

A memory block

-

Implementations

Initializes this memory block

-

Trait Implementations

Performs the conversion.

-

Performs the conversion.

-

Formats the value using the given formatter. Read more

-

The resulting type after dereferencing.

-

Dereferences the value.

-

Mutably dereferences the value.

-

Formats the value using the given formatter. Read more

-

Feeds this value into the given Hasher. Read more

+

Struct heapless::pool::Box[][src]

pub struct Box<T, STATE = Init> { /* fields omitted */ }
Expand description

A memory block

+

Implementations

Initializes this memory block

+

Trait Implementations

Performs the conversion.

+

Performs the conversion.

+

Formats the value using the given formatter. Read more

+

The resulting type after dereferencing.

+

Dereferences the value.

+

Mutably dereferences the value.

+

Formats the value using the given formatter. Read more

+

Feeds this value into the given Hasher. Read more

Feeds a slice of this type into the given Hasher. Read more

-

This method returns an Ordering between self and other. Read more

+

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

Restrict a value to a certain interval. Read more

-

This method tests for self and other values to be equal, and is used +

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

-

This method returns an ordering between self and other values if one exists. Read more

+

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

-

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/heapless/pool/struct.Node.html b/heapless/pool/struct.Node.html index 175f57b1..66267228 100644 --- a/heapless/pool/struct.Node.html +++ b/heapless/pool/struct.Node.html @@ -1,6 +1,6 @@ Node in heapless::pool - Rust -

Struct heapless::pool::Node[][src]

pub struct Node<T> { /* fields omitted */ }
Expand description

Unfortunate implementation detail required to use the +

Struct heapless::pool::Node[][src]

pub struct Node<T> { /* fields omitted */ }
Expand description

Unfortunate implementation detail required to use the Pool.grow_exact method

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

diff --git a/heapless/pool/struct.Pool.html b/heapless/pool/struct.Pool.html index 8eb741e0..c1721c35 100644 --- a/heapless/pool/struct.Pool.html +++ b/heapless/pool/struct.Pool.html @@ -1,20 +1,20 @@ Pool in heapless::pool - Rust -

Struct heapless::pool::Pool[][src]

pub struct Pool<T> { /* fields omitted */ }
Expand description

A lock-free memory pool

-

Implementations

Creates a new empty pool

-

Claims a memory block from the pool

+

Struct heapless::pool::Pool[][src]

pub struct Pool<T> { /* fields omitted */ }
Expand description

A lock-free memory pool

+

Implementations

Creates a new empty pool

+

Claims a memory block from the pool

Returns None when the pool is observed as exhausted

NOTE: This method does not have bounded execution time because it contains a CAS loop

-

Returns a memory block to the pool

+

Returns a memory block to the pool

NOTE: T’s destructor (if any) will run on value iff S = Init

NOTE: This method does not have bounded execution time because it contains a CAS loop

-

Increases the capacity of the pool

+

Increases the capacity of the pool

This method might not fully utilize the given memory block due to alignment requirements.

This method returns the number of new blocks that can be allocated.

-

Increases the capacity of the pool

+

Increases the capacity of the pool

Unlike Pool.grow this method fully utilizes the given memory block

-

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

+

Trait Implementations

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

diff --git a/search-index.js b/search-index.js index 7227c786..5fce2202 100644 --- a/search-index.js +++ b/search-index.js @@ -1,7 +1,7 @@ var searchIndex = JSON.parse('{\ "byteorder":{"doc":"This crate provides convenience methods for encoding and …","t":[6,4,8,6,4,6,6,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,10,11,11,11,11,11,11,10,11,11,10,11,11,10,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,10,11,11,10,11,11,10,11,11,11,10,11,11,10,11,11,11,10,11,11,10,11,11,10,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,10,11,11,10,11,11,10,11,11,11,10,11,11,10,11,11,11,10,11,11,10,11,11,10,11,11,10,11,11],"n":["BE","BigEndian","ByteOrder","LE","LittleEndian","NativeEndian","NetworkEndian","borrow","borrow","borrow_mut","borrow_mut","clone","clone","cmp","cmp","default","default","eq","eq","fmt","fmt","from","from","from_slice_f32","from_slice_f32","from_slice_f32","from_slice_f64","from_slice_f64","from_slice_f64","from_slice_i128","from_slice_i16","from_slice_i32","from_slice_i64","from_slice_u128","from_slice_u128","from_slice_u128","from_slice_u16","from_slice_u16","from_slice_u16","from_slice_u32","from_slice_u32","from_slice_u32","from_slice_u64","from_slice_u64","from_slice_u64","hash","hash","into","into","partial_cmp","partial_cmp","read_f32","read_f32_into","read_f32_into_unchecked","read_f64","read_f64_into","read_f64_into_unchecked","read_i128","read_i128_into","read_i16","read_i16_into","read_i24","read_i32","read_i32_into","read_i48","read_i64","read_i64_into","read_int","read_int128","read_u128","read_u128","read_u128","read_u128_into","read_u128_into","read_u128_into","read_u16","read_u16","read_u16","read_u16_into","read_u16_into","read_u16_into","read_u24","read_u32","read_u32","read_u32","read_u32_into","read_u32_into","read_u32_into","read_u48","read_u64","read_u64","read_u64","read_u64_into","read_u64_into","read_u64_into","read_uint","read_uint","read_uint","read_uint128","read_uint128","read_uint128","try_from","try_from","try_into","try_into","type_id","type_id","write_f32","write_f32_into","write_f64","write_f64_into","write_i128","write_i128_into","write_i16","write_i16_into","write_i24","write_i32","write_i32_into","write_i48","write_i64","write_i64_into","write_i8_into","write_int","write_int128","write_u128","write_u128","write_u128","write_u128_into","write_u128_into","write_u128_into","write_u16","write_u16","write_u16","write_u16_into","write_u16_into","write_u16_into","write_u24","write_u32","write_u32","write_u32","write_u32_into","write_u32_into","write_u32_into","write_u48","write_u64","write_u64","write_u64","write_u64_into","write_u64_into","write_u64_into","write_uint","write_uint","write_uint","write_uint128","write_uint128","write_uint128"],"q":["byteorder","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["A type alias for BigEndian.","Defines big-endian serialization.","ByteOrder describes types that can serialize integers as …","A type alias for LittleEndian.","Defines little-endian serialization.","Defines system native-endian serialization.","Defines network byte order serialization.","","","","","","","","","","","","","","","","","Converts the given slice of IEEE754 single-precision (4 …","","","Converts the given slice of IEEE754 double-precision (8 …","","","Converts the given slice of signed 128 bit integers to a …","Converts the given slice of signed 16 bit integers to a …","Converts the given slice of signed 32 bit integers to a …","Converts the given slice of signed 64 bit integers to a …","Converts the given slice of unsigned 128 bit integers to …","","","Converts the given slice of unsigned 16 bit integers to a …","","","Converts the given slice of unsigned 32 bit integers to a …","","","Converts the given slice of unsigned 64 bit integers to a …","","","","","","","","","Reads a IEEE754 single-precision (4 bytes) floating point …","Reads IEEE754 single-precision (4 bytes) floating point …","DEPRECATED.","Reads a IEEE754 double-precision (8 bytes) floating point …","Reads IEEE754 single-precision (4 bytes) floating point …","DEPRECATED.","Reads a signed 128 bit integer from buf.","Reads signed 128 bit integers from src into dst.","Reads a signed 16 bit integer from buf.","Reads signed 16 bit integers from src to dst.","Reads a signed 24 bit integer from buf, stored in i32.","Reads a signed 32 bit integer from buf.","Reads signed 32 bit integers from src into dst.","Reads a signed 48 bit integer from buf, stored in i64.","Reads a signed 64 bit integer from buf.","Reads signed 64 bit integers from src into dst.","Reads a signed n-bytes integer from buf.","Reads a signed n-bytes integer from buf.","Reads an unsigned 128 bit integer from buf.","","","Reads unsigned 128 bit integers from src into dst.","","","Reads an unsigned 16 bit integer from buf.","","","Reads unsigned 16 bit integers from src into dst.","","","Reads an unsigned 24 bit integer from buf, stored in u32.","Reads an unsigned 32 bit integer from buf.","","","Reads unsigned 32 bit integers from src into dst.","","","Reads an unsigned 48 bit integer from buf, stored in u64.","Reads an unsigned 64 bit integer from buf.","","","Reads unsigned 64 bit integers from src into dst.","","","Reads an unsigned n-bytes integer from buf.","","","Reads an unsigned n-bytes integer from buf.","","","","","","","","","Writes a IEEE754 single-precision (4 bytes) floating …","Writes IEEE754 single-precision (4 bytes) floating point …","Writes a IEEE754 double-precision (8 bytes) floating …","Writes IEEE754 double-precision (8 bytes) floating point …","Writes a signed 128 bit integer n to buf.","Writes signed 128 bit integers from src into dst.","Writes a signed 16 bit integer n to buf.","Writes signed 16 bit integers from src into dst.","Writes a signed 24 bit integer n to buf, stored in i32.","Writes a signed 32 bit integer n to buf.","Writes signed 32 bit integers from src into dst.","Writes a signed 48 bit integer n to buf, stored in i64.","Writes a signed 64 bit integer n to buf.","Writes signed 64 bit integers from src into dst.","Writes signed 8 bit integers from src into dst.","Writes a signed integer n to buf using only nbytes.","Writes a signed integer n to buf using only nbytes.","Writes an unsigned 128 bit integer n to buf.","","","Writes unsigned 128 bit integers from src into dst.","","","Writes an unsigned 16 bit integer n to buf.","","","Writes unsigned 16 bit integers from src into dst.","","","Writes an unsigned 24 bit integer n to buf, stored in u32.","Writes an unsigned 32 bit integer n to buf.","","","Writes unsigned 32 bit integers from src into dst.","","","Writes an unsigned 48 bit integer n to buf, stored in u64.","Writes an unsigned 64 bit integer n to buf.","","","Writes unsigned 64 bit integers from src into dst.","","","Writes an unsigned integer n to buf using only nbytes.","","","Writes an unsigned integer n to buf using only nbytes.","",""],"i":[0,0,0,0,0,0,0,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,3,1,2,3,1,2,3,3,3,3,3,1,2,3,1,2,3,1,2,3,1,2,1,2,1,2,1,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,2,3,1,2,3,1,2,3,1,2,3,3,1,2,3,1,2,3,3,1,2,3,1,2,3,1,2,3,1,2,1,2,1,2,1,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,2,3,1,2,3,1,2,3,1,2,3,3,1,2,3,1,2,3,3,1,2,3,1,2,3,1,2,3,1,2],"f":[null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[],["bigendian",4]],[[],["littleendian",4]],[[["bigendian",4]],["ordering",4]],[[["littleendian",4]],["ordering",4]],[[],["bigendian",4]],[[],["littleendian",4]],[[["bigendian",4]],["bool",15]],[[["littleendian",4]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["bigendian",4]],[["ordering",4],["option",4]]],[[["littleendian",4]],[["ordering",4],["option",4]]],[[],["f32",15]],[[]],[[]],[[],["f64",15]],[[]],[[]],[[],["i128",15]],[[]],[[],["i16",15]],[[]],[[],["i32",15]],[[],["i32",15]],[[]],[[],["i64",15]],[[],["i64",15]],[[]],[[["usize",15]],["i64",15]],[[["usize",15]],["i128",15]],[[],["u128",15]],[[],["u128",15]],[[],["u128",15]],[[]],[[]],[[]],[[],["u16",15]],[[],["u16",15]],[[],["u16",15]],[[]],[[]],[[]],[[],["u32",15]],[[],["u32",15]],[[],["u32",15]],[[],["u32",15]],[[]],[[]],[[]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[],["u64",15]],[[]],[[]],[[]],[[["usize",15]],["u64",15]],[[["usize",15]],["u64",15]],[[["usize",15]],["u64",15]],[[["usize",15]],["u128",15]],[[["usize",15]],["u128",15]],[[["usize",15]],["u128",15]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[["f32",15]]],[[]],[[["f64",15]]],[[]],[[["i128",15]]],[[]],[[["i16",15]]],[[]],[[["i32",15]]],[[["i32",15]]],[[]],[[["i64",15]]],[[["i64",15]]],[[]],[[]],[[["i64",15],["usize",15]]],[[["usize",15],["i128",15]]],[[["u128",15]]],[[["u128",15]]],[[["u128",15]]],[[]],[[]],[[]],[[["u16",15]]],[[["u16",15]]],[[["u16",15]]],[[]],[[]],[[]],[[["u32",15]]],[[["u32",15]]],[[["u32",15]]],[[["u32",15]]],[[]],[[]],[[]],[[["u64",15]]],[[["u64",15]]],[[["u64",15]]],[[["u64",15]]],[[]],[[]],[[]],[[["usize",15],["u64",15]]],[[["usize",15],["u64",15]]],[[["usize",15],["u64",15]]],[[["u128",15],["usize",15]]],[[["u128",15],["usize",15]]],[[["u128",15],["usize",15]]]],"p":[[4,"BigEndian"],[4,"LittleEndian"],[8,"ByteOrder"]]},\ "hash32":{"doc":"32-bit hashing machinery","t":[8,3,3,8,8,16,3,11,11,11,11,11,11,10,11,11,11,11,11,11,10,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11],"n":["BuildHasher","BuildHasherDefault","FnvHasher","Hash","Hasher","Hasher","Murmur3Hasher","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","build_hasher","build_hasher","clone","default","default","default","eq","finish","finish","finish","fmt","from","from","from","hash","hash_slice","into","into","into","new","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","write","write","write"],"q":["hash32","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["See core::hash::BuildHasher for details","See core::hash::BuildHasherDefault for details","32-bit Fowler-Noll-Vo hasher","See core::hash::Hash for details","See core::hash::Hasher for details","See core::hash::BuildHasher::Hasher","32-bit MurmurHash3 hasher","","","","","","","See core::hash::BuildHasher.build_hasher","","","","","","","See core::hash::Hasher.finish","","","","","","","Feeds this value into the given Hasher.","Feeds a slice of this type into the given Hasher.","","","","const constructor","","","","","","","","","","See core::hash::Hasher.write","",""],"i":[0,0,0,0,0,1,0,2,3,4,2,3,4,1,4,4,2,3,4,4,5,2,3,4,2,3,4,6,6,2,3,4,4,2,3,4,2,3,4,2,3,4,5,2,3],"f":[null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["buildhasherdefault",3]],["bool",15]],[[],["u32",15]],[[],["u32",15]],[[],["u32",15]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[]],[[]],[[]]],"p":[[8,"BuildHasher"],[3,"FnvHasher"],[3,"Murmur3Hasher"],[3,"BuildHasherDefault"],[8,"Hasher"],[8,"Hash"]]},\ -"heapless":{"doc":"static friendly data structures that don’t require …","t":[3,6,6,3,3,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,4,4,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,6,6,6,6,6,6,11,11,11,11,11,11,11,11,11,11,11,3,4,3,3,4,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,16,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,3,3,3,3,3,3,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["Deque","FnvIndexMap","FnvIndexSet","HistoryBuffer","IndexMap","IndexSet","LinearMap","String","Vec","as_mut","as_mut","as_mut_slices","as_mut_str","as_mut_vec","as_ref","as_ref","as_ref","as_ref","as_ref","as_slice","as_slice","as_slices","as_str","back","back_mut","binary_heap","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","capacity","capacity","capacity","capacity","capacity","capacity","capacity","clear","clear","clear","clear","clear","clear","clear","clear_with","clone","clone","clone","clone","clone","clone","cmp","cmp","contains","contains_key","contains_key","default","default","default","default","default","default","default","deref","deref","deref","deref_mut","deref_mut","difference","drop","drop","drop","drop","ends_with","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend_from_slice","extend_from_slice","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_iter","from_iter","from_iter","from_iter","from_slice","from_str","front","front_mut","get","get","get_mut","get_mut","hash","hash","hash","hash","index","index","index_mut","index_mut","insert","insert","insert","intersection","into","into","into","into","into","into","into","into_array","into_bytes","into_iter","into_iter","is_disjoint","is_empty","is_empty","is_empty","is_empty","is_empty","is_full","is_full","is_subset","is_superset","iter","iter","iter","iter","iter_mut","iter_mut","iter_mut","keys","keys","len","len","len","len","len","mpmc","ne","ne","ne","new","new","new","new","new","new","new","new_with","partial_cmp","partial_cmp","pool","pop","pop","pop_back","pop_front","pop_unchecked","push","push","push_back","push_back_unchecked","push_front","push_front_unchecked","push_str","push_unchecked","recent","remove","remove","remove","resize","resize_default","set_len","sorted_linked_list","spsc","starts_with","swap_remove","swap_remove","swap_remove_unchecked","symmetric_difference","truncate","truncate","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","values","values","values_mut","values_mut","write","write_char","write_str","write_str","BinaryHeap","Max","Min","PeekMut","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","capacity","clear","clone","default","deref","deref_mut","drop","drop","fmt","from","from","from","from","into","into","into","into","is_empty","iter","iter_mut","len","new","peek","peek_mut","pop","pop","pop_unchecked","push","push_unchecked","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","MpMcQueue","Q16","Q2","Q32","Q4","Q64","Q8","borrow","borrow_mut","default","dequeue","enqueue","from","into","new","try_from","try_into","type_id","Box","Init","Node","Pool","Uninit","alloc","as_mut","as_ref","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cmp","deref","deref_mut","eq","fmt","fmt","free","from","from","from","from","from","grow","grow_exact","hash","init","into","into","into","into","into","new","partial_cmp","singleton","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","Box","Data","Pool","alloc","as_mut","as_ref","borrow","borrow_mut","cmp","deref","deref_mut","drop","eq","fmt","fmt","forget","freeze","from","grow","grow_exact","hash","init","into","partial_cmp","try_from","try_into","type_id","FindMut","Iter","LinkedIndexU16","LinkedIndexU8","LinkedIndexUsize","Max","Min","Node","SortedLinkedList","SortedLinkedListIndex","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","cmp","cmp","cmp","deref","deref_mut","drop","drop","eq","eq","eq","find_mut","finish","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_unchecked","get_unchecked","get_unchecked","into","into","into","into","into","into","into","into","into","into_iter","is_empty","is_full","iter","ne","ne","ne","new_u16","new_u8","new_unchecked","new_unchecked","new_unchecked","new_usize","next","none","none","none","option","option","option","partial_cmp","partial_cmp","partial_cmp","peek","pop","pop","pop_unchecked","push","push_unchecked","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","Consumer","Iter","IterMut","Producer","Queue","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","capacity","capacity","capacity","clone","clone","default","dequeue","dequeue","dequeue_unchecked","dequeue_unchecked","drop","enqueue","enqueue","enqueue_unchecked","enqueue_unchecked","eq","fmt","from","from","from","from","from","hash","hash","into","into","into","into","into","into_iter","into_iter","is_empty","is_full","iter","iter_mut","len","len","len","new","next","next","next_back","next_back","peek","peek","ready","ready","split","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id"],"q":["heapless","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","heapless::binary_heap","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","heapless::mpmc","","","","","","","","","","","","","","","","","","heapless::pool","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","heapless::pool::singleton","","","","","","","","","","","","","","","","","","","","","","","","","","","heapless::sorted_linked_list","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","heapless::spsc","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["A fixed capacity double-ended queue.","A heapless::IndexMap using the default FNV hasher","A heapless::IndexSet using the default FNV hasher. A list …","A “history buffer”, similar to a write-only ring …","Fixed capacity IndexMap","Fixed capacity IndexSet.","A fixed capacity map / dictionary that performs lookups …","A fixed capacity String","A fixed capacity Vec","","","Returns a pair of mutable slices which contain, in order, …","Converts a String into a mutable string slice.","Returns a mutable reference to the contents of this String…","","","","","","Returns the array slice backing the buffer, without …","Extracts a slice containing the entire vector.","Returns a pair of slices which contain, in order, the …","Extracts a string slice containing the entire string.","Provides a reference to the back element, or None if the …","Provides a mutable reference to the back element, or None …","A priority queue implemented with a binary heap.","","","","","","","","","","","","","","","Returns the maximum number of elements the deque can hold.","Returns the capacity of the buffer, which is the length …","Returns the number of elements the map can hold","Returns the number of elements the set can hold","Returns the number of elements that the map can hold","Returns the maximum number of elements the String can hold","Returns the maximum number of elements the vector can …","Clears the deque, removing all values.","Clears the buffer, replacing every element with the …","Remove all key-value pairs in the map, while preserving …","Clears the set, removing all values.","Clears the map, removing all key-value pairs","Truncates this String, removing all contents.","Clears the vector, removing all values.","Clears the buffer, replacing every element with the given …","","","","","","","","","Returns true if the set contains a value.","Returns true if the map contains a value for the …","Returns true if the map contains a value for the …","","","","","","","","","","","","","Visits the values representing the difference, i.e. the …","","","","","Returns true if needle is a suffix of the Vec.","","","","","","","","","","","","","","","","","","","Extends the vec from an iterator.","","","Clones and writes all elements in a slice to the buffer.","Clones and appends all elements in a slice to the Vec.","","","","","","","","","","","","","","","","","","","","","","","","","","","","Constructs a new vector with a fixed capacity of N and …","","Provides a reference to the front element, or None if the …","Provides a mutable reference to the front element, or …","Returns a reference to the value corresponding to the key.","Returns a reference to the value corresponding to the key","Returns a mutable reference to the value corresponding to …","Returns a mutable reference to the value corresponding to …","","","","","","","","","Inserts a key-value pair into the map.","Adds a value to the set.","Inserts a key-value pair into the map.","Visits the values representing the intersection, i.e. the …","","","","","","","","Returns the contents of the vector as an array of length M…","Converts a String into a byte vector.","","","Returns true if self has no elements in common with other…","Returns whether the deque is empty.","Returns true if the map contains no elements.","Returns true if the set contains no elements.","Returns true if the map contains no elements","Returns true if the vec is empty","Returns whether the deque is full (i.e. if …","Returns true if the vec is full","Returns true if the set is a subset of another, i.e. other…","Examples","Returns an iterator over the deque.","Return an iterator over the key-value pairs of the map, …","Return an iterator over the values of the set, in their …","An iterator visiting all key-value pairs in arbitrary …","Returns an iterator that allows modifying each value.","Return an iterator over the key-value pairs of the map, …","An iterator visiting all key-value pairs in arbitrary …","Return an iterator over the keys of the map, in their …","An iterator visiting all keys in arbitrary order","Returns the number of elements currently in the deque.","Returns the current fill level of the buffer.","Return the number of key-value pairs in the map.","Returns the number of elements in the set.","Returns the number of elements in this map","A fixed capacity Multiple-Producer Multiple-Consumer …","","","","Constructs a new, empty deque with a fixed capacity of N","Constructs a new history buffer.","Creates an empty IndexMap.","Creates an empty IndexSet","Creates an empty LinearMap","Constructs a new, empty String with a fixed capacity of N","Constructs a new, empty vector with a fixed capacity of N","Constructs a new history buffer, where every element is …","","","A heap-less, interrupt-safe, lock-free memory pool (*)","Removes the last character from the string buffer and …","Removes the last element from a vector and returns it, or …","Removes the item from the back of the deque and returns …","Removes the item from the front of the deque and returns …","Removes the last element from a vector and returns it","Appends the given char to the end of this String.","Appends an item to the back of the collection","Appends an item to the back of the deque","Appends an item to the back of the deque","Appends an item to the front of the deque","Appends an item to the front of the deque","Appends a given string slice onto the end of this String.","Appends an item to the back of the collection","Returns a reference to the most recently written value.","Same as swap_remove","Removes a value from the set. Returns true if the value …","Removes a key from the map, returning the value at the …","Resizes the Vec in-place so that len is equal to new_len.","Resizes the Vec in-place so that len is equal to new_len.","Forces the length of the vector to new_len.","A fixed sorted priority linked list, similar to BinaryHeap…","Fixed capacity Single Producer Single Consumer (SPSC) …","Returns true if needle is a prefix of the Vec.","Remove the key-value pair equivalent to key and return …","Removes an element from the vector and returns it.","Removes an element from the vector and returns it.","Visits the values representing the symmetric difference, …","Shortens this String to the specified length.","Shortens the vector, keeping the first len elements and …","","","","","","","","","","","","","","","","","","","","","","Visits the values representing the union, i.e. all the …","Return an iterator over the values of the map, in their …","An iterator visiting all values in arbitrary order","Return an iterator over mutable references to the the …","An iterator visiting all values mutably in arbitrary order","Writes an element to the buffer, overwriting the oldest …","","","","A priority queue implemented with a binary heap.","Max-heap","Min-heap","Structure wrapping a mutable reference to the greatest …","","","","","","","","","Returns the capacity of the binary heap.","Drops all items from the binary heap.","","","","","","","","","","","","","","","","Checks if the binary heap is empty.","Returns an iterator visiting all values in the underlying …","Returns a mutable iterator visiting all values in the …","Returns the length of the binary heap.","Creates an empty BinaryHeap as a $K-heap.","Returns the top (greatest if max-heap, smallest if …","Returns a mutable reference to the greatest item in the …","Removes the top (greatest if max-heap, smallest if …","Removes the peeked value from the heap and returns it.","Removes the top (greatest if max-heap, smallest if …","Pushes an item onto the binary heap.","Pushes an item onto the binary heap without first …","","","","","","","","","","","","","MPMC queue with a capacity for N elements The max value …","MPMC queue with a capability for 16 elements.","MPMC queue with a capability for 2 elements.","MPMC queue with a capability for 32 elements.","MPMC queue with a capability for 4 elements.","MPMC queue with a capability for 64 elements.","MPMC queue with a capability for 8 elements.","","","","Returns the item in the front of the queue, or None if …","Adds an item to the end of the queue","","","Creates an empty queue","","","","A memory block","Initialized type state","Unfortunate implementation detail required to use the …","A lock-free memory pool","Uninitialized type state","Claims a memory block from the pool","","","","","","","","","","","","","","","","","","","Returns a memory block to the pool","","","","","","Increases the capacity of the pool","Increases the capacity of the pool","","Initializes this memory block","","","","","","Creates a new empty pool","","Pool as a global singleton","","","","","","","","","","","","","","","","A memory block that belongs to the global memory pool, …","The type of data that can be allocated on this pool","A global singleton memory pool","Claims a memory block from the pool","","","","","","","","","","","","Forgets the contents of this memory block without running …","(DO NOT USE, SEE DEPRECATION) Freezes the contents of …","","Increases the capacity of the pool","Increases the capacity of the pool","","Initializes this memory block","","","","","","Comes from [SortedLinkedList::find_mut].","Iterator for the linked list.","Index for the [SortedLinkedList] with specific backing …","Index for the [SortedLinkedList] with specific backing …","Index for the [SortedLinkedList] with specific backing …","Marker for Max sorted [SortedLinkedList].","Marker for Min sorted [SortedLinkedList].","A node in the [SortedLinkedList].","The linked list.","Trait for defining an index for the linked list, never …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Find an element in the list that can be changed and …","This will resort the element into the correct position in …","","","","","","","","","","","","","","This is only valid if self.option() is not None.","This is only valid if self.option() is not None.","This is only valid if self.option() is not None.","","","","","","","","","","","Checks if the linked list is empty.","Checks if the linked list is full.","Get an iterator over the sorted list.","","","","Create a new linked list.","Create a new linked list.","","","","Create a new linked list.","","","","","","","","","","","Peek at the first element.","Pops the first element in the list.","This will pop the element from the list.","Pop an element from the list without checking so the list …","Pushes an element to the linked list and sorts it into …","Pushes a value onto the list without checking if the list …","","","","","","","","","","","","","","","","","","","","","","","","","","","","A queue “consumer”; it can dequeue items from the …","An iterator over the items of a queue","A mutable iterator over the items of a queue","A queue “producer”; it can enqueue items into the …","A statically allocated single producer single consumer …","","","","","","","","","","","Returns the maximum number of elements the queue can hold","Returns the maximum number of elements the queue can hold","Returns the maximum number of elements the queue can hold","","","","Returns the item in the front of the queue, or None if …","Returns the item in the front of the queue, or None if …","Returns the item in the front of the queue, without …","Returns the item in the front of the queue, without …","","Adds an item to the end of the queue","Adds an item to the end of the queue, returns back the …","Adds an item to the end of the queue, without checking if …","Adds an item to the end of the queue, without checking if …","","","","","","","","","","","","","","","","","Returns true if the queue is empty","Returns true if the queue is full","Iterates from the front of the queue to the back","Returns an iterator that allows modifying each value","Returns the number of elements in the queue","Returns the number of elements in the queue","Returns the number of elements in the queue","Creates an empty queue with a fixed capacity of N - 1","","","","","Returns a reference to the item in the front of the queue …","Returns the item in the front of the queue without …","Returns if there are any items to dequeue. When this …","Returns if there is any space to enqueue a new item. When …","Splits a queue into producer and consumer endpoints","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,1,1,2,3,3,4,3,3,1,1,4,1,2,3,2,2,0,2,4,5,6,7,3,1,2,4,5,6,7,3,1,2,4,5,6,7,3,1,2,4,5,6,7,3,1,4,2,5,6,7,3,1,3,1,6,5,7,2,4,5,6,7,3,1,4,3,1,3,1,6,2,4,7,1,1,5,6,7,3,3,3,1,1,1,1,1,1,4,4,5,5,6,6,1,1,1,4,1,4,5,6,7,3,3,1,2,4,5,6,7,3,3,3,3,3,3,3,3,3,3,1,5,6,7,1,1,3,2,2,5,7,5,7,3,3,1,1,5,7,5,7,5,6,7,6,2,4,5,6,7,3,1,1,3,2,1,6,2,5,6,7,1,2,1,6,6,2,5,6,7,2,5,7,5,7,2,4,5,6,7,0,3,3,3,2,4,5,6,7,3,1,4,3,1,0,3,1,2,2,1,3,1,2,2,2,2,3,1,4,5,6,7,1,1,1,0,0,1,5,1,1,6,3,1,2,4,5,6,7,3,1,2,4,5,6,7,3,1,2,4,5,6,7,3,1,6,5,7,5,7,4,3,3,1,0,0,0,0,8,9,10,11,8,9,10,11,10,10,10,10,11,11,10,11,10,8,9,10,11,8,9,10,11,10,10,10,10,10,10,10,10,11,10,10,10,8,9,10,11,8,9,10,11,8,9,10,11,0,0,0,0,0,0,0,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,13,14,14,15,13,14,16,17,15,13,14,16,17,14,14,14,14,14,14,13,15,13,14,16,17,13,13,14,14,15,13,14,16,17,13,14,0,15,13,14,16,17,15,13,14,16,17,15,13,14,16,17,0,18,0,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,18,19,19,19,19,19,19,19,0,0,0,0,0,0,0,0,0,0,20,21,22,23,24,25,26,27,28,20,21,22,23,24,25,26,27,28,26,27,28,26,27,28,25,25,23,25,26,27,28,23,25,23,26,27,28,20,21,22,23,24,25,26,27,28,26,27,28,20,21,22,23,24,25,26,27,28,24,23,23,23,26,27,28,23,23,26,27,28,23,24,26,27,28,26,27,28,26,27,28,23,23,25,23,23,23,20,21,22,23,24,25,26,27,28,20,21,22,23,24,25,26,27,28,20,21,22,23,24,25,26,27,28,0,0,0,0,0,29,30,31,32,33,29,30,31,32,33,29,32,33,29,30,29,29,32,29,32,29,29,33,29,33,29,29,29,30,31,32,33,29,29,29,30,31,32,33,30,31,29,29,29,29,29,32,33,29,30,31,30,31,29,32,32,33,29,29,30,31,32,33,29,30,31,32,33,29,30,31,32,33],"f":[null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[],["str",15]],[[],["vec",3]],[[]],[[],["str",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["str",15]],[[],["option",4]],[[],["option",4]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["ordering",4]],[[],["ordering",4]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["str",15]],[[]],[[],["str",15]],[[]],[[["indexset",3]],["difference",3]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[["indexmap",3]],["bool",15]],[[["indexset",3]],["bool",15]],[[["linearmap",3]],["bool",15]],[[["string",3]],["bool",15]],[[],["bool",15]],[[["str",15]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[["vec",3]],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[["u32",15]]],[[["u64",15]]],[[["i16",15]]],[[["i32",15]]],[[["i64",15]]],[[]],[[["i8",15]]],[[["u8",15]]],[[["u16",15]]],[[["str",15]]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[["str",15]],["result",4]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[["result",4],["option",4]]],[[],[["bool",15],["result",4]]],[[],[["result",4],["option",4]]],[[["indexset",3]],["intersection",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],[["u8",15],["vec",3]]],[[]],[[]],[[["indexset",3]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[["indexset",3]],["bool",15]],[[["indexset",3]],["bool",15]],[[],["iter",3]],[[],["iter",3]],[[],["iter",3]],[[],["iter",3]],[[],["itermut",3]],[[],["itermut",3]],[[],["itermut",3]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],null,[[["str",15]],["bool",15]],[[["string",3]],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["string",3]],[["option",4],["ordering",4]]],[[["vec",3]],[["option",4],["ordering",4]]],null,[[],[["option",4],["char",15]]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[]],[[["char",15]],["result",4]],[[],["result",4]],[[],["result",4]],[[]],[[],["result",4]],[[]],[[["str",15]],["result",4]],[[]],[[],["option",4]],[[],["option",4]],[[],["bool",15]],[[],["option",4]],[[["usize",15]],["result",4]],[[["usize",15]],["result",4]],[[["usize",15]]],null,null,[[],["bool",15]],[[],["option",4]],[[["usize",15]]],[[["usize",15]]],[[["indexset",3]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["indexset",3]]],[[]],[[]],[[]],[[]],[[]],[[["char",15]],[["error",3],["result",4]]],[[["str",15]],[["error",3],["result",4]]],[[["str",15]],["result",6]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["iter",3]],[[],["itermut",3]],[[],["usize",15]],[[]],[[],["option",4]],[[],[["option",4],["peekmut",3]]],[[],["option",4]],[[["peekmut",3]]],[[]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[],["option",4]],[[],["result",4]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,null,null,null,[[],[["option",4],["box",3]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["box",3]],["ordering",4]],[[]],[[]],[[["box",3]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["box",3]]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[["maybeuninit",19]],["usize",15]],[[]],[[],[["box",3],["init",4]]],[[]],[[]],[[]],[[]],[[]],[[]],[[["box",3]],[["ordering",4],["option",4]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,[[],[["option",4],["box",3]]],[[]],[[]],[[]],[[]],[[["box",3]],["ordering",4]],[[]],[[]],[[]],[[["box",3]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[],[["box",3],["uninit",4]]],[[],[["init",4],["box",3]]],[[]],[[],["usize",15]],[[["maybeuninit",19]],["usize",15]],[[]],[[],[["init",4],["box",3]]],[[]],[[["box",3]],[["ordering",4],["option",4]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["linkedindexu8",3]],[[],["linkedindexu16",3]],[[],["linkedindexusize",3]],[[["linkedindexu8",3]],["ordering",4]],[[["linkedindexu16",3]],["ordering",4]],[[["linkedindexusize",3]],["ordering",4]],[[]],[[]],[[]],[[]],[[["linkedindexu8",3]],["bool",15]],[[["linkedindexu16",3]],["bool",15]],[[["linkedindexusize",3]],["bool",15]],[[],[["findmut",3],["option",4]]],[[]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["iter",3]],[[["linkedindexu8",3]],["bool",15]],[[["linkedindexu16",3]],["bool",15]],[[["linkedindexusize",3]],["bool",15]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[],["option",4]],[[]],[[]],[[]],[[],[["option",4],["usize",15]]],[[],[["option",4],["usize",15]]],[[],[["option",4],["usize",15]]],[[["linkedindexu8",3]],[["ordering",4],["option",4]]],[[["linkedindexu16",3]],[["ordering",4],["option",4]]],[[["linkedindexusize",3]],[["ordering",4],["option",4]]],[[],["option",4]],[[],["result",4]],[[]],[[]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[],["option",4]],[[],["option",4]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[]],[[]],[[["queue",3]],["bool",15]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["iter",3]],[[],["itermut",3]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[],["bool",15]],[[],["bool",15]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]]],"p":[[3,"Vec"],[3,"Deque"],[3,"String"],[3,"HistoryBuffer"],[3,"IndexMap"],[3,"IndexSet"],[3,"LinearMap"],[4,"Min"],[4,"Max"],[3,"BinaryHeap"],[3,"PeekMut"],[3,"MpMcQueue"],[3,"Pool"],[3,"Box"],[3,"Node"],[4,"Uninit"],[4,"Init"],[8,"Pool"],[3,"Box"],[3,"Min"],[3,"Max"],[3,"Node"],[3,"SortedLinkedList"],[3,"Iter"],[3,"FindMut"],[3,"LinkedIndexU8"],[3,"LinkedIndexU16"],[3,"LinkedIndexUsize"],[3,"Queue"],[3,"Iter"],[3,"IterMut"],[3,"Consumer"],[3,"Producer"]]},\ +"heapless":{"doc":"static friendly data structures that don’t require …","t":[3,6,6,3,3,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,4,4,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,6,6,6,6,6,6,11,11,11,11,11,11,11,11,11,11,11,3,4,3,3,4,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,16,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,3,3,3,3,3,3,8,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,3,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["Deque","FnvIndexMap","FnvIndexSet","HistoryBuffer","IndexMap","IndexSet","LinearMap","String","Vec","as_mut","as_mut","as_mut_slices","as_mut_str","as_mut_vec","as_ref","as_ref","as_ref","as_ref","as_ref","as_slice","as_slice","as_slices","as_str","back","back_mut","binary_heap","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","capacity","capacity","capacity","capacity","capacity","capacity","capacity","clear","clear","clear","clear","clear","clear","clear","clear_with","clone","clone","clone","clone","clone","clone","cmp","cmp","contains","contains_key","contains_key","default","default","default","default","default","default","default","deref","deref","deref","deref_mut","deref_mut","difference","drop","drop","drop","drop","ends_with","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","extend","extend","extend","extend","extend","extend","extend","extend","extend","extend_from_slice","extend_from_slice","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_iter","from_iter","from_iter","from_iter","from_slice","from_str","front","front_mut","get","get","get_mut","get_mut","hash","hash","hash","hash","index","index","index_mut","index_mut","insert","insert","insert","intersection","into","into","into","into","into","into","into","into_array","into_bytes","into_iter","into_iter","is_disjoint","is_empty","is_empty","is_empty","is_empty","is_empty","is_full","is_full","is_subset","is_superset","iter","iter","iter","iter","iter_mut","iter_mut","iter_mut","keys","keys","len","len","len","len","len","mpmc","ne","ne","ne","new","new","new","new","new","new","new","new_with","partial_cmp","partial_cmp","pool","pop","pop","pop_back","pop_front","pop_unchecked","push","push","push_back","push_back_unchecked","push_front","push_front_unchecked","push_str","push_unchecked","recent","remove","remove","remove","resize","resize_default","set_len","sorted_linked_list","spsc","starts_with","swap_remove","swap_remove","swap_remove_unchecked","symmetric_difference","truncate","truncate","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","values","values","values_mut","values_mut","write","write_char","write_str","write_str","BinaryHeap","Max","Min","PeekMut","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","capacity","clear","clone","default","deref","deref_mut","drop","drop","fmt","from","from","from","from","into","into","into","into","is_empty","iter","iter_mut","len","new","peek","peek_mut","pop","pop","pop_unchecked","push","push_unchecked","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","MpMcQueue","Q16","Q2","Q32","Q4","Q64","Q8","borrow","borrow_mut","default","dequeue","enqueue","from","into","new","try_from","try_into","type_id","Box","Init","Node","Pool","Uninit","alloc","as_mut","as_ref","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cmp","deref","deref_mut","eq","fmt","fmt","free","from","from","from","from","from","grow","grow_exact","hash","init","into","into","into","into","into","new","partial_cmp","singleton","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","Box","Data","Pool","alloc","as_mut","as_ref","borrow","borrow_mut","cmp","deref","deref_mut","drop","eq","fmt","fmt","forget","freeze","from","grow","grow_exact","hash","init","into","partial_cmp","try_from","try_into","type_id","FindMut","Iter","LinkedIndexU16","LinkedIndexU8","LinkedIndexUsize","Max","Min","Node","SortedLinkedList","SortedLinkedListIndex","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","cmp","cmp","cmp","deref","deref_mut","drop","drop","eq","eq","eq","find_mut","finish","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_unchecked","get_unchecked","get_unchecked","into","into","into","into","into","into","into","into","into","into_iter","is_empty","is_full","iter","ne","ne","ne","new_u16","new_u8","new_unchecked","new_unchecked","new_unchecked","new_usize","next","none","none","none","option","option","option","partial_cmp","partial_cmp","partial_cmp","peek","pop","pop","pop_unchecked","push","push_unchecked","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","Consumer","Iter","IterMut","Producer","Queue","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","capacity","capacity","capacity","clone","clone","default","dequeue","dequeue","dequeue_unchecked","dequeue_unchecked","drop","enqueue","enqueue","enqueue_unchecked","enqueue_unchecked","eq","fmt","from","from","from","from","from","hash","hash","into","into","into","into","into","into_iter","into_iter","is_empty","is_full","iter","iter_mut","len","len","len","new","next","next","next_back","next_back","peek","peek","ready","ready","split","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id"],"q":["heapless","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","heapless::binary_heap","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","heapless::mpmc","","","","","","","","","","","","","","","","","","heapless::pool","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","heapless::pool::singleton","","","","","","","","","","","","","","","","","","","","","","","","","","","heapless::sorted_linked_list","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","heapless::spsc","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["A fixed capacity double-ended queue.","A heapless::IndexMap using the default FNV hasher","A heapless::IndexSet using the default FNV hasher. A list …","A “history buffer”, similar to a write-only ring …","Fixed capacity IndexMap","Fixed capacity IndexSet.","A fixed capacity map / dictionary that performs lookups …","A fixed capacity String","A fixed capacity Vec","","","Returns a pair of mutable slices which contain, in order, …","Converts a String into a mutable string slice.","Returns a mutable reference to the contents of this String…","","","","","","Returns the array slice backing the buffer, without …","Extracts a slice containing the entire vector.","Returns a pair of slices which contain, in order, the …","Extracts a string slice containing the entire string.","Provides a reference to the back element, or None if the …","Provides a mutable reference to the back element, or None …","A priority queue implemented with a binary heap.","","","","","","","","","","","","","","","Returns the maximum number of elements the deque can hold.","Returns the capacity of the buffer, which is the length …","Returns the number of elements the map can hold","Returns the number of elements the set can hold","Returns the number of elements that the map can hold","Returns the maximum number of elements the String can hold","Returns the maximum number of elements the vector can …","Clears the deque, removing all values.","Clears the buffer, replacing every element with the …","Remove all key-value pairs in the map, while preserving …","Clears the set, removing all values.","Clears the map, removing all key-value pairs","Truncates this String, removing all contents.","Clears the vector, removing all values.","Clears the buffer, replacing every element with the given …","","","","","","","","","Returns true if the set contains a value.","Returns true if the map contains a value for the …","Returns true if the map contains a value for the …","","","","","","","","","","","","","Visits the values representing the difference, i.e. the …","","","","","Returns true if needle is a suffix of the Vec.","","","","","","","","","","","","","","","","","","","Extends the vec from an iterator.","","","Clones and writes all elements in a slice to the buffer.","Clones and appends all elements in a slice to the Vec.","","","","","","","","","","","","","","","","","","","","","","","","","","","","Constructs a new vector with a fixed capacity of N and …","","Provides a reference to the front element, or None if the …","Provides a mutable reference to the front element, or …","Returns a reference to the value corresponding to the key.","Returns a reference to the value corresponding to the key","Returns a mutable reference to the value corresponding to …","Returns a mutable reference to the value corresponding to …","","","","","","","","","Inserts a key-value pair into the map.","Adds a value to the set.","Inserts a key-value pair into the map.","Visits the values representing the intersection, i.e. the …","","","","","","","","Returns the contents of the vector as an array of length M…","Converts a String into a byte vector.","","","Returns true if self has no elements in common with other…","Returns whether the deque is empty.","Returns true if the map contains no elements.","Returns true if the set contains no elements.","Returns true if the map contains no elements","Returns true if the vec is empty","Returns whether the deque is full (i.e. if …","Returns true if the vec is full","Returns true if the set is a subset of another, i.e. other…","Examples","Returns an iterator over the deque.","Return an iterator over the key-value pairs of the map, …","Return an iterator over the values of the set, in their …","An iterator visiting all key-value pairs in arbitrary …","Returns an iterator that allows modifying each value.","Return an iterator over the key-value pairs of the map, …","An iterator visiting all key-value pairs in arbitrary …","Return an iterator over the keys of the map, in their …","An iterator visiting all keys in arbitrary order","Returns the number of elements currently in the deque.","Returns the current fill level of the buffer.","Return the number of key-value pairs in the map.","Returns the number of elements in the set.","Returns the number of elements in this map","A fixed capacity Multiple-Producer Multiple-Consumer …","","","","Constructs a new, empty deque with a fixed capacity of N","Constructs a new history buffer.","Creates an empty IndexMap.","Creates an empty IndexSet","Creates an empty LinearMap","Constructs a new, empty String with a fixed capacity of N","Constructs a new, empty vector with a fixed capacity of N","Constructs a new history buffer, where every element is …","","","A heap-less, interrupt-safe, lock-free memory pool (*)","Removes the last character from the string buffer and …","Removes the last element from a vector and returns it, or …","Removes the item from the back of the deque and returns …","Removes the item from the front of the deque and returns …","Removes the last element from a vector and returns it","Appends the given char to the end of this String.","Appends an item to the back of the collection","Appends an item to the back of the deque","Appends an item to the back of the deque","Appends an item to the front of the deque","Appends an item to the front of the deque","Appends a given string slice onto the end of this String.","Appends an item to the back of the collection","Returns a reference to the most recently written value.","Same as swap_remove","Removes a value from the set. Returns true if the value …","Removes a key from the map, returning the value at the …","Resizes the Vec in-place so that len is equal to new_len.","Resizes the Vec in-place so that len is equal to new_len.","Forces the length of the vector to new_len.","A fixed sorted priority linked list, similar to BinaryHeap…","Fixed capacity Single Producer Single Consumer (SPSC) …","Returns true if needle is a prefix of the Vec.","Remove the key-value pair equivalent to key and return …","Removes an element from the vector and returns it.","Removes an element from the vector and returns it.","Visits the values representing the symmetric difference, …","Shortens this String to the specified length.","Shortens the vector, keeping the first len elements and …","","","","","","","","","","","","","","","","","","","","","","Visits the values representing the union, i.e. all the …","Return an iterator over the values of the map, in their …","An iterator visiting all values in arbitrary order","Return an iterator over mutable references to the the …","An iterator visiting all values mutably in arbitrary order","Writes an element to the buffer, overwriting the oldest …","","","","A priority queue implemented with a binary heap.","Max-heap","Min-heap","Structure wrapping a mutable reference to the greatest …","","","","","","","","","Returns the capacity of the binary heap.","Drops all items from the binary heap.","","","","","","","","","","","","","","","","Checks if the binary heap is empty.","Returns an iterator visiting all values in the underlying …","Returns a mutable iterator visiting all values in the …","Returns the length of the binary heap.","Creates an empty BinaryHeap as a $K-heap.","Returns the top (greatest if max-heap, smallest if …","Returns a mutable reference to the greatest item in the …","Removes the top (greatest if max-heap, smallest if …","Removes the peeked value from the heap and returns it.","Removes the top (greatest if max-heap, smallest if …","Pushes an item onto the binary heap.","Pushes an item onto the binary heap without first …","","","","","","","","","","","","","MPMC queue with a capacity for N elements The max value …","MPMC queue with a capability for 16 elements.","MPMC queue with a capability for 2 elements.","MPMC queue with a capability for 32 elements.","MPMC queue with a capability for 4 elements.","MPMC queue with a capability for 64 elements.","MPMC queue with a capability for 8 elements.","","","","Returns the item in the front of the queue, or None if …","Adds an item to the end of the queue","","","Creates an empty queue","","","","A memory block","Initialized type state","Unfortunate implementation detail required to use the …","A lock-free memory pool","Uninitialized type state","Claims a memory block from the pool","","","","","","","","","","","","","","","","","","","Returns a memory block to the pool","","","","","","Increases the capacity of the pool","Increases the capacity of the pool","","Initializes this memory block","","","","","","Creates a new empty pool","","Pool as a global singleton","","","","","","","","","","","","","","","","A memory block that belongs to the global memory pool, …","The type of data that can be allocated on this pool","A global singleton memory pool","Claims a memory block from the pool","","","","","","","","","","","","Forgets the contents of this memory block without running …","(DO NOT USE, SEE DEPRECATION) Freezes the contents of …","","Increases the capacity of the pool","Increases the capacity of the pool","","Initializes this memory block","","","","","","Comes from [SortedLinkedList::find_mut].","Iterator for the linked list.","Index for the [SortedLinkedList] with specific backing …","Index for the [SortedLinkedList] with specific backing …","Index for the [SortedLinkedList] with specific backing …","Marker for Max sorted [SortedLinkedList].","Marker for Min sorted [SortedLinkedList].","A node in the [SortedLinkedList].","The linked list.","Trait for defining an index for the linked list, never …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Find an element in the list that can be changed and …","This will resort the element into the correct position in …","","","","","","","","","","","","","","This is only valid if self.option() is not None.","This is only valid if self.option() is not None.","This is only valid if self.option() is not None.","","","","","","","","","","","Checks if the linked list is empty.","Checks if the linked list is full.","Get an iterator over the sorted list.","","","","Create a new linked list.","Create a new linked list.","","","","Create a new linked list.","","","","","","","","","","","Peek at the first element.","Pops the first element in the list.","This will pop the element from the list.","Pop an element from the list without checking so the list …","Pushes an element to the linked list and sorts it into …","Pushes a value onto the list without checking if the list …","","","","","","","","","","","","","","","","","","","","","","","","","","","","A queue “consumer”; it can dequeue items from the …","An iterator over the items of a queue","A mutable iterator over the items of a queue","A queue “producer”; it can enqueue items into the …","A statically allocated single producer single consumer …","","","","","","","","","","","Returns the maximum number of elements the queue can hold","Returns the maximum number of elements the queue can hold","Returns the maximum number of elements the queue can hold","","","","Returns the item in the front of the queue, or None if …","Returns the item in the front of the queue, or None if …","Returns the item in the front of the queue, without …","Returns the item in the front of the queue, without …","","Adds an item to the end of the queue","Adds an item to the end of the queue, returns back the …","Adds an item to the end of the queue, without checking if …","Adds an item to the end of the queue, without checking if …","","","","","","","","","","","","","","","","","Returns true if the queue is empty","Returns true if the queue is full","Iterates from the front of the queue to the back","Returns an iterator that allows modifying each value","Returns the number of elements in the queue","Returns the number of elements in the queue","Returns the number of elements in the queue","Creates an empty queue with a fixed capacity of N - 1","","","","","Returns a reference to the item in the front of the queue …","Returns the item in the front of the queue without …","Returns if there are any items to dequeue. When this …","Returns if there is any space to enqueue a new item. When …","Splits a queue into producer and consumer endpoints","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,0,0,1,1,2,3,3,4,3,3,1,1,4,1,2,3,2,2,0,2,4,5,6,7,3,1,2,4,5,6,7,3,1,2,4,5,6,7,3,1,2,4,5,6,7,3,1,4,2,5,6,7,3,1,3,1,6,5,7,2,4,5,6,7,3,1,4,3,1,3,1,6,2,4,7,1,1,5,6,7,3,3,3,1,1,1,1,1,1,4,4,5,5,6,6,1,1,1,4,1,4,5,6,7,3,3,1,2,4,5,6,7,3,3,3,3,3,3,3,3,3,3,1,5,6,7,1,1,3,2,2,5,7,5,7,3,3,1,1,5,7,5,7,5,6,7,6,2,4,5,6,7,3,1,1,3,2,1,6,2,5,6,7,1,2,1,6,6,2,5,6,7,2,5,7,5,7,2,4,5,6,7,0,3,3,3,2,4,5,6,7,3,1,4,3,1,0,3,1,2,2,1,3,1,2,2,2,2,3,1,4,5,6,7,1,1,1,0,0,1,5,1,1,6,3,1,2,4,5,6,7,3,1,2,4,5,6,7,3,1,2,4,5,6,7,3,1,6,5,7,5,7,4,3,3,1,0,0,0,0,8,9,10,11,8,9,10,11,10,10,10,10,11,11,10,11,10,8,9,10,11,8,9,10,11,10,10,10,10,10,10,10,10,11,10,10,10,8,9,10,11,8,9,10,11,8,9,10,11,0,0,0,0,0,0,0,12,12,12,12,12,12,12,12,12,12,12,0,0,0,0,0,13,14,14,15,13,14,16,17,15,13,14,16,17,14,14,14,14,14,14,13,15,13,14,16,17,13,13,14,14,15,13,14,16,17,13,14,0,15,13,14,16,17,15,13,14,16,17,15,13,14,16,17,0,18,0,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,18,18,19,19,19,19,19,19,19,0,0,0,0,0,0,0,0,0,0,20,21,22,23,24,25,26,27,28,20,21,22,23,24,25,26,27,28,26,27,28,26,27,28,25,25,23,25,26,27,28,23,25,23,26,27,28,20,21,22,23,24,25,26,27,28,26,27,28,20,21,22,23,24,25,26,27,28,24,23,23,23,26,27,28,23,23,26,27,28,23,24,26,27,28,26,27,28,26,27,28,23,23,25,23,23,23,20,21,22,23,24,25,26,27,28,20,21,22,23,24,25,26,27,28,20,21,22,23,24,25,26,27,28,0,0,0,0,0,29,30,31,32,33,29,30,31,32,33,29,32,33,29,30,29,29,32,29,32,29,29,33,29,33,29,29,29,30,31,32,33,29,29,29,30,31,32,33,30,31,29,29,29,29,29,32,33,29,30,31,30,31,29,32,32,33,29,29,30,31,32,33,29,30,31,32,33,29,30,31,32,33],"f":[null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[],["str",15]],[[],["vec",3]],[[]],[[],["str",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["str",15]],[[],["option",4]],[[],["option",4]],null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["ordering",4]],[[],["ordering",4]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["str",15]],[[]],[[],["str",15]],[[]],[[["indexset",3]],["difference",3]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[["indexmap",3]],["bool",15]],[[["indexset",3]],["bool",15]],[[["linearmap",3]],["bool",15]],[[["string",3]],["bool",15]],[[],["bool",15]],[[["str",15]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[["vec",3]],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[["u32",15]]],[[["u64",15]]],[[["i16",15]]],[[["i32",15]]],[[["i64",15]]],[[]],[[["i8",15]]],[[["u8",15]]],[[["u16",15]]],[[["str",15]]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[["str",15]],["result",4]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],[["result",4],["option",4]]],[[],[["bool",15],["result",4]]],[[],[["result",4],["option",4]]],[[["indexset",3]],["intersection",3]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["result",4]],[[],[["u8",15],["vec",3]]],[[]],[[]],[[["indexset",3]],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[],["bool",15]],[[["indexset",3]],["bool",15]],[[["indexset",3]],["bool",15]],[[],["iter",3]],[[],["iter",3]],[[],["iter",3]],[[],["iter",3]],[[],["itermut",3]],[[],["itermut",3]],[[],["itermut",3]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],null,[[["str",15]],["bool",15]],[[["string",3]],["bool",15]],[[],["bool",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["string",3]],[["option",4],["ordering",4]]],[[["vec",3]],[["option",4],["ordering",4]]],null,[[],[["option",4],["char",15]]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[]],[[["char",15]],["result",4]],[[],["result",4]],[[],["result",4]],[[]],[[],["result",4]],[[]],[[["str",15]],["result",4]],[[]],[[],["option",4]],[[],["option",4]],[[],["bool",15]],[[],["option",4]],[[["usize",15]],["result",4]],[[["usize",15]],["result",4]],[[["usize",15]]],null,null,[[],["bool",15]],[[],["option",4]],[[["usize",15]]],[[["usize",15]]],[[["indexset",3]]],[[["usize",15]]],[[["usize",15]]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[["indexset",3]]],[[]],[[]],[[]],[[]],[[]],[[["char",15]],[["error",3],["result",4]]],[[["str",15]],[["error",3],["result",4]]],[[["str",15]],["result",6]],null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["iter",3]],[[],["itermut",3]],[[],["usize",15]],[[]],[[],["option",4]],[[],[["option",4],["peekmut",3]]],[[],["option",4]],[[["peekmut",3]]],[[]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,null,null,[[]],[[]],[[]],[[],["option",4]],[[],["result",4]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,null,null,null,[[],[["box",3],["option",4]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[["box",3]],["ordering",4]],[[]],[[]],[[["box",3]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["box",3]]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[["maybeuninit",19]],["usize",15]],[[]],[[],[["box",3],["init",4]]],[[]],[[]],[[]],[[]],[[]],[[]],[[["box",3]],[["ordering",4],["option",4]]],null,[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,[[],[["box",3],["option",4]]],[[]],[[]],[[]],[[]],[[["box",3]],["ordering",4]],[[]],[[]],[[]],[[["box",3]],["bool",15]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[],[["box",3],["uninit",4]]],[[],[["init",4],["box",3]]],[[]],[[],["usize",15]],[[["maybeuninit",19]],["usize",15]],[[]],[[],[["init",4],["box",3]]],[[]],[[["box",3]],[["ordering",4],["option",4]]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],null,null,null,null,null,null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["linkedindexu8",3]],[[],["linkedindexu16",3]],[[],["linkedindexusize",3]],[[["linkedindexu8",3]],["ordering",4]],[[["linkedindexu16",3]],["ordering",4]],[[["linkedindexusize",3]],["ordering",4]],[[]],[[]],[[]],[[]],[[["linkedindexu8",3]],["bool",15]],[[["linkedindexu16",3]],["bool",15]],[[["linkedindexusize",3]],["bool",15]],[[],[["findmut",3],["option",4]]],[[]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["iter",3]],[[["linkedindexu8",3]],["bool",15]],[[["linkedindexu16",3]],["bool",15]],[[["linkedindexusize",3]],["bool",15]],[[]],[[]],[[["usize",15]]],[[["usize",15]]],[[["usize",15]]],[[]],[[],["option",4]],[[]],[[]],[[]],[[],[["option",4],["usize",15]]],[[],[["option",4],["usize",15]]],[[],[["option",4],["usize",15]]],[[["linkedindexu8",3]],[["ordering",4],["option",4]]],[[["linkedindexu16",3]],[["ordering",4],["option",4]]],[[["linkedindexusize",3]],[["ordering",4],["option",4]]],[[],["option",4]],[[],["result",4]],[[]],[[]],[[],["result",4]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],null,null,null,null,null,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[]],[[]],[[],["option",4]],[[],["option",4]],[[]],[[]],[[]],[[],["result",4]],[[],["result",4]],[[]],[[]],[[["queue",3]],["bool",15]],[[["formatter",3]],["result",6]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],["bool",15]],[[],["bool",15]],[[],["iter",3]],[[],["itermut",3]],[[],["usize",15]],[[],["usize",15]],[[],["usize",15]],[[]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[],["option",4]],[[],["bool",15]],[[],["bool",15]],[[]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["result",4]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]],[[],["typeid",3]]],"p":[[3,"Vec"],[3,"Deque"],[3,"String"],[3,"HistoryBuffer"],[3,"IndexMap"],[3,"IndexSet"],[3,"LinearMap"],[4,"Min"],[4,"Max"],[3,"BinaryHeap"],[3,"PeekMut"],[3,"MpMcQueue"],[3,"Pool"],[3,"Box"],[3,"Node"],[4,"Uninit"],[4,"Init"],[8,"Pool"],[3,"Box"],[3,"Min"],[3,"Max"],[3,"Node"],[3,"SortedLinkedList"],[3,"Iter"],[3,"FindMut"],[3,"LinkedIndexU8"],[3,"LinkedIndexU16"],[3,"LinkedIndexUsize"],[3,"Queue"],[3,"Iter"],[3,"IterMut"],[3,"Consumer"],[3,"Producer"]]},\ "stable_deref_trait":{"doc":"This module defines an unsafe marker trait, StableDeref, …","t":[8,8],"n":["CloneStableDeref","StableDeref"],"q":["stable_deref_trait",""],"d":["An unsafe marker trait for types where clones deref to …","An unsafe marker trait for types that deref to a stable …"],"i":[0,0],"f":[null,null],"p":[]}\ }'); if (window.initSearch) {window.initSearch(searchIndex)}; \ No newline at end of file diff --git a/src/heapless/pool/cas.rs.html b/src/heapless/pool/cas.rs.html index 266480a3..0ae7233e 100644 --- a/src/heapless/pool/cas.rs.html +++ b/src/heapless/pool/cas.rs.html @@ -209,6 +209,20 @@ 207 208 209 +210 +211 +212 +213 +214 +215 +216 +217 +218 +219 +220 +221 +222 +223
 //! Stack based on CAS atomics
 //!
@@ -217,12 +231,10 @@
 
 use core::{
     cell::UnsafeCell,
-    convert::TryFrom,
     marker::PhantomData,
-    mem,
-    num::NonZeroUsize,
+    num::NonZeroU64,
     ptr::NonNull,
-    sync::atomic::{AtomicUsize, Ordering},
+    sync::atomic::{AtomicU64, Ordering},
 };
 
 /// Unfortunate implementation detail required to use the
@@ -300,14 +312,16 @@
     }
 }
 
+#[cfg(target_arch = "x86_64")]
 fn anchor<T>() -> *mut T {
     static mut ANCHOR: u8 = 0;
-    (unsafe { &mut ANCHOR } as *mut u8 as usize & !(mem::align_of::<T>() - 1)) as *mut T
+    (unsafe { &mut ANCHOR } as *mut u8 as usize & !(core::mem::align_of::<T>() - 1)) as *mut T
 }
 
-/// Anchored pointer. This is a (signed) 32-bit offset from `anchor` plus a 32-bit tag
+/// On x86_64, anchored pointer. This is a (signed) 32-bit offset from `anchor` plus a 32-bit tag
+/// On x86, this is a pointer plus a 32-bit tag
 pub struct Ptr<T> {
-    inner: NonZeroUsize,
+    inner: NonZeroU64,
     _marker: PhantomData<*mut T>,
 }
 
@@ -320,27 +334,35 @@
 impl<T> Copy for Ptr<T> {}
 
 impl<T> Ptr<T> {
+    #[cfg(target_arch = "x86_64")]
     pub fn new(p: *mut T) -> Option<Self> {
+        use core::convert::TryFrom;
+
         i32::try_from((p as isize).wrapping_sub(anchor::<T>() as isize))
             .ok()
             .map(|offset| unsafe { Ptr::from_parts(0, offset) })
     }
 
+    #[cfg(target_arch = "x86")]
+    pub fn new(p: *mut T) -> Option<Self> {
+        Some(unsafe { Ptr::from_parts(0, p as i32) })
+    }
+
     unsafe fn from_parts(tag: u32, offset: i32) -> Self {
         Self {
-            inner: NonZeroUsize::new_unchecked((tag as usize) << 32 | (offset as u32 as usize)),
+            inner: NonZeroU64::new_unchecked((tag as u64) << 32 | (offset as u32 as u64)),
             _marker: PhantomData,
         }
     }
 
-    fn from_usize(p: usize) -> Option<Self> {
-        NonZeroUsize::new(p).map(|inner| Self {
+    fn from_u64(p: u64) -> Option<Self> {
+        NonZeroU64::new(p).map(|inner| Self {
             inner,
             _marker: PhantomData,
         })
     }
 
-    fn into_usize(&self) -> usize {
+    fn into_u64(&self) -> u64 {
         self.inner.get()
     }
 
@@ -359,6 +381,7 @@
         self.inner.get() as i32
     }
 
+    #[cfg(target_arch = "x86_64")]
     fn as_raw(&self) -> NonNull<T> {
         unsafe {
             NonNull::new_unchecked(
@@ -367,6 +390,11 @@
         }
     }
 
+    #[cfg(target_arch = "x86")]
+    fn as_raw(&self) -> NonNull<T> {
+        unsafe { NonNull::new_unchecked(self.offset() as *mut T) }
+    }
+
     pub fn dangling() -> Self {
         unsafe { Self::from_parts(0, 1) }
     }
@@ -377,14 +405,14 @@
 }
 
 struct Atomic<T> {
-    inner: AtomicUsize,
+    inner: AtomicU64,
     _marker: PhantomData<*mut T>,
 }
 
 impl<T> Atomic<T> {
     const fn null() -> Self {
         Self {
-            inner: AtomicUsize::new(0),
+            inner: AtomicU64::new(0),
             _marker: PhantomData,
         }
     }
@@ -398,17 +426,17 @@
     ) -> Result<(), Option<Ptr<T>>> {
         self.inner
             .compare_exchange_weak(
-                current.map(|p| p.into_usize()).unwrap_or(0),
-                new.map(|p| p.into_usize()).unwrap_or(0),
+                current.map(|p| p.into_u64()).unwrap_or(0),
+                new.map(|p| p.into_u64()).unwrap_or(0),
                 succ,
                 fail,
             )
             .map(drop)
-            .map_err(Ptr::from_usize)
+            .map_err(Ptr::from_u64)
     }
 
     fn load(&self, ord: Ordering) -> Option<Ptr<T>> {
-        NonZeroUsize::new(self.inner.load(ord)).map(|inner| Ptr {
+        NonZeroU64::new(self.inner.load(ord)).map(|inner| Ptr {
             inner,
             _marker: PhantomData,
         })
@@ -416,7 +444,7 @@
 
     fn store(&self, val: Option<Ptr<T>>, ord: Ordering) {
         self.inner
-            .store(val.map(|p| p.into_usize()).unwrap_or(0), ord)
+            .store(val.map(|p| p.into_u64()).unwrap_or(0), ord)
     }
 }
 
diff --git a/src/heapless/pool/mod.rs.html b/src/heapless/pool/mod.rs.html index 6de18d7c..664b242c 100644 --- a/src/heapless/pool/mod.rs.html +++ b/src/heapless/pool/mod.rs.html @@ -645,6 +645,17 @@ 643 644 645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656
 //! A heap-less, interrupt-safe, lock-free memory pool (\*)
 //!
@@ -801,7 +812,8 @@
 //!
 //! # x86_64 support / limitations
 //!
-//! *NOTE* `Pool` is only `Sync` on `x86_64` if the Cargo feature "x86-sync-pool" is enabled
+//! *NOTE* `Pool` is only `Sync` on `x86_64` and `x86` (`i686`) if the Cargo feature "x86-sync-pool"
+//! is enabled
 //!
 //! x86_64 support is a gamble. Yes, a gamble. Do you feel lucky enough to use `Pool` on x86_64?
 //!
@@ -851,6 +863,10 @@
 //!
 //! ## x86_64 Limitations
 //!
+//! *NOTE* this limitation does not apply to `x86` (32-bit address space). If you run into this
+//! issue, on an x86_64 processor try running your code compiled for `x86`, e.g. `cargo run --target
+//! i686-unknown-linux-musl`
+//!
 //! Because stack nodes must be located within +- 2 GB of the hidden `ANCHOR` variable, which
 //! lives in the `.bss` section, `Pool` may not be able to manage static references created using
 //! `Box::leak` -- these heap allocated chunks of memory may live in a very different address space.
@@ -888,8 +904,11 @@
 use stack::{Ptr, Stack};
 
 pub mod singleton;
-#[cfg_attr(target_arch = "x86_64", path = "cas.rs")]
-#[cfg_attr(not(target_arch = "x86_64"), path = "llsc.rs")]
+#[cfg_attr(any(target_arch = "x86_64", target_arch = "x86"), path = "cas.rs")]
+#[cfg_attr(
+    not(any(target_arch = "x86_64", target_arch = "x86")),
+    path = "llsc.rs"
+)]
 mod stack;
 
 /// A lock-free memory pool
@@ -907,7 +926,10 @@
     armv7r,
     armv7m,
     armv8m_main,
-    all(target_arch = "x86_64", feature = "x86-sync-pool"),
+    all(
+        any(target_arch = "x86_64", target_arch = "x86"),
+        feature = "x86-sync-pool"
+    ),
     test
 ))]
 unsafe impl<T> Sync for Pool<T> {}
@@ -1003,7 +1025,7 @@
         let mut n = 0;
         while len >= sz {
             match () {
-                #[cfg(target_arch = "x86_64")]
+                #[cfg(any(target_arch = "x86_64", target_arch = "x86"))]
                 () => {
                     if let Some(p) = Ptr::new(p as *mut _) {
                         self.stack.push(p);
@@ -1011,7 +1033,7 @@
                     }
                 }
 
-                #[cfg(not(target_arch = "x86_64"))]
+                #[cfg(not(any(target_arch = "x86_64", target_arch = "x86")))]
                 () => {
                     self.stack.push(unsafe { Ptr::new_unchecked(p as *mut _) });
                     n += 1;
@@ -1041,14 +1063,14 @@
         let cap = nodes.len();
         for p in nodes {
             match () {
-                #[cfg(target_arch = "x86_64")]
+                #[cfg(any(target_arch = "x86_64", target_arch = "x86"))]
                 () => {
                     if let Some(p) = Ptr::new(p) {
                         self.stack.push(p);
                     }
                 }
 
-                #[cfg(not(target_arch = "x86_64"))]
+                #[cfg(not(any(target_arch = "x86_64", target_arch = "x86")))]
                 () => self.stack.push(core::ptr::NonNull::from(p)),
             }
         }
diff --git a/src/heapless/pool/singleton.rs.html b/src/heapless/pool/singleton.rs.html
index 8ee9edcb..3b2f7b49 100644
--- a/src/heapless/pool/singleton.rs.html
+++ b/src/heapless/pool/singleton.rs.html
@@ -396,6 +396,9 @@
 394
 395
 396
+397
+398
+399
 
 //! `Pool` as a global singleton
 
@@ -418,7 +421,10 @@
     armv7r,
     armv7m,
     armv8m_main,
-    all(target_arch = "x86_64", feature = "x86-sync-pool"),
+    all(
+        any(target_arch = "x86_64", target_arch = "x86"),
+        feature = "x86-sync-pool"
+    ),
     test
 ))]
 #[macro_export]