diff --git a/cu29/all.html b/cu29/all.html index ca98b55d3..7048b425f 100644 --- a/cu29/all.html +++ b/cu29/all.html @@ -1 +1 @@ -List of all items in this crate

List of all items

Structs

Enums

Traits

Macros

Functions

Type Aliases

Statics

\ No newline at end of file +List of all items in this crate

List of all items

Structs

Enums

Traits

Macros

Functions

Type Aliases

Statics

\ No newline at end of file diff --git a/cu29/config/fn.read_configuration.html b/cu29/config/fn.read_configuration.html index 91244fbcc..1632dff7c 100644 --- a/cu29/config/fn.read_configuration.html +++ b/cu29/config/fn.read_configuration.html @@ -1,2 +1,2 @@ -read_configuration in cu29::config - Rust
cu29::config

Function read_configuration

Source
pub fn read_configuration(config_filename: &str) -> CuResult<CuConfig>
Expand description

Read a copper configuration from a file.

+read_configuration in cu29::config - Rust
cu29::config

Function read_configuration

Source
pub fn read_configuration(config_filename: &str) -> CuResult<CuConfig>
Expand description

Read a copper configuration from a file.

\ No newline at end of file diff --git a/cu29/config/fn.read_configuration_str.html b/cu29/config/fn.read_configuration_str.html index ffb1edfc9..53ffe178e 100644 --- a/cu29/config/fn.read_configuration_str.html +++ b/cu29/config/fn.read_configuration_str.html @@ -1,2 +1,2 @@ -read_configuration_str in cu29::config - Rust
cu29::config

Function read_configuration_str

Source
pub fn read_configuration_str(config_content: String) -> CuResult<CuConfig>
Expand description

Read a copper configuration from a file.

+read_configuration_str in cu29::config - Rust
cu29::config

Function read_configuration_str

Source
pub fn read_configuration_str(config_content: String) -> CuResult<CuConfig>
Expand description

Read a copper configuration from a file.

\ No newline at end of file diff --git a/cu29/config/index.html b/cu29/config/index.html index 411c25dcb..cc66d8b50 100644 --- a/cu29/config/index.html +++ b/cu29/config/index.html @@ -1,4 +1,4 @@ -cu29::config - Rust
cu29

Module config

Source
Expand description

This module defines the configuration of the copper runtime. +cu29::config - Rust

cu29

Module config

Source
Expand description

This module defines the configuration of the copper runtime. The configuration is a directed graph where nodes are tasks and edges are connections between tasks. The configuration is serialized in the RON format. The configuration is used to generate the runtime code at compile time.

diff --git a/cu29/config/struct.Cnx.html b/cu29/config/struct.Cnx.html index 968987fda..e056bd456 100644 --- a/cu29/config/struct.Cnx.html +++ b/cu29/config/struct.Cnx.html @@ -1,4 +1,4 @@ -Cnx in cu29::config - Rust
cu29::config

Struct Cnx

Source
pub struct Cnx {
+Cnx in cu29::config - Rust
cu29::config

Struct Cnx

Source
pub struct Cnx {
     pub msg: String,
     pub batch: Option<u32>,
     pub store: Option<bool>,
@@ -15,7 +15,7 @@
     T: 'static + ?Sized,
Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29/config/struct.ComponentConfig.html b/cu29/config/struct.ComponentConfig.html index ef0898dc4..2eb869e49 100644 --- a/cu29/config/struct.ComponentConfig.html +++ b/cu29/config/struct.ComponentConfig.html @@ -1,4 +1,4 @@ -ComponentConfig in cu29::config - Rust

cu29::config

Struct ComponentConfig

Source
pub struct ComponentConfig(pub HashMap<String, Value>);
Expand description

This is the configuration of a component (like a task config or a monitoring config):w +ComponentConfig in cu29::config - Rust

cu29::config

Struct ComponentConfig

Source
pub struct ComponentConfig(pub HashMap<String, Value>);
Expand description

This is the configuration of a component (like a task config or a monitoring config):w It is a map of key-value pairs. It is given to the new method of the task implementation.

Tuple Fields§

§0: HashMap<String, Value>

Implementations§

Source§

impl ComponentConfig

Source

pub fn new() -> Self

Source

pub fn get<T: From<Value>>(&self, key: &str) -> Option<T>

Source

pub fn set<T: Into<Value>>(&mut self, key: &str, value: T)

Trait Implementations§

Source§

impl Clone for ComponentConfig

Source§

fn clone(&self) -> ComponentConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ComponentConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ComponentConfig

Source§

fn default() -> ComponentConfig

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for ComponentConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where @@ -7,7 +7,7 @@ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29/config/struct.CuConfig.html b/cu29/config/struct.CuConfig.html index 456dca5f4..7852066b2 100644 --- a/cu29/config/struct.CuConfig.html +++ b/cu29/config/struct.CuConfig.html @@ -1,4 +1,4 @@ -CuConfig in cu29::config - Rust

cu29::config

Struct CuConfig

Source
pub struct CuConfig {
+CuConfig in cu29::config - Rust
cu29::config

Struct CuConfig

Source
pub struct CuConfig {
     pub graph: StableDiGraph<Node, Cnx, NodeId>,
     /* private fields */
 }
Expand description

CuConfig is the programmatic representation of the configuration graph. @@ -34,7 +34,7 @@ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29/config/struct.MonitorConfig.html b/cu29/config/struct.MonitorConfig.html index b90e5a9b4..03fed8739 100644 --- a/cu29/config/struct.MonitorConfig.html +++ b/cu29/config/struct.MonitorConfig.html @@ -1,10 +1,10 @@ -MonitorConfig in cu29::config - Rust

cu29::config

Struct MonitorConfig

Source
pub struct MonitorConfig { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl Clone for MonitorConfig

Source§

fn clone(&self) -> MonitorConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MonitorConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for MonitorConfig

Source§

fn default() -> MonitorConfig

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for MonitorConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +MonitorConfig in cu29::config - Rust
cu29::config

Struct MonitorConfig

Source
pub struct MonitorConfig { /* private fields */ }

Implementations§

Trait Implementations§

Source§

impl Clone for MonitorConfig

Source§

fn clone(&self) -> MonitorConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MonitorConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for MonitorConfig

Source§

fn default() -> MonitorConfig

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for MonitorConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for MonitorConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29/config/struct.Node.html b/cu29/config/struct.Node.html index 9f6ce9a58..d6272cbae 100644 --- a/cu29/config/struct.Node.html +++ b/cu29/config/struct.Node.html @@ -1,4 +1,4 @@ -Node in cu29::config - Rust

cu29::config

Struct Node

Source
pub struct Node { /* private fields */ }
Expand description

A node in the configuration graph. +Node in cu29::config - Rust

cu29::config

Struct Node

Source
pub struct Node { /* private fields */ }
Expand description

A node in the configuration graph. A node represents a Task in the system Graph.

Implementations§

Source§

impl Node

Source

pub fn new(id: &str, ptype: &str) -> Self

Source

pub fn get_id(&self) -> String

Source

pub fn set_type(self, name: Option<String>) -> Self

Source

pub fn get_type(&self) -> &str

Source

pub fn get_instance_config(&self) -> Option<&ComponentConfig>

Source

pub fn get_param<T: From<Value>>(&self, key: &str) -> Option<T>

Source

pub fn set_param<T: Into<Value>>(&mut self, key: &str, value: T)

Trait Implementations§

Source§

impl Clone for Node

Source§

fn clone(&self) -> Node

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Node

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Node

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for Node

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where @@ -6,7 +6,7 @@ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29/config/struct.Value.html b/cu29/config/struct.Value.html index 424e5e35b..5e9aeaaba 100644 --- a/cu29/config/struct.Value.html +++ b/cu29/config/struct.Value.html @@ -1,4 +1,4 @@ -Value in cu29::config - Rust

cu29::config

Struct Value

Source
pub struct Value(/* private fields */);
Expand description

Wrapper around the ron::Value to allow for custom serialization.

+Value in cu29::config - Rust
cu29::config

Struct Value

Source
pub struct Value(/* private fields */);
Expand description

Wrapper around the ron::Value to allow for custom serialization.

Trait Implementations§

Source§

impl Clone for Value

Source§

fn clone(&self) -> Value

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Value

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Value

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for Value

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<String> for Value

Source§

fn from(value: String) -> Self

Converts to this type from the input type.
Source§

impl From<Value> for String

Source§

fn from(value: Value) -> Self

Converts to this type from the input type.
Source§

impl From<Value> for bool

Source§

fn from(value: Value) -> Self

Converts to this type from the input type.
Source§

impl From<Value> for f64

Source§

fn from(value: Value) -> Self

Converts to this type from the input type.
Source§

impl From<Value> for i32

Source§

fn from(value: Value) -> Self

Converts to this type from the input type.
Source§

impl From<Value> for u32

Source§

fn from(value: Value) -> Self

Converts to this type from the input type.
Source§

impl From<Value> for u8

Source§

fn from(value: Value) -> Self

Converts to this type from the input type.
Source§

impl From<f64> for Value

Source§

fn from(value: f64) -> Self

Converts to this type from the input type.
Source§

impl From<i32> for Value

Source§

fn from(value: i32) -> Self

Converts to this type from the input type.
Source§

impl From<u16> for Value

Source§

fn from(value: u16) -> Self

Converts to this type from the input type.
Source§

impl From<u32> for Value

Source§

fn from(value: u32) -> Self

Converts to this type from the input type.
Source§

impl From<u8> for Value

Source§

fn from(value: u8) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for Value

Source§

fn eq(&self, other: &Value) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Value

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where @@ -6,7 +6,7 @@ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29/config/type.NodeId.html b/cu29/config/type.NodeId.html index 8063b76d8..2e0739c2e 100644 --- a/cu29/config/type.NodeId.html +++ b/cu29/config/type.NodeId.html @@ -1,3 +1,3 @@ -NodeId in cu29::config - Rust

cu29::config

Type Alias NodeId

Source
pub type NodeId = u32;
Expand description

NodeId is the unique identifier of a node in the configuration graph for petgraph +NodeId in cu29::config - Rust

cu29::config

Type Alias NodeId

Source
pub type NodeId = u32;
Expand description

NodeId is the unique identifier of a node in the configuration graph for petgraph and the code generation.

\ No newline at end of file diff --git a/cu29/copperlist/enum.CopperListState.html b/cu29/copperlist/enum.CopperListState.html index 35c6a7576..ca321f4fc 100644 --- a/cu29/copperlist/enum.CopperListState.html +++ b/cu29/copperlist/enum.CopperListState.html @@ -1,4 +1,4 @@ -CopperListState in cu29::copperlist - Rust
cu29::copperlist

Enum CopperListState

Source
pub enum CopperListState {
+CopperListState in cu29::copperlist - Rust
cu29::copperlist

Enum CopperListState

Source
pub enum CopperListState {
     Free,
     Initialized,
     Processing,
@@ -13,7 +13,7 @@
     T: 'static + ?Sized,
Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29/copperlist/index.html b/cu29/copperlist/index.html index 8a7b7068c..8fda55814 100644 --- a/cu29/copperlist/index.html +++ b/cu29/copperlist/index.html @@ -1,4 +1,4 @@ -cu29::copperlist - Rust

cu29

Module copperlist

Source
Expand description

CopperList is the main data structure used by Copper to communicate between tasks. +cu29::copperlist - Rust

cu29

Module copperlist

Source
Expand description

CopperList is the main data structure used by Copper to communicate between tasks. It is a queue that can be used to store preallocated messages between tasks in memory order.

Structs§

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29/copperlist/struct.CopperList.html b/cu29/copperlist/struct.CopperList.html index 5993ad96c..eecab3692 100644 --- a/cu29/copperlist/struct.CopperList.html +++ b/cu29/copperlist/struct.CopperList.html @@ -1,4 +1,4 @@ -CopperList in cu29::copperlist - Rust

cu29::copperlist

Struct CopperList

Source
pub struct CopperList<P: CopperListTuple> {
+CopperList in cu29::copperlist - Rust
cu29::copperlist

Struct CopperList

Source
pub struct CopperList<P: CopperListTuple> {
     pub id: u32,
     pub msgs: P,
     /* private fields */
diff --git a/cu29/copperlist/struct.CuListsManager.html b/cu29/copperlist/struct.CuListsManager.html
index 9b47dac42..c5892cb06 100644
--- a/cu29/copperlist/struct.CuListsManager.html
+++ b/cu29/copperlist/struct.CuListsManager.html
@@ -1,4 +1,4 @@
-CuListsManager in cu29::copperlist - Rust
cu29::copperlist

Struct CuListsManager

Source
pub struct CuListsManager<P: CopperListTuple, const N: usize> { /* private fields */ }
Expand description

This structure maintains the entire memory needed by Copper for one loop for the inter tasks communication within a process. +CuListsManager in cu29::copperlist - Rust

cu29::copperlist

Struct CuListsManager

Source
pub struct CuListsManager<P: CopperListTuple, const N: usize> { /* private fields */ }
Expand description

This structure maintains the entire memory needed by Copper for one loop for the inter tasks communication within a process. P or Payload is typically a Tuple of various types of messages that are exchanged between tasks. N is the maximum number of in flight Copper List the runtime can support.

Implementations§

Source§

impl<P: CopperListTuple, const N: usize> CuListsManager<P, N>

Source

pub fn new() -> Self

Source

pub fn len(&self) -> usize

Returns the current number of elements in the queue.

diff --git a/cu29/copperlist/type.AscIter.html b/cu29/copperlist/type.AscIter.html index 385eefdef..af23077e4 100644 --- a/cu29/copperlist/type.AscIter.html +++ b/cu29/copperlist/type.AscIter.html @@ -1 +1 @@ -AscIter in cu29::copperlist - Rust
cu29::copperlist

Type Alias AscIter

Source
pub type AscIter<'a, T> = Chain<Iter<'a, T>, Iter<'a, T>>;

Aliased Type§

struct AscIter<'a, T> { /* private fields */ }
\ No newline at end of file +AscIter in cu29::copperlist - Rust
cu29::copperlist

Type Alias AscIter

Source
pub type AscIter<'a, T> = Chain<Iter<'a, T>, Iter<'a, T>>;

Aliased Type§

struct AscIter<'a, T> { /* private fields */ }
\ No newline at end of file diff --git a/cu29/copperlist/type.AscIterMut.html b/cu29/copperlist/type.AscIterMut.html index c3341af0d..4fb2e65fa 100644 --- a/cu29/copperlist/type.AscIterMut.html +++ b/cu29/copperlist/type.AscIterMut.html @@ -1 +1 @@ -AscIterMut in cu29::copperlist - Rust
cu29::copperlist

Type Alias AscIterMut

Source
pub type AscIterMut<'a, T> = Chain<IterMut<'a, T>, IterMut<'a, T>>;

Aliased Type§

struct AscIterMut<'a, T> { /* private fields */ }
\ No newline at end of file +AscIterMut in cu29::copperlist - Rust
cu29::copperlist

Type Alias AscIterMut

Source
pub type AscIterMut<'a, T> = Chain<IterMut<'a, T>, IterMut<'a, T>>;

Aliased Type§

struct AscIterMut<'a, T> { /* private fields */ }
\ No newline at end of file diff --git a/cu29/copperlist/type.Iter.html b/cu29/copperlist/type.Iter.html index 3a3796236..eb75025da 100644 --- a/cu29/copperlist/type.Iter.html +++ b/cu29/copperlist/type.Iter.html @@ -1 +1 @@ -Iter in cu29::copperlist - Rust
cu29::copperlist

Type Alias Iter

Source
pub type Iter<'a, T> = Chain<Rev<Iter<'a, T>>, Rev<Iter<'a, T>>>;

Aliased Type§

struct Iter<'a, T> { /* private fields */ }
\ No newline at end of file +Iter in cu29::copperlist - Rust
cu29::copperlist

Type Alias Iter

Source
pub type Iter<'a, T> = Chain<Rev<Iter<'a, T>>, Rev<Iter<'a, T>>>;

Aliased Type§

struct Iter<'a, T> { /* private fields */ }
\ No newline at end of file diff --git a/cu29/copperlist/type.IterMut.html b/cu29/copperlist/type.IterMut.html index 6456f6999..052bc47a9 100644 --- a/cu29/copperlist/type.IterMut.html +++ b/cu29/copperlist/type.IterMut.html @@ -1 +1 @@ -IterMut in cu29::copperlist - Rust
cu29::copperlist

Type Alias IterMut

Source
pub type IterMut<'a, T> = Chain<Rev<IterMut<'a, T>>, Rev<IterMut<'a, T>>>;

Aliased Type§

struct IterMut<'a, T> { /* private fields */ }
\ No newline at end of file +IterMut in cu29::copperlist - Rust
cu29::copperlist

Type Alias IterMut

Source
pub type IterMut<'a, T> = Chain<Rev<IterMut<'a, T>>, Rev<IterMut<'a, T>>>;

Aliased Type§

struct IterMut<'a, T> { /* private fields */ }
\ No newline at end of file diff --git a/cu29/curuntime/enum.CuExecutionUnit.html b/cu29/curuntime/enum.CuExecutionUnit.html index 1c45aebc5..48879317d 100644 --- a/cu29/curuntime/enum.CuExecutionUnit.html +++ b/cu29/curuntime/enum.CuExecutionUnit.html @@ -1,4 +1,4 @@ -CuExecutionUnit in cu29::curuntime - Rust
cu29::curuntime

Enum CuExecutionUnit

Source
pub enum CuExecutionUnit {
+CuExecutionUnit in cu29::curuntime - Rust
cu29::curuntime

Enum CuExecutionUnit

Source
pub enum CuExecutionUnit {
     Step(CuExecutionStep),
     Loop(CuExecutionLoop),
 }
Expand description

This structure represents a step in the execution plan.

diff --git a/cu29/curuntime/enum.CuTaskType.html b/cu29/curuntime/enum.CuTaskType.html index 7904dfd1d..812737484 100644 --- a/cu29/curuntime/enum.CuTaskType.html +++ b/cu29/curuntime/enum.CuTaskType.html @@ -1,4 +1,4 @@ -CuTaskType in cu29::curuntime - Rust
cu29::curuntime

Enum CuTaskType

Source
pub enum CuTaskType {
+CuTaskType in cu29::curuntime - Rust
cu29::curuntime

Enum CuTaskType

Source
pub enum CuTaskType {
     Source,
     Regular,
     Sink,
@@ -13,7 +13,7 @@
     T: 'static + ?Sized,
Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<Q, K> Equivalent<K> for Q
where + T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, diff --git a/cu29/curuntime/fn.compute_runtime_plan.html b/cu29/curuntime/fn.compute_runtime_plan.html index a1f13a61e..0583d9608 100644 --- a/cu29/curuntime/fn.compute_runtime_plan.html +++ b/cu29/curuntime/fn.compute_runtime_plan.html @@ -1,3 +1,3 @@ -compute_runtime_plan in cu29::curuntime - Rust
cu29::curuntime

Function compute_runtime_plan

Source
pub fn compute_runtime_plan(config: &CuConfig) -> CuResult<CuExecutionLoop>
Expand description

This is the main heuristics to compute an execution plan at compilation time. +compute_runtime_plan in cu29::curuntime - Rust

cu29::curuntime

Function compute_runtime_plan

Source
pub fn compute_runtime_plan(config: &CuConfig) -> CuResult<CuExecutionLoop>
Expand description

This is the main heuristics to compute an execution plan at compilation time. TODO: Make that heuristic plugable.

\ No newline at end of file diff --git a/cu29/curuntime/fn.find_task_type_for_id.html b/cu29/curuntime/fn.find_task_type_for_id.html index 0ba8673cd..552b0714a 100644 --- a/cu29/curuntime/fn.find_task_type_for_id.html +++ b/cu29/curuntime/fn.find_task_type_for_id.html @@ -1,4 +1,4 @@ -find_task_type_for_id in cu29::curuntime - Rust
cu29::curuntime

Function find_task_type_for_id

Source
pub fn find_task_type_for_id(
+find_task_type_for_id in cu29::curuntime - Rust
cu29::curuntime

Function find_task_type_for_id

Source
pub fn find_task_type_for_id(
     graph: &StableDiGraph<Node, Cnx, NodeId>,
     node_id: NodeId,
 ) -> CuTaskType
\ No newline at end of file diff --git a/cu29/curuntime/index.html b/cu29/curuntime/index.html index 66d62952e..a7ca7ff47 100644 --- a/cu29/curuntime/index.html +++ b/cu29/curuntime/index.html @@ -1,4 +1,4 @@ -cu29::curuntime - Rust
cu29

Module curuntime

Source
Expand description

CuRuntime is the heart of what copper is running on the robot. +cu29::curuntime - Rust

cu29

Module curuntime

Source
Expand description

CuRuntime is the heart of what copper is running on the robot. It is exposed to the user via the copper_runtime macro injecting it as a field in their application struct.

Structs§

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29/cutask/struct.CuMsgMetadata.html b/cu29/cutask/struct.CuMsgMetadata.html index 0b46ce9a5..7397d494e 100644 --- a/cu29/cutask/struct.CuMsgMetadata.html +++ b/cu29/cutask/struct.CuMsgMetadata.html @@ -1,4 +1,4 @@ -CuMsgMetadata in cu29::cutask - Rust

cu29::cutask

Struct CuMsgMetadata

Source
pub struct CuMsgMetadata {
+CuMsgMetadata in cu29::cutask - Rust
cu29::cutask

Struct CuMsgMetadata

Source
pub struct CuMsgMetadata {
     pub before_process: OptionCuTime,
     pub after_process: OptionCuTime,
     pub tov: OptionCuTime,
@@ -17,7 +17,7 @@
     T: 'static + ?Sized,
Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29/cutask/trait.CuMsgPack.html b/cu29/cutask/trait.CuMsgPack.html index 18c317946..efd0f8eee 100644 --- a/cu29/cutask/trait.CuMsgPack.html +++ b/cu29/cutask/trait.CuMsgPack.html @@ -1 +1 @@ -CuMsgPack in cu29::cutask - Rust

cu29::cutask

Trait CuMsgPack

Source
pub trait CuMsgPack<'cl> { }

Implementations on Foreign Types§

Source§

impl<'cl> CuMsgPack<'cl> for ()

Source§

impl<'cl, T1: CuMsgPayload + 'cl, T2: CuMsgPayload + 'cl> CuMsgPack<'cl> for (&'cl CuMsg<T1>, &'cl CuMsg<T2>)

Source§

impl<'cl, T1: CuMsgPayload + 'cl, T2: CuMsgPayload + 'cl, T3: CuMsgPayload + 'cl> CuMsgPack<'cl> for (&'cl CuMsg<T1>, &'cl CuMsg<T2>, &'cl CuMsg<T3>)

Source§

impl<'cl, T1: CuMsgPayload + 'cl, T2: CuMsgPayload + 'cl, T3: CuMsgPayload + 'cl, T4: CuMsgPayload + 'cl> CuMsgPack<'cl> for (&'cl CuMsg<T1>, &'cl CuMsg<T2>, &'cl CuMsg<T3>, &'cl CuMsg<T4>)

Source§

impl<'cl, T1: CuMsgPayload + 'cl, T2: CuMsgPayload + 'cl, T3: CuMsgPayload + 'cl, T4: CuMsgPayload + 'cl, T5: CuMsgPayload + 'cl> CuMsgPack<'cl> for (&'cl CuMsg<T1>, &'cl CuMsg<T2>, &'cl CuMsg<T3>, &'cl CuMsg<T4>, &'cl CuMsg<T5>)

Source§

impl<'cl, T: CuMsgPayload> CuMsgPack<'cl> for (&'cl CuMsg<T>,)

Source§

impl<'cl, T: CuMsgPayload> CuMsgPack<'cl> for (&'cl mut CuMsg<T>,)

Implementors§

Source§

impl<'cl, T: CuMsgPayload> CuMsgPack<'cl> for &'cl CuMsg<T>

Source§

impl<'cl, T: CuMsgPayload> CuMsgPack<'cl> for &'cl mut CuMsg<T>

\ No newline at end of file +CuMsgPack in cu29::cutask - Rust
cu29::cutask

Trait CuMsgPack

Source
pub trait CuMsgPack<'cl> { }

Implementations on Foreign Types§

Source§

impl<'cl> CuMsgPack<'cl> for ()

Source§

impl<'cl, T1: CuMsgPayload + 'cl, T2: CuMsgPayload + 'cl> CuMsgPack<'cl> for (&'cl CuMsg<T1>, &'cl CuMsg<T2>)

Source§

impl<'cl, T1: CuMsgPayload + 'cl, T2: CuMsgPayload + 'cl, T3: CuMsgPayload + 'cl> CuMsgPack<'cl> for (&'cl CuMsg<T1>, &'cl CuMsg<T2>, &'cl CuMsg<T3>)

Source§

impl<'cl, T1: CuMsgPayload + 'cl, T2: CuMsgPayload + 'cl, T3: CuMsgPayload + 'cl, T4: CuMsgPayload + 'cl> CuMsgPack<'cl> for (&'cl CuMsg<T1>, &'cl CuMsg<T2>, &'cl CuMsg<T3>, &'cl CuMsg<T4>)

Source§

impl<'cl, T1: CuMsgPayload + 'cl, T2: CuMsgPayload + 'cl, T3: CuMsgPayload + 'cl, T4: CuMsgPayload + 'cl, T5: CuMsgPayload + 'cl> CuMsgPack<'cl> for (&'cl CuMsg<T1>, &'cl CuMsg<T2>, &'cl CuMsg<T3>, &'cl CuMsg<T4>, &'cl CuMsg<T5>)

Source§

impl<'cl, T: CuMsgPayload> CuMsgPack<'cl> for (&'cl CuMsg<T>,)

Source§

impl<'cl, T: CuMsgPayload> CuMsgPack<'cl> for (&'cl mut CuMsg<T>,)

Implementors§

Source§

impl<'cl, T: CuMsgPayload> CuMsgPack<'cl> for &'cl CuMsg<T>

Source§

impl<'cl, T: CuMsgPayload> CuMsgPack<'cl> for &'cl mut CuMsg<T>

\ No newline at end of file diff --git a/cu29/cutask/trait.CuMsgPayload.html b/cu29/cutask/trait.CuMsgPayload.html index 84522258a..ed5178a12 100644 --- a/cu29/cutask/trait.CuMsgPayload.html +++ b/cu29/cutask/trait.CuMsgPayload.html @@ -1,4 +1,4 @@ -CuMsgPayload in cu29::cutask - Rust
cu29::cutask

Trait CuMsgPayload

Source
pub trait CuMsgPayload:
+CuMsgPayload in cu29::cutask - Rust
cu29::cutask

Trait CuMsgPayload

Source
pub trait CuMsgPayload:
     Default
     + Debug
     + Clone
diff --git a/cu29/cutask/trait.CuSinkTask.html b/cu29/cutask/trait.CuSinkTask.html
index 73fbbcda0..a1efae2ca 100644
--- a/cu29/cutask/trait.CuSinkTask.html
+++ b/cu29/cutask/trait.CuSinkTask.html
@@ -1,4 +1,4 @@
-CuSinkTask in cu29::cutask - Rust
cu29::cutask

Trait CuSinkTask

Source
pub trait CuSinkTask<'cl>: CuTaskLifecycle {
+CuSinkTask in cu29::cutask - Rust
cu29::cutask

Trait CuSinkTask

Source
pub trait CuSinkTask<'cl>: CuTaskLifecycle {
     type Input: CuMsgPack<'cl>;
 
     // Required method
diff --git a/cu29/cutask/trait.CuSrcTask.html b/cu29/cutask/trait.CuSrcTask.html
index 943bdaccd..9ddd96e65 100644
--- a/cu29/cutask/trait.CuSrcTask.html
+++ b/cu29/cutask/trait.CuSrcTask.html
@@ -1,4 +1,4 @@
-CuSrcTask in cu29::cutask - Rust
cu29::cutask

Trait CuSrcTask

Source
pub trait CuSrcTask<'cl>: CuTaskLifecycle {
+CuSrcTask in cu29::cutask - Rust
cu29::cutask

Trait CuSrcTask

Source
pub trait CuSrcTask<'cl>: CuTaskLifecycle {
     type Output: CuMsgPack<'cl>;
 
     // Required method
diff --git a/cu29/cutask/trait.CuTask.html b/cu29/cutask/trait.CuTask.html
index 2a64d6335..856ef4236 100644
--- a/cu29/cutask/trait.CuTask.html
+++ b/cu29/cutask/trait.CuTask.html
@@ -1,4 +1,4 @@
-CuTask in cu29::cutask - Rust
cu29::cutask

Trait CuTask

Source
pub trait CuTask<'cl>: CuTaskLifecycle {
+CuTask in cu29::cutask - Rust
cu29::cutask

Trait CuTask

Source
pub trait CuTask<'cl>: CuTaskLifecycle {
     type Input: CuMsgPack<'cl>;
     type Output: CuMsgPack<'cl>;
 
diff --git a/cu29/cutask/trait.CuTaskLifecycle.html b/cu29/cutask/trait.CuTaskLifecycle.html
index 9610cffd6..05c2c2610 100644
--- a/cu29/cutask/trait.CuTaskLifecycle.html
+++ b/cu29/cutask/trait.CuTaskLifecycle.html
@@ -1,4 +1,4 @@
-CuTaskLifecycle in cu29::cutask - Rust
cu29::cutask

Trait CuTaskLifecycle

Source
pub trait CuTaskLifecycle: Freezable {
+CuTaskLifecycle in cu29::cutask - Rust
cu29::cutask

Trait CuTaskLifecycle

Source
pub trait CuTaskLifecycle: Freezable {
     // Required method
     fn new(config: Option<&ComponentConfig>) -> CuResult<Self>
        where Self: Sized;
diff --git a/cu29/cutask/trait.Freezable.html b/cu29/cutask/trait.Freezable.html
index fed98f908..bf3085f4d 100644
--- a/cu29/cutask/trait.Freezable.html
+++ b/cu29/cutask/trait.Freezable.html
@@ -1,4 +1,4 @@
-Freezable in cu29::cutask - Rust
cu29::cutask

Trait Freezable

Source
pub trait Freezable {
+Freezable in cu29::cutask - Rust
cu29::cutask

Trait Freezable

Source
pub trait Freezable {
     // Provided methods
     fn freeze<E: Encoder>(&self, encoder: &mut E) -> Result<(), EncodeError> { ... }
     fn thaw<D: Decoder>(&mut self, decoder: &mut D) -> Result<(), DecodeError> { ... }
diff --git a/cu29/enum.UnifiedLogType.html b/cu29/enum.UnifiedLogType.html
index f29f1f066..4d1aa3cd1 100644
--- a/cu29/enum.UnifiedLogType.html
+++ b/cu29/enum.UnifiedLogType.html
@@ -1,4 +1,4 @@
-UnifiedLogType in cu29 - Rust
cu29

Enum UnifiedLogType

Source
pub enum UnifiedLogType {
+UnifiedLogType in cu29 - Rust
cu29

Enum UnifiedLogType

Source
pub enum UnifiedLogType {
     Empty,
     StructuredLogLine,
     CopperList,
@@ -12,7 +12,7 @@
     T: 'static + ?Sized,
Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29/index.html b/cu29/index.html index 2c56b6284..97b03e30e 100644 --- a/cu29/index.html +++ b/cu29/index.html @@ -1,4 +1,4 @@ -cu29 - Rust

Crate cu29

Source
Expand description
logo +cu29 - Rust

Crate cu29

Source
Expand description
logo

§

§Copper

copper GitHub last commit diff --git a/cu29/macro.input_msg.html b/cu29/macro.input_msg.html index df3fa23f4..f08da9ba3 100644 --- a/cu29/macro.input_msg.html +++ b/cu29/macro.input_msg.html @@ -1,4 +1,4 @@ -input_msg in cu29 - Rust

cu29

Macro input_msg

Source
macro_rules! input_msg {
-    ($lifetime:lifetime, $ty:ty) => { ... };
-    ($lifetime:lifetime, $($ty:ty),*) => { ... };
-}
\ No newline at end of file +input_msg in cu29 - Rust
cu29

Macro input_msg

Source
macro_rules! input_msg {
+    ($lifetime:lifetime, $ty:ty) => { ... };
+    ($lifetime:lifetime, $($ty:ty),*) => { ... };
+}
\ No newline at end of file diff --git a/cu29/macro.output_msg.html b/cu29/macro.output_msg.html index 24b55d161..081de4574 100644 --- a/cu29/macro.output_msg.html +++ b/cu29/macro.output_msg.html @@ -1,3 +1,3 @@ -output_msg in cu29 - Rust
cu29

Macro output_msg

Source
macro_rules! output_msg {
-    ($lifetime:lifetime, $ty:ty) => { ... };
-}
\ No newline at end of file +output_msg in cu29 - Rust
cu29

Macro output_msg

Source
macro_rules! output_msg {
+    ($lifetime:lifetime, $ty:ty) => { ... };
+}
\ No newline at end of file diff --git a/cu29/monitoring/enum.CuTaskState.html b/cu29/monitoring/enum.CuTaskState.html index 95a01808a..aee404158 100644 --- a/cu29/monitoring/enum.CuTaskState.html +++ b/cu29/monitoring/enum.CuTaskState.html @@ -1,4 +1,4 @@ -CuTaskState in cu29::monitoring - Rust
cu29::monitoring

Enum CuTaskState

Source
pub enum CuTaskState {
+CuTaskState in cu29::monitoring - Rust
cu29::monitoring

Enum CuTaskState

Source
pub enum CuTaskState {
     Start,
     Preprocess,
     Process,
diff --git a/cu29/monitoring/enum.Decision.html b/cu29/monitoring/enum.Decision.html
index 4d2011cb2..232b131e9 100644
--- a/cu29/monitoring/enum.Decision.html
+++ b/cu29/monitoring/enum.Decision.html
@@ -1,4 +1,4 @@
-Decision in cu29::monitoring - Rust
cu29::monitoring

Enum Decision

Source
pub enum Decision {
+Decision in cu29::monitoring - Rust
cu29::monitoring

Enum Decision

Source
pub enum Decision {
     Abort,
     Ignore,
     Shutdown,
diff --git a/cu29/monitoring/index.html b/cu29/monitoring/index.html
index 99fe6e966..f62186f82 100644
--- a/cu29/monitoring/index.html
+++ b/cu29/monitoring/index.html
@@ -1,4 +1,4 @@
-cu29::monitoring - Rust
cu29

Module monitoring

Source
Expand description

Some basic internal monitoring tooling Copper uses to monitor itself and the tasks it is running.

+cu29::monitoring - Rust
cu29

Module monitoring

Source
Expand description

Some basic internal monitoring tooling Copper uses to monitor itself and the tasks it is running.

Structs§

  • A simple allocator that counts the number of bytes allocated and deallocated.
  • A Specialized statistics object for CuDuration. It will also keep track of the jitter between the values.
  • Accumulative stat object that can give your some real time statistics.
  • A do nothing monitor if no monitor is provided. This is basically defining the default behavior of Copper in case of error.
  • A simple struct that counts the number of bytes allocated and deallocated in a scope.

Enums§

Statics§

Traits§

  • Trait to implement a monitoring task.
\ No newline at end of file diff --git a/cu29/monitoring/static.GLOBAL.html b/cu29/monitoring/static.GLOBAL.html index 331c33fc9..625c3b434 100644 --- a/cu29/monitoring/static.GLOBAL.html +++ b/cu29/monitoring/static.GLOBAL.html @@ -1 +1 @@ -GLOBAL in cu29::monitoring - Rust
cu29::monitoring

Static GLOBAL

Source
pub static GLOBAL: CountingAllocator
\ No newline at end of file +GLOBAL in cu29::monitoring - Rust
cu29::monitoring

Static GLOBAL

Source
pub static GLOBAL: CountingAllocator
\ No newline at end of file diff --git a/cu29/monitoring/struct.CountingAllocator.html b/cu29/monitoring/struct.CountingAllocator.html index 9e3f39520..2e86e3f8c 100644 --- a/cu29/monitoring/struct.CountingAllocator.html +++ b/cu29/monitoring/struct.CountingAllocator.html @@ -1,4 +1,4 @@ -CountingAllocator in cu29::monitoring - Rust
cu29::monitoring

Struct CountingAllocator

Source
pub struct CountingAllocator { /* private fields */ }
Expand description

A simple allocator that counts the number of bytes allocated and deallocated.

+CountingAllocator in cu29::monitoring - Rust
cu29::monitoring

Struct CountingAllocator

Source
pub struct CountingAllocator { /* private fields */ }
Expand description

A simple allocator that counts the number of bytes allocated and deallocated.

Implementations§

Source§

impl CountingAllocator

Source

pub const fn new() -> Self

Source

pub fn get_allocated(&self) -> usize

Source

pub fn get_deallocated(&self) -> usize

Source

pub fn reset(&self)

Trait Implementations§

Source§

impl Default for CountingAllocator

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl GlobalAlloc for CountingAllocator

Source§

unsafe fn alloc(&self, layout: Layout) -> *mut u8

Allocates memory as described by the given layout. Read more
Source§

unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout)

Deallocates the block of memory at the given ptr pointer with the given layout. Read more
1.28.0 · Source§

unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8

Behaves like alloc, but also ensures that the contents are set to zero before being returned. Read more
1.28.0 · Source§

unsafe fn realloc( &self, diff --git a/cu29/monitoring/struct.CuDurationStatistics.html b/cu29/monitoring/struct.CuDurationStatistics.html index 701b49211..3b46673b4 100644 --- a/cu29/monitoring/struct.CuDurationStatistics.html +++ b/cu29/monitoring/struct.CuDurationStatistics.html @@ -1,10 +1,10 @@ -CuDurationStatistics in cu29::monitoring - Rust
cu29::monitoring

Struct CuDurationStatistics

Source
pub struct CuDurationStatistics { /* private fields */ }
Expand description

A Specialized statistics object for CuDuration. +CuDurationStatistics in cu29::monitoring - Rust

cu29::monitoring

Struct CuDurationStatistics

Source
pub struct CuDurationStatistics { /* private fields */ }
Expand description

A Specialized statistics object for CuDuration. It will also keep track of the jitter between the values.

Implementations§

Source§

impl CuDurationStatistics

Source

pub fn new(max: CuDuration) -> Self

Source

pub fn min(&self) -> CuDuration

Source

pub fn max(&self) -> CuDuration

Source

pub fn mean(&self) -> CuDuration

Source

pub fn percentile(&self, percentile: f64) -> CuDuration

Source

pub fn stddev(&self) -> CuDuration

Source

pub fn len(&self) -> u64

Source

pub fn jitter_min(&self) -> CuDuration

Source

pub fn jitter_max(&self) -> CuDuration

Source

pub fn jitter_mean(&self) -> CuDuration

Source

pub fn jitter_stddev(&self) -> CuDuration

Source

pub fn jitter_percentile(&self, percentile: f64) -> CuDuration

Source

pub fn record(&mut self, value: CuDuration)

Source

pub fn reset(&mut self)

Trait Implementations§

Source§

impl Clone for CuDurationStatistics

Source§

fn clone(&self) -> CuDurationStatistics

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CuDurationStatistics

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29/monitoring/struct.LiveStatistics.html b/cu29/monitoring/struct.LiveStatistics.html index 19dbdca18..4b991f50c 100644 --- a/cu29/monitoring/struct.LiveStatistics.html +++ b/cu29/monitoring/struct.LiveStatistics.html @@ -1,10 +1,10 @@ -LiveStatistics in cu29::monitoring - Rust

cu29::monitoring

Struct LiveStatistics

Source
pub struct LiveStatistics { /* private fields */ }
Expand description

Accumulative stat object that can give your some real time statistics.

+LiveStatistics in cu29::monitoring - Rust
cu29::monitoring

Struct LiveStatistics

Source
pub struct LiveStatistics { /* private fields */ }
Expand description

Accumulative stat object that can give your some real time statistics.

Implementations§

Source§

impl LiveStatistics

Source

pub fn new_unbounded() -> Self

Source

pub fn new_with_max(max: u64) -> Self

Source

pub fn min(&self) -> u64

Source

pub fn max(&self) -> u64

Source

pub fn mean(&self) -> f64

Source

pub fn percentile(&self, percentile: f64) -> u64

Source

pub fn record(&mut self, value: u64)

Adds a value to the statistics.

Source

pub fn len(&self) -> u64

Source

pub fn reset(&mut self)

Trait Implementations§

Source§

impl Clone for LiveStatistics

Source§

fn clone(&self) -> LiveStatistics

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for LiveStatistics

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29/monitoring/struct.NoMonitor.html b/cu29/monitoring/struct.NoMonitor.html index fbc6fcbae..210431369 100644 --- a/cu29/monitoring/struct.NoMonitor.html +++ b/cu29/monitoring/struct.NoMonitor.html @@ -1,4 +1,4 @@ -NoMonitor in cu29::monitoring - Rust

cu29::monitoring

Struct NoMonitor

Source
pub struct NoMonitor {}
Expand description

A do nothing monitor if no monitor is provided. +NoMonitor in cu29::monitoring - Rust

cu29::monitoring

Struct NoMonitor

Source
pub struct NoMonitor {}
Expand description

A do nothing monitor if no monitor is provided. This is basically defining the default behavior of Copper in case of error.

Trait Implementations§

Source§

impl CuMonitor for NoMonitor

Source§

fn new(_config: &CuConfig, _taskids: &'static [&'static str]) -> CuResult<Self>

Source§

fn process_copperlist(&self, _msgs: &[&CuMsgMetadata]) -> CuResult<()>

Callback that will be trigger at the end of every copperlist (before, on or after the serialization).
Source§

fn process_error( &self, diff --git a/cu29/monitoring/struct.ScopedAllocCounter.html b/cu29/monitoring/struct.ScopedAllocCounter.html index 7b192e507..a2622ce35 100644 --- a/cu29/monitoring/struct.ScopedAllocCounter.html +++ b/cu29/monitoring/struct.ScopedAllocCounter.html @@ -1,4 +1,4 @@ -ScopedAllocCounter in cu29::monitoring - Rust
cu29::monitoring

Struct ScopedAllocCounter

Source
pub struct ScopedAllocCounter { /* private fields */ }
Expand description

A simple struct that counts the number of bytes allocated and deallocated in a scope.

+ScopedAllocCounter in cu29::monitoring - Rust
cu29::monitoring

Struct ScopedAllocCounter

Source
pub struct ScopedAllocCounter { /* private fields */ }
Expand description

A simple struct that counts the number of bytes allocated and deallocated in a scope.

Implementations§

Trait Implementations§

Source§

impl Default for ScopedAllocCounter

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Drop for ScopedAllocCounter

Build a difference between the number of bytes allocated and deallocated in the scope at drop time.

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where diff --git a/cu29/monitoring/trait.CuMonitor.html b/cu29/monitoring/trait.CuMonitor.html index f183dbb02..96696f1d9 100644 --- a/cu29/monitoring/trait.CuMonitor.html +++ b/cu29/monitoring/trait.CuMonitor.html @@ -1,4 +1,4 @@ -CuMonitor in cu29::monitoring - Rust
cu29::monitoring

Trait CuMonitor

Source
pub trait CuMonitor: Sized {
+CuMonitor in cu29::monitoring - Rust
cu29::monitoring

Trait CuMonitor

Source
pub trait CuMonitor: Sized {
     // Required methods
     fn new(
         config: &CuConfig,
diff --git a/cu29/simulation/enum.CuTaskCallbackState.html b/cu29/simulation/enum.CuTaskCallbackState.html
index 5ad348ecf..597ef3d63 100644
--- a/cu29/simulation/enum.CuTaskCallbackState.html
+++ b/cu29/simulation/enum.CuTaskCallbackState.html
@@ -1,4 +1,4 @@
-CuTaskCallbackState in cu29::simulation - Rust
cu29::simulation

Enum CuTaskCallbackState

Source
pub enum CuTaskCallbackState<'cl, I, O>
where +CuTaskCallbackState in cu29::simulation - Rust
cu29::simulation

Enum CuTaskCallbackState

Source
pub enum CuTaskCallbackState<'cl, I, O>
where I: CuMsgPack<'cl>, O: CuMsgPack<'cl>,
{ New(Option<ComponentConfig>), diff --git a/cu29/simulation/enum.SimOverride.html b/cu29/simulation/enum.SimOverride.html index 4b01f3c67..2bf89d82e 100644 --- a/cu29/simulation/enum.SimOverride.html +++ b/cu29/simulation/enum.SimOverride.html @@ -1,4 +1,4 @@ -SimOverride in cu29::simulation - Rust
cu29::simulation

Enum SimOverride

Source
pub enum SimOverride {
+SimOverride in cu29::simulation - Rust
cu29::simulation

Enum SimOverride

Source
pub enum SimOverride {
     ExecutedBySim,
     ExecuteByRuntime,
     Errored(String),
diff --git a/cu29/simulation/index.html b/cu29/simulation/index.html
index 928607f8d..74c0ad8aa 100644
--- a/cu29/simulation/index.html
+++ b/cu29/simulation/index.html
@@ -1,4 +1,4 @@
-cu29::simulation - Rust
cu29

Module simulation

Source
Expand description

§cu29::simulation Module

+cu29::simulation - Rust
cu29

Module simulation

Source
Expand description

§cu29::simulation Module

The cu29::simulation module provides an interface to simulate tasks in Copper-based systems. It offers structures, traits, and enums that enable hooking into the lifecycle of tasks, adapting their behavior, and integrating them with simulated hardware environments.

diff --git a/cu29/simulation/struct.CuSimSinkTask.html b/cu29/simulation/struct.CuSimSinkTask.html index 3a09e1edb..1aa4d314a 100644 --- a/cu29/simulation/struct.CuSimSinkTask.html +++ b/cu29/simulation/struct.CuSimSinkTask.html @@ -1,4 +1,4 @@ -CuSimSinkTask in cu29::simulation - Rust
cu29::simulation

Struct CuSimSinkTask

Source
pub struct CuSimSinkTask<T> { /* private fields */ }
Expand description

This is a placeholder task for a sink task for the simulations. +CuSimSinkTask in cu29::simulation - Rust

cu29::simulation

Struct CuSimSinkTask

Source
pub struct CuSimSinkTask<T> { /* private fields */ }
Expand description

This is a placeholder task for a sink task for the simulations. It basically does nothing in place of a real driver so it won’t try to initialize any hardware.

Trait Implementations§

Source§

impl<'cl, T: CuMsgPayload + 'cl> CuSinkTask<'cl> for CuSimSinkTask<T>

Source§

type Input = &'cl CuMsg<T>

Source§

fn process(&mut self, _clock: &RobotClock, _input: Self::Input) -> CuResult<()>

Process is the most critical execution of the task. The goal will be to produce the output message as soon as possible. diff --git a/cu29/simulation/struct.CuSimSrcTask.html b/cu29/simulation/struct.CuSimSrcTask.html index 3cb19a685..7c2e6b344 100644 --- a/cu29/simulation/struct.CuSimSrcTask.html +++ b/cu29/simulation/struct.CuSimSrcTask.html @@ -1,4 +1,4 @@ -CuSimSrcTask in cu29::simulation - Rust
cu29::simulation

Struct CuSimSrcTask

Source
pub struct CuSimSrcTask<T> { /* private fields */ }
Expand description

This is a placeholder task for a source task for the simulations. +CuSimSrcTask in cu29::simulation - Rust

cu29::simulation

Struct CuSimSrcTask

Source
pub struct CuSimSrcTask<T> { /* private fields */ }
Expand description

This is a placeholder task for a source task for the simulations. It basically does nothing in place of a real driver so it won’t try to initialize any hardware.

Trait Implementations§

Source§

impl<'cl, T: CuMsgPayload + 'cl> CuSrcTask<'cl> for CuSimSrcTask<T>

Source§

type Output = &'cl mut CuMsg<T>

Source§

fn process( &mut self, diff --git a/cu29/struct.CuError.html b/cu29/struct.CuError.html index 2708fc802..b95b60eab 100644 --- a/cu29/struct.CuError.html +++ b/cu29/struct.CuError.html @@ -1,4 +1,4 @@ -CuError in cu29 - Rust
cu29

Struct CuError

Source
pub struct CuError { /* private fields */ }
Expand description

Common copper Error type.

+CuError in cu29 - Rust
cu29

Struct CuError

Source
pub struct CuError { /* private fields */ }
Expand description

Common copper Error type.

Implementations§

Source§

impl CuError

Source

pub fn new_with_cause(message: &str, cause: impl Error) -> CuError

Source

pub fn add_cause(self, context: &str) -> CuError

Trait Implementations§

Source§

impl Clone for CuError

Source§

fn clone(&self) -> CuError

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CuError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for CuError

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<CuError, <__D as Deserializer<'de>>::Error>
where @@ -10,7 +10,7 @@ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29/trait.CopperListTuple.html b/cu29/trait.CopperListTuple.html index 310065212..f1891431a 100644 --- a/cu29/trait.CopperListTuple.html +++ b/cu29/trait.CopperListTuple.html @@ -1,4 +1,4 @@ -CopperListTuple in cu29 - Rust

cu29

Trait CopperListTuple

Source
pub trait CopperListTuple:
+CopperListTuple in cu29 - Rust
cu29

Trait CopperListTuple

Source
pub trait CopperListTuple:
     Sized
     + Encode
     + Decode
diff --git a/cu29/trait.WriteStream.html b/cu29/trait.WriteStream.html
index fedb12ebb..2cdc72748 100644
--- a/cu29/trait.WriteStream.html
+++ b/cu29/trait.WriteStream.html
@@ -1,4 +1,4 @@
-WriteStream in cu29 - Rust
cu29

Trait WriteStream

Source
pub trait WriteStream<E>:
+WriteStream in cu29 - Rust
cu29

Trait WriteStream

Source
pub trait WriteStream<E>:
     Sync
     + Send
     + Debug
where @@ -9,4 +9,4 @@ // Provided method fn flush(&mut self) -> Result<(), CuError> { ... } }
Expand description

Defines a basic write, append only stream trait to be able to log or send serializable objects.

-

Required Methods§

Source

fn log(&mut self, obj: &E) -> Result<(), CuError>

Provided Methods§

Source

fn flush(&mut self) -> Result<(), CuError>

Implementations on Foreign Types§

Source§

impl WriteStream<CuLogEntry> for SimpleFileWriter

Source§

fn log(&mut self, obj: &CuLogEntry) -> Result<(), CuError>

Source§

fn flush(&mut self) -> Result<(), CuError>

Implementors§

\ No newline at end of file +

Required Methods§

Source

fn log(&mut self, obj: &E) -> Result<(), CuError>

Provided Methods§

Source

fn flush(&mut self) -> Result<(), CuError>

Implementations on Foreign Types§

Source§

impl WriteStream<CuLogEntry> for SimpleFileWriter

Source§

fn log(&mut self, obj: &CuLogEntry) -> Result<(), CuError>

Source§

fn flush(&mut self) -> Result<(), CuError>

Implementors§

\ No newline at end of file diff --git a/cu29/type.CuResult.html b/cu29/type.CuResult.html index 94a54c08f..5ee9ed892 100644 --- a/cu29/type.CuResult.html +++ b/cu29/type.CuResult.html @@ -1,4 +1,4 @@ -CuResult in cu29 - Rust
cu29

Type Alias CuResult

Source
pub type CuResult<T> = Result<T, CuError>;

Aliased Type§

enum CuResult<T> {
+CuResult in cu29 - Rust
cu29

Type Alias CuResult

Source
pub type CuResult<T> = Result<T, CuError>;

Aliased Type§

enum CuResult<T> {
     Ok(T),
     Err(CuError),
 }

Variants§

§1.0.0

Ok(T)

Contains the success value

diff --git a/cu29_clock/all.html b/cu29_clock/all.html index 323041d68..460198e8c 100644 --- a/cu29_clock/all.html +++ b/cu29_clock/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/cu29_clock/index.html b/cu29_clock/index.html index 9f768a8bf..fad1fcf26 100644 --- a/cu29_clock/index.html +++ b/cu29_clock/index.html @@ -1,4 +1,4 @@ -cu29_clock - Rust

Crate cu29_clock

Source

Structs§

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29_clock/struct.Instant.html b/cu29_clock/struct.Instant.html index d6a9b151d..ff4701c52 100644 --- a/cu29_clock/struct.Instant.html +++ b/cu29_clock/struct.Instant.html @@ -1,4 +1,4 @@ -Instant in cu29_clock - Rust

cu29_clock

Struct Instant

pub struct Instant(/* private fields */);
Expand description

A point-in-time wall-clock measurement.

+Instant in cu29_clock - Rust
cu29_clock

Struct Instant

pub struct Instant(/* private fields */);
Expand description

A point-in-time wall-clock measurement.

Mimics most of the functionality of std::time::Instant but provides an additional method for using the “recent time” feature of quanta.

§Monotonicity

@@ -111,7 +111,7 @@
§Panics
T: 'static + ?Sized,
Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29_clock/struct.OptionCuTime.html b/cu29_clock/struct.OptionCuTime.html index a68ddaa2e..e775ee257 100644 --- a/cu29_clock/struct.OptionCuTime.html +++ b/cu29_clock/struct.OptionCuTime.html @@ -1,4 +1,4 @@ -OptionCuTime in cu29_clock - Rust

cu29_clock

Struct OptionCuTime

Source
pub struct OptionCuTime(/* private fields */);
Expand description

Homebrewed Option<CuDuration> to avoid using 128bits just to represent an Option.

+OptionCuTime in cu29_clock - Rust
cu29_clock

Struct OptionCuTime

Source
pub struct OptionCuTime(/* private fields */);
Expand description

Homebrewed Option<CuDuration> to avoid using 128bits just to represent an Option.

Implementations§

Source§

impl OptionCuTime

Source

pub fn is_none(&self) -> bool

Source

pub fn none() -> Self

Source

pub fn unwrap(self) -> CuTime

Trait Implementations§

Source§

impl<'__de> BorrowDecode<'__de> for OptionCuTime

Source§

fn borrow_decode<__D: BorrowDecoder<'__de>>( decoder: &mut __D, ) -> Result<Self, DecodeError>

Attempt to decode this type with the given BorrowDecode.
Source§

impl Clone for OptionCuTime

Source§

fn clone(&self) -> OptionCuTime

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for OptionCuTime

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Decode for OptionCuTime

Source§

fn decode<__D: Decoder>(decoder: &mut __D) -> Result<Self, DecodeError>

Attempt to decode this type with the given Decode.
Source§

impl Default for OptionCuTime

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for OptionCuTime

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where @@ -8,7 +8,7 @@ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29_clock/struct.RobotClock.html b/cu29_clock/struct.RobotClock.html index a2a1f74d9..f38678b7f 100644 --- a/cu29_clock/struct.RobotClock.html +++ b/cu29_clock/struct.RobotClock.html @@ -1,4 +1,4 @@ -RobotClock in cu29_clock - Rust

cu29_clock

Struct RobotClock

Source
pub struct RobotClock { /* private fields */ }
Expand description

A running Robot clock. +RobotClock in cu29_clock - Rust

cu29_clock

Struct RobotClock

Source
pub struct RobotClock { /* private fields */ }
Expand description

A running Robot clock. The clock is a monotonic clock that starts at an arbitrary reference time. It is clone resilient, ie a clone will be the same clock, even when mocked.

Implementations§

Source§

impl RobotClock

Source

pub fn new() -> Self

Creates a RobotClock using now as its reference time. @@ -10,7 +10,7 @@ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29_clock/struct.RobotClockMock.html b/cu29_clock/struct.RobotClockMock.html index 93544db6f..fffc7de8f 100644 --- a/cu29_clock/struct.RobotClockMock.html +++ b/cu29_clock/struct.RobotClockMock.html @@ -1,4 +1,4 @@ -RobotClockMock in cu29_clock - Rust

cu29_clock

Struct RobotClockMock

Source
pub struct RobotClockMock(/* private fields */);
Expand description

A mock clock that can be controlled by the user.

+RobotClockMock in cu29_clock - Rust
cu29_clock

Struct RobotClockMock

Source
pub struct RobotClockMock(/* private fields */);
Expand description

A mock clock that can be controlled by the user.

Implementations§

Source§

impl RobotClockMock

Source

pub fn increment(&self, amount: Duration)

Source

pub fn decrement(&self, amount: Duration)

Decrements the time by the given amount. Be careful this brakes the monotonicity of the clock.

Source

pub fn value(&self) -> u64

Gets the current value of time.

@@ -8,7 +8,7 @@ T: 'static + ?Sized,
Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29_clock/trait.ClockProvider.html b/cu29_clock/trait.ClockProvider.html index 6d8514231..a8e3d31a3 100644 --- a/cu29_clock/trait.ClockProvider.html +++ b/cu29_clock/trait.ClockProvider.html @@ -1,4 +1,4 @@ -ClockProvider in cu29_clock - Rust

cu29_clock

Trait ClockProvider

Source
pub trait ClockProvider {
+ClockProvider in cu29_clock - Rust
cu29_clock

Trait ClockProvider

Source
pub trait ClockProvider {
     // Required method
     fn get_clock(&self) -> RobotClock;
 }
Expand description

A trait to provide a clock to the runtime.

diff --git a/cu29_clock/type.CuTime.html b/cu29_clock/type.CuTime.html index 896dcb937..737a8bb63 100644 --- a/cu29_clock/type.CuTime.html +++ b/cu29_clock/type.CuTime.html @@ -1,2 +1,2 @@ -CuTime in cu29_clock - Rust
cu29_clock

Type Alias CuTime

Source
pub type CuTime = CuDuration;
Expand description

A robot time is just a duration from a fixed point in time.

+CuTime in cu29_clock - Rust
cu29_clock

Type Alias CuTime

Source
pub type CuTime = CuDuration;
Expand description

A robot time is just a duration from a fixed point in time.

Aliased Type§

struct CuTime(pub u64);

Fields§

§0: u64
\ No newline at end of file diff --git a/cu29_derive/all.html b/cu29_derive/all.html index 31fad22c7..36ea08aae 100644 --- a/cu29_derive/all.html +++ b/cu29_derive/all.html @@ -1 +1 @@ -List of all items in this crate

List of all items

Macros

Attribute Macros

\ No newline at end of file +List of all items in this crate

List of all items

Macros

Attribute Macros

\ No newline at end of file diff --git a/cu29_derive/attr.copper_runtime.html b/cu29_derive/attr.copper_runtime.html index 66601c7de..f0acc5963 100644 --- a/cu29_derive/attr.copper_runtime.html +++ b/cu29_derive/attr.copper_runtime.html @@ -1,4 +1,4 @@ -copper_runtime in cu29_derive - Rust
cu29_derive

Attribute Macro copper_runtime

Source
#[copper_runtime]
Expand description

Adds #[copper_runtime(config = “path”, sim_mode = false/true)] to your application struct to generate the runtime. +copper_runtime in cu29_derive - Rust

cu29_derive

Attribute Macro copper_runtime

Source
#[copper_runtime]
Expand description

Adds #[copper_runtime(config = “path”, sim_mode = false/true)] to your application struct to generate the runtime. if sim_mode is ommited, it is set to false. This will add a “runtime” field to your struct and implement the “new” and “run” methods.

\ No newline at end of file diff --git a/cu29_derive/index.html b/cu29_derive/index.html index 74f2c14fd..e6bd32690 100644 --- a/cu29_derive/index.html +++ b/cu29_derive/index.html @@ -1,4 +1,4 @@ -cu29_derive - Rust

Crate cu29_derive

Source

Macros§

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29_rendercfg/config/struct.Value.html b/cu29_rendercfg/config/struct.Value.html index 71830b4bf..899a9c3bb 100644 --- a/cu29_rendercfg/config/struct.Value.html +++ b/cu29_rendercfg/config/struct.Value.html @@ -1,4 +1,4 @@ -Value in cu29_rendercfg::config - Rust

cu29_rendercfg::config

Struct Value

Source
pub struct Value(Value);
Expand description

Wrapper around the ron::Value to allow for custom serialization.

+Value in cu29_rendercfg::config - Rust
cu29_rendercfg::config

Struct Value

Source
pub struct Value(Value);
Expand description

Wrapper around the ron::Value to allow for custom serialization.

Tuple Fields§

§0: Value

Trait Implementations§

Source§

impl Clone for Value

Source§

fn clone(&self) -> Value

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Value

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Value

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for Value

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<String> for Value

Source§

fn from(value: String) -> Self

Converts to this type from the input type.
Source§

impl From<Value> for String

Source§

fn from(value: Value) -> Self

Converts to this type from the input type.
Source§

impl From<Value> for bool

Source§

fn from(value: Value) -> Self

Converts to this type from the input type.
Source§

impl From<Value> for f64

Source§

fn from(value: Value) -> Self

Converts to this type from the input type.
Source§

impl From<Value> for i32

Source§

fn from(value: Value) -> Self

Converts to this type from the input type.
Source§

impl From<Value> for u32

Source§

fn from(value: Value) -> Self

Converts to this type from the input type.
Source§

impl From<Value> for u8

Source§

fn from(value: Value) -> Self

Converts to this type from the input type.
Source§

impl From<f64> for Value

Source§

fn from(value: f64) -> Self

Converts to this type from the input type.
Source§

impl From<i32> for Value

Source§

fn from(value: i32) -> Self

Converts to this type from the input type.
Source§

impl From<u16> for Value

Source§

fn from(value: u16) -> Self

Converts to this type from the input type.
Source§

impl From<u32> for Value

Source§

fn from(value: u32) -> Self

Converts to this type from the input type.
Source§

impl From<u8> for Value

Source§

fn from(value: u8) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for Value

Source§

fn eq(&self, other: &Value) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for Value

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where @@ -6,7 +6,7 @@ T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29_rendercfg/config/type.NodeId.html b/cu29_rendercfg/config/type.NodeId.html index 351c86d44..10f3ac963 100644 --- a/cu29_rendercfg/config/type.NodeId.html +++ b/cu29_rendercfg/config/type.NodeId.html @@ -1,3 +1,3 @@ -NodeId in cu29_rendercfg::config - Rust

cu29_rendercfg::config

Type Alias NodeId

Source
pub type NodeId = u32;
Expand description

NodeId is the unique identifier of a node in the configuration graph for petgraph +NodeId in cu29_rendercfg::config - Rust

cu29_rendercfg::config

Type Alias NodeId

Source
pub type NodeId = u32;
Expand description

NodeId is the unique identifier of a node in the configuration graph for petgraph and the code generation.

\ No newline at end of file diff --git a/cu29_rendercfg/enum.UnifiedLogType.html b/cu29_rendercfg/enum.UnifiedLogType.html index 0ef2bfbb6..dfa1d494e 100644 --- a/cu29_rendercfg/enum.UnifiedLogType.html +++ b/cu29_rendercfg/enum.UnifiedLogType.html @@ -1,4 +1,4 @@ -UnifiedLogType in cu29_rendercfg - Rust
cu29_rendercfg

Enum UnifiedLogType

Source
pub enum UnifiedLogType {
+UnifiedLogType in cu29_rendercfg - Rust
cu29_rendercfg

Enum UnifiedLogType

Source
pub enum UnifiedLogType {
     Empty,
     StructuredLogLine,
     CopperList,
@@ -12,7 +12,7 @@
     T: 'static + ?Sized,
Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29_rendercfg/fn.main.html b/cu29_rendercfg/fn.main.html index 9cb1bafce..6d753483a 100644 --- a/cu29_rendercfg/fn.main.html +++ b/cu29_rendercfg/fn.main.html @@ -1,2 +1,2 @@ -main in cu29_rendercfg - Rust

cu29_rendercfg

Function main

Source
pub(crate) fn main() -> Result<()>
Expand description

Render the configuration file to a dot file then convert it to an SVG and optionally opens it with inkscape.

+main in cu29_rendercfg - Rust
cu29_rendercfg

Function main

Source
pub(crate) fn main() -> Result<()>
Expand description

Render the configuration file to a dot file then convert it to an SVG and optionally opens it with inkscape.

\ No newline at end of file diff --git a/cu29_rendercfg/index.html b/cu29_rendercfg/index.html index 3ca066b1a..8796c2c93 100644 --- a/cu29_rendercfg/index.html +++ b/cu29_rendercfg/index.html @@ -1,4 +1,4 @@ -cu29_rendercfg - Rust

Crate cu29_rendercfg

Source

Modules§

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29_rendercfg/trait.CopperListTuple.html b/cu29_rendercfg/trait.CopperListTuple.html index d0e8ade54..94f4d01c3 100644 --- a/cu29_rendercfg/trait.CopperListTuple.html +++ b/cu29_rendercfg/trait.CopperListTuple.html @@ -1,4 +1,4 @@ -CopperListTuple in cu29_rendercfg - Rust

cu29_rendercfg

Trait CopperListTuple

Source
pub trait CopperListTuple:
+CopperListTuple in cu29_rendercfg - Rust
cu29_rendercfg

Trait CopperListTuple

Source
pub trait CopperListTuple:
     Sized
     + Encode
     + Decode
diff --git a/cu29_rendercfg/trait.WriteStream.html b/cu29_rendercfg/trait.WriteStream.html
index cd02cfbb8..d4d4ca25b 100644
--- a/cu29_rendercfg/trait.WriteStream.html
+++ b/cu29_rendercfg/trait.WriteStream.html
@@ -1,4 +1,4 @@
-WriteStream in cu29_rendercfg - Rust
cu29_rendercfg

Trait WriteStream

Source
pub trait WriteStream<E>:
+WriteStream in cu29_rendercfg - Rust
cu29_rendercfg

Trait WriteStream

Source
pub trait WriteStream<E>:
     Sync
     + Send
     + Debug
where diff --git a/cu29_rendercfg/type.CuResult.html b/cu29_rendercfg/type.CuResult.html index 7eda548ed..c9023cc11 100644 --- a/cu29_rendercfg/type.CuResult.html +++ b/cu29_rendercfg/type.CuResult.html @@ -1,4 +1,4 @@ -CuResult in cu29_rendercfg - Rust
cu29_rendercfg

Type Alias CuResult

Source
pub type CuResult<T> = Result<T, CuError>;

Aliased Type§

enum CuResult<T> {
+CuResult in cu29_rendercfg - Rust
cu29_rendercfg

Type Alias CuResult

Source
pub type CuResult<T> = Result<T, CuError>;

Aliased Type§

enum CuResult<T> {
     Ok(T),
     Err(CuError),
 }

Variants§

§1.0.0

Ok(T)

Contains the success value

diff --git a/cu29_soa_derive/all.html b/cu29_soa_derive/all.html index 5db102534..4364b995d 100644 --- a/cu29_soa_derive/all.html +++ b/cu29_soa_derive/all.html @@ -1 +1 @@ -List of all items in this crate

List of all items

Derive Macros

\ No newline at end of file +List of all items in this crate

List of all items

Derive Macros

\ No newline at end of file diff --git a/cu29_soa_derive/derive.Soa.html b/cu29_soa_derive/derive.Soa.html index 76a5d8456..05774af4c 100644 --- a/cu29_soa_derive/derive.Soa.html +++ b/cu29_soa_derive/derive.Soa.html @@ -1,4 +1,4 @@ -Soa in cu29_soa_derive - Rust
cu29_soa_derive

Derive Macro Soa

Source
#[derive(Soa)]
Expand description

Build a fixed sized SoA (Structure of Arrays) from a struct. +Soa in cu29_soa_derive - Rust

cu29_soa_derive

Derive Macro Soa

Source
#[derive(Soa)]
Expand description

Build a fixed sized SoA (Structure of Arrays) from a struct. The outputted SoA will be suitable for in place storage in messages and should be easier for the compiler to vectorize.

for example:

diff --git a/cu29_soa_derive/index.html b/cu29_soa_derive/index.html index 279a93f94..8a4316e3c 100644 --- a/cu29_soa_derive/index.html +++ b/cu29_soa_derive/index.html @@ -1,3 +1,3 @@ -cu29_soa_derive - Rust

Crate cu29_soa_derive

Source

Derive Macros§

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29_traits/index.html b/cu29_traits/index.html index ba90bf111..c7448c5bf 100644 --- a/cu29_traits/index.html +++ b/cu29_traits/index.html @@ -1 +1 @@ -cu29_traits - Rust

Crate cu29_traits

Source

Structs§

Enums§

  • Defines the types of what can be logged in the unified logger.

Traits§

  • A CopperListTuple needs to be encodable, decodable and fixed size in memory.
  • Defines a basic write, append only stream trait to be able to log or send serializable objects.

Type Aliases§

\ No newline at end of file +cu29_traits - Rust

Crate cu29_traits

Source

Structs§

Enums§

  • Defines the types of what can be logged in the unified logger.

Traits§

  • A CopperListTuple needs to be encodable, decodable and fixed size in memory.
  • Defines a basic write, append only stream trait to be able to log or send serializable objects.

Type Aliases§

\ No newline at end of file diff --git a/cu29_traits/struct.CuError.html b/cu29_traits/struct.CuError.html index 4db24c317..7b9c07ea2 100644 --- a/cu29_traits/struct.CuError.html +++ b/cu29_traits/struct.CuError.html @@ -1,11 +1,11 @@ -CuError in cu29_traits - Rust
cu29_traits

Struct CuError

Source
pub struct CuError { /* private fields */ }
Expand description

Common copper Error type.

+CuError in cu29_traits - Rust
cu29_traits

Struct CuError

Source
pub struct CuError { /* private fields */ }
Expand description

Common copper Error type.

Implementations§

Source§

impl CuError

Source

pub fn new_with_cause(message: &str, cause: impl Error) -> CuError

Source

pub fn add_cause(self, context: &str) -> CuError

Trait Implementations§

Source§

impl Clone for CuError

Source§

fn clone(&self) -> CuError

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for CuError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for CuError

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for CuError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for CuError

1.30.0 · Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<&str> for CuError

Source§

fn from(s: &str) -> CuError

Converts to this type from the input type.
Source§

impl From<String> for CuError

Source§

fn from(s: String) -> CuError

Converts to this type from the input type.
Source§

impl Serialize for CuError

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where - T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

+ T: Clone,
Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of diff --git a/cu29_traits/trait.CopperListTuple.html b/cu29_traits/trait.CopperListTuple.html index 187ed1d1e..3b262eb4e 100644 --- a/cu29_traits/trait.CopperListTuple.html +++ b/cu29_traits/trait.CopperListTuple.html @@ -1,4 +1,4 @@ -CopperListTuple in cu29_traits - Rust

cu29_traits

Trait CopperListTuple

Source
pub trait CopperListTuple:
+CopperListTuple in cu29_traits - Rust
cu29_traits

Trait CopperListTuple

Source
pub trait CopperListTuple:
     Encode
     + Decode
     + Sized
diff --git a/cu29_traits/trait.WriteStream.html b/cu29_traits/trait.WriteStream.html
index 9dcd23b73..812d3c512 100644
--- a/cu29_traits/trait.WriteStream.html
+++ b/cu29_traits/trait.WriteStream.html
@@ -1,4 +1,4 @@
-WriteStream in cu29_traits - Rust
cu29_traits

Trait WriteStream

Source
pub trait WriteStream<E: Encode>:
+WriteStream in cu29_traits - Rust
cu29_traits

Trait WriteStream

Source
pub trait WriteStream<E: Encode>:
     Sync
     + Send
     + Debug {
diff --git a/cu29_traits/type.CuResult.html b/cu29_traits/type.CuResult.html
index de0773d4a..a804ad351 100644
--- a/cu29_traits/type.CuResult.html
+++ b/cu29_traits/type.CuResult.html
@@ -1,4 +1,4 @@
-CuResult in cu29_traits - Rust
cu29_traits

Type Alias CuResult

Source
pub type CuResult<T> = Result<T, CuError>;

Aliased Type§

enum CuResult<T> {
+CuResult in cu29_traits - Rust
cu29_traits

Type Alias CuResult

Source
pub type CuResult<T> = Result<T, CuError>;

Aliased Type§

enum CuResult<T> {
     Ok(T),
     Err(CuError),
 }

Variants§

§1.0.0

Ok(T)

Contains the success value

diff --git a/cu29_unifiedlog/all.html b/cu29_unifiedlog/all.html index a6d23994b..4731b8056 100644 --- a/cu29_unifiedlog/all.html +++ b/cu29_unifiedlog/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/cu29_unifiedlog/enum.AllocatedSection.html b/cu29_unifiedlog/enum.AllocatedSection.html index 4672a045c..87cd28efb 100644 --- a/cu29_unifiedlog/enum.AllocatedSection.html +++ b/cu29_unifiedlog/enum.AllocatedSection.html @@ -1,4 +1,4 @@ -AllocatedSection in cu29_unifiedlog - Rust
cu29_unifiedlog

Enum AllocatedSection

Source
pub enum AllocatedSection {
+AllocatedSection in cu29_unifiedlog - Rust
cu29_unifiedlog

Enum AllocatedSection

Source
pub enum AllocatedSection {
     NoMoreSpace,
     Section(SectionHandle),
 }

Variants§

§

NoMoreSpace

§

Section(SectionHandle)

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where diff --git a/cu29_unifiedlog/enum.UnifiedLogger.html b/cu29_unifiedlog/enum.UnifiedLogger.html index 0399f615b..1f2e8e91c 100644 --- a/cu29_unifiedlog/enum.UnifiedLogger.html +++ b/cu29_unifiedlog/enum.UnifiedLogger.html @@ -1,4 +1,4 @@ -UnifiedLogger in cu29_unifiedlog - Rust
cu29_unifiedlog

Enum UnifiedLogger

Source
pub enum UnifiedLogger {
+UnifiedLogger in cu29_unifiedlog - Rust
cu29_unifiedlog

Enum UnifiedLogger

Source
pub enum UnifiedLogger {
     Read(UnifiedLoggerRead),
     Write(UnifiedLoggerWrite),
 }
Expand description

Holder of the read or write side of the datalogger.

diff --git a/cu29_unifiedlog/fn.stream_write.html b/cu29_unifiedlog/fn.stream_write.html index 223fddefa..612e82390 100644 --- a/cu29_unifiedlog/fn.stream_write.html +++ b/cu29_unifiedlog/fn.stream_write.html @@ -1,4 +1,4 @@ -stream_write in cu29_unifiedlog - Rust
cu29_unifiedlog

Function stream_write

Source
pub fn stream_write<E: Encode>(
+stream_write in cu29_unifiedlog - Rust
cu29_unifiedlog

Function stream_write

Source
pub fn stream_write<E: Encode>(
     logger: Arc<Mutex<UnifiedLoggerWrite>>,
     entry_type: UnifiedLogType,
     minimum_allocation_amount: usize,
diff --git a/cu29_unifiedlog/index.html b/cu29_unifiedlog/index.html
index 21198648c..fdec1a887 100644
--- a/cu29_unifiedlog/index.html
+++ b/cu29_unifiedlog/index.html
@@ -1,4 +1,4 @@
-cu29_unifiedlog - Rust

Crate cu29_unifiedlog

Source

Structs§

  • A SectionHandle is a handle to a section in the datalogger. +cu29_unifiedlog - Rust

    Crate cu29_unifiedlog

    Source

    Structs§

    • A SectionHandle is a handle to a section in the datalogger. It allows to track the lifecycle of a section of the datalogger.
    • Each concurrent sublogger is tracked through a section header. They form a linked list of sections. The entry type is used to identify the type of data in the section.
    • Use this builder to create a new DataLogger.
    • This a convience wrapper around the UnifiedLoggerRead to implement the Read trait.
    • A read side of the datalogger.
    • A write side of the datalogger.

    Enums§

    Functions§

    • Create a new stream to write to the unifiedlogger.
    \ No newline at end of file diff --git a/cu29_unifiedlog/struct.SectionHandle.html b/cu29_unifiedlog/struct.SectionHandle.html index f73d3c51a..91c3da523 100644 --- a/cu29_unifiedlog/struct.SectionHandle.html +++ b/cu29_unifiedlog/struct.SectionHandle.html @@ -1,4 +1,4 @@ -SectionHandle in cu29_unifiedlog - Rust
    cu29_unifiedlog

    Struct SectionHandle

    Source
    pub struct SectionHandle { /* private fields */ }
    Expand description

    A SectionHandle is a handle to a section in the datalogger. +SectionHandle in cu29_unifiedlog - Rust

    cu29_unifiedlog

    Struct SectionHandle

    Source
    pub struct SectionHandle { /* private fields */ }
    Expand description

    A SectionHandle is a handle to a section in the datalogger. It allows to track the lifecycle of a section of the datalogger.

    Implementations§

    Source§

    impl SectionHandle

    Source

    pub fn create(section_header: SectionHeader, buffer: &'static mut [u8]) -> Self

    Source

    pub fn get_user_buffer(&mut self) -> &mut [u8]

    Source

    pub fn update_header(&mut self)

    Trait Implementations§

    Source§

    impl Default for SectionHandle

    Source§

    fn default() -> SectionHandle

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    Source§

    impl<T> Borrow<T> for T
    where diff --git a/cu29_unifiedlog/struct.SectionHeader.html b/cu29_unifiedlog/struct.SectionHeader.html index 66a099a2b..bff24524f 100644 --- a/cu29_unifiedlog/struct.SectionHeader.html +++ b/cu29_unifiedlog/struct.SectionHeader.html @@ -1,4 +1,4 @@ -SectionHeader in cu29_unifiedlog - Rust
    cu29_unifiedlog

    Struct SectionHeader

    Source
    pub struct SectionHeader { /* private fields */ }
    Expand description

    Each concurrent sublogger is tracked through a section header. +SectionHeader in cu29_unifiedlog - Rust

    cu29_unifiedlog

    Struct SectionHeader

    Source
    pub struct SectionHeader { /* private fields */ }
    Expand description

    Each concurrent sublogger is tracked through a section header. They form a linked list of sections. The entry type is used to identify the type of data in the section.

    Trait Implementations§

    Source§

    impl<'__de> BorrowDecode<'__de> for SectionHeader

    Source§

    fn borrow_decode<__D: BorrowDecoder<'__de>>( diff --git a/cu29_unifiedlog/struct.UnifiedLoggerBuilder.html b/cu29_unifiedlog/struct.UnifiedLoggerBuilder.html index e2549da60..1030babe8 100644 --- a/cu29_unifiedlog/struct.UnifiedLoggerBuilder.html +++ b/cu29_unifiedlog/struct.UnifiedLoggerBuilder.html @@ -1,4 +1,4 @@ -UnifiedLoggerBuilder in cu29_unifiedlog - Rust
    cu29_unifiedlog

    Struct UnifiedLoggerBuilder

    Source
    pub struct UnifiedLoggerBuilder { /* private fields */ }
    Expand description

    Use this builder to create a new DataLogger.

    +UnifiedLoggerBuilder in cu29_unifiedlog - Rust
    cu29_unifiedlog

    Struct UnifiedLoggerBuilder

    Source
    pub struct UnifiedLoggerBuilder { /* private fields */ }
    Expand description

    Use this builder to create a new DataLogger.

    Implementations§

    Source§

    impl UnifiedLoggerBuilder

    Source

    pub fn new() -> Self

    Source

    pub fn file_base_name(self, file_path: &Path) -> Self

    If “something/toto.copper” is given, it will find or create “something/toto_0.copper”, “something/toto_1.copper” etc.

    Source

    pub fn preallocated_size(self, preallocated_size: usize) -> Self

    Source

    pub fn write(self, write: bool) -> Self

    Source

    pub fn create(self, create: bool) -> Self

    Source

    pub fn build(self) -> Result<UnifiedLogger>

    Trait Implementations§

    Source§

    impl Default for UnifiedLoggerBuilder

    Source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    Source§

    impl<T> Borrow<T> for T
    where diff --git a/cu29_unifiedlog/struct.UnifiedLoggerIOReader.html b/cu29_unifiedlog/struct.UnifiedLoggerIOReader.html index 1e97f29bf..8f29c150c 100644 --- a/cu29_unifiedlog/struct.UnifiedLoggerIOReader.html +++ b/cu29_unifiedlog/struct.UnifiedLoggerIOReader.html @@ -1,4 +1,4 @@ -UnifiedLoggerIOReader in cu29_unifiedlog - Rust
    cu29_unifiedlog

    Struct UnifiedLoggerIOReader

    Source
    pub struct UnifiedLoggerIOReader { /* private fields */ }
    Expand description

    This a convience wrapper around the UnifiedLoggerRead to implement the Read trait.

    +UnifiedLoggerIOReader in cu29_unifiedlog - Rust
    cu29_unifiedlog

    Struct UnifiedLoggerIOReader

    Source
    pub struct UnifiedLoggerIOReader { /* private fields */ }
    Expand description

    This a convience wrapper around the UnifiedLoggerRead to implement the Read trait.

    Implementations§

    Source§

    impl UnifiedLoggerIOReader

    Source

    pub fn new(logger: UnifiedLoggerRead, log_type: UnifiedLogType) -> Self

    Trait Implementations§

    Source§

    impl Read for UnifiedLoggerIOReader

    Source§

    fn read(&mut self, buf: &mut [u8]) -> Result<usize>

    Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
    1.36.0 · Source§

    fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>

    Like read, except that it reads into a slice of buffers. Read more
    Source§

    fn is_read_vectored(&self) -> bool

    🔬This is a nightly-only experimental API. (can_vector)
    Determines if this Reader has an efficient read_vectored implementation. Read more
    1.0.0 · Source§

    fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>

    Reads all bytes until EOF in this source, placing them into buf. Read more
    1.0.0 · Source§

    fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>

    Reads all bytes until EOF in this source, appending them to buf. Read more
    1.6.0 · Source§

    fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>

    Reads the exact number of bytes required to fill buf. Read more
    Source§

    fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>

    🔬This is a nightly-only experimental API. (read_buf)
    Pull some bytes from this source into the specified buffer. Read more
    Source§

    fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>

    🔬This is a nightly-only experimental API. (read_buf)
    Reads the exact number of bytes required to fill cursor. Read more
    1.0.0 · Source§

    fn by_ref(&mut self) -> &mut Self
    where diff --git a/cu29_unifiedlog/struct.UnifiedLoggerRead.html b/cu29_unifiedlog/struct.UnifiedLoggerRead.html index 980a3e3d1..1a77e3a80 100644 --- a/cu29_unifiedlog/struct.UnifiedLoggerRead.html +++ b/cu29_unifiedlog/struct.UnifiedLoggerRead.html @@ -1,4 +1,4 @@ -UnifiedLoggerRead in cu29_unifiedlog - Rust
    cu29_unifiedlog

    Struct UnifiedLoggerRead

    Source
    pub struct UnifiedLoggerRead { /* private fields */ }
    Expand description

    A read side of the datalogger.

    +UnifiedLoggerRead in cu29_unifiedlog - Rust
    cu29_unifiedlog

    Struct UnifiedLoggerRead

    Source
    pub struct UnifiedLoggerRead { /* private fields */ }
    Expand description

    A read side of the datalogger.

    Implementations§

    Source§

    impl UnifiedLoggerRead

    Source

    pub fn new(base_file_path: &PathBuf) -> Result<Self>

    Source

    pub fn read_next_section_type( &mut self, datalogtype: UnifiedLogType, diff --git a/cu29_unifiedlog/struct.UnifiedLoggerWrite.html b/cu29_unifiedlog/struct.UnifiedLoggerWrite.html index 5a75eb38e..6ed0ccff9 100644 --- a/cu29_unifiedlog/struct.UnifiedLoggerWrite.html +++ b/cu29_unifiedlog/struct.UnifiedLoggerWrite.html @@ -1,4 +1,4 @@ -UnifiedLoggerWrite in cu29_unifiedlog - Rust
    cu29_unifiedlog

    Struct UnifiedLoggerWrite

    Source
    pub struct UnifiedLoggerWrite { /* private fields */ }
    Expand description

    A write side of the datalogger.

    +UnifiedLoggerWrite in cu29_unifiedlog - Rust
    cu29_unifiedlog

    Struct UnifiedLoggerWrite

    Source
    pub struct UnifiedLoggerWrite { /* private fields */ }
    Expand description

    A write side of the datalogger.

    Implementations§

    Source§

    impl UnifiedLoggerWrite

    Source

    pub fn flush_section(&mut self, section: &mut SectionHandle)

    Trait Implementations§

    Source§

    impl Drop for UnifiedLoggerWrite

    Source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    Source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    Source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    Source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    Source§

    impl<T> BorrowMut<T> for T
    where diff --git a/help.html b/help.html index de7edc64c..e46e108ae 100644 --- a/help.html +++ b/help.html @@ -1 +1 @@ -Help

    Rustdoc help

    Back
    \ No newline at end of file +Help

    Rustdoc help

    Back
    \ No newline at end of file diff --git a/index.html b/index.html index 8bd3e7309..ede616422 100644 --- a/index.html +++ b/index.html @@ -1,2 +1,2 @@ -Index of crates
    - \ No newline at end of file +Index of crates
    + \ No newline at end of file diff --git a/search-index.js b/search-index.js index f336d3284..01507813b 100644 --- a/search-index.js +++ b/search-index.js @@ -1,4 +1,4 @@ -var searchIndex = new Map(JSON.parse('[["cu29",{"t":"PKFIPPPPPGKNNNNNNENNNNNNCCCCNNNNNNNNNNNNQNNMCNQENCNNNNNNNNNNFFFFFIFNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNONNHHNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNIIPFFGFPPPIIPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNONNNNNNNNNNNNNNNNNNNNNFFGFGPPPPPNNNNNNNNNNNONNNHONNNNNHNNNNNNNNNNONNNNNOONOOOOOONNNNNNNNNNNNNNNNFFFKKKKKKKRRRROONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOMNNNNNMMMNNNNNONNNNNNONNNNNNNNNNPFFKGGJPFFPPPFPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNMNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFGPPPPPPPGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["CopperList","CopperListTuple","CuError","CuResult","Empty","Err","LastEntry","Ok","StructuredLogLine","UnifiedLogType","WriteStream","add_cause","borrow","","borrow_decode","borrow_mut","","clock","clone","","clone_into","","clone_to_uninit","","config","copperlist","curuntime","cutask","decode","deserialize","encode","eq","flush","fmt","","","from","","","","input_msg","into","","log","monitoring","new_with_cause","output_msg","read_configuration","serialize","simulation","to_owned","","to_string","try_from","","try_into","","try_to_compact_string","type_id","","Cnx","ComponentConfig","CuConfig","MonitorConfig","Node","NodeId","Value","add_node","batch","borrow","","","","","","borrow_mut","","","","","","clone","","","","","","clone_into","","","","","","clone_to_uninit","","","","","","connect","connect_ext","default","","","deserialize","","","","","","deserialize_ron","eq","fmt","","","","","","","","from","","","","","","","","","","","","get","get_all_instances_configs","get_all_nodes","get_config","get_dst_edges","get_edge_weight","get_id","get_instance_config","get_monitor_config","get_node","get_node_input_msg_type","get_node_output_msg_type","get_param","get_src_edges","get_type","","graph","into","","","","","","msg","new","","read_configuration","read_configuration_str","render","serialize","","","","","","serialize_ron","set","set_param","set_type","store","to_owned","","","","","","to_string","","try_from","","","","","","try_into","","","","","","try_to_compact_string","","type_id","","","","","","AscIter","AscIterMut","BeingSerialized","CopperLiskMask","CopperList","CopperListState","CuListsManager","DoneProcessing","Free","Initialized","Iter","IterMut","Processing","asc_iter","asc_iter_mut","borrow","","","","borrow_decode","","","borrow_mut","","","","change_state","clear","clone","","clone_into","","clone_to_uninit","","create","decode","","","default","encode","","","eq","","fmt","","","","","from","","","","get_state","id","into","","","","is_empty","is_full","iter","iter_mut","len","msgs","new","","peek","pop","serialize","to_owned","","to_string","try_from","","","","try_into","","","","try_to_compact_string","type_id","","","","CuExecutionLoop","CuExecutionStep","CuExecutionUnit","CuRuntime","CuTaskType","Loop","Regular","Sink","Source","Step","available_copper_lists","borrow","","","","","borrow_mut","","","","","clock","clone","clone_into","clone_to_uninit","compute_runtime_plan","copper_lists_manager","end_of_processing","eq","equivalent","","","find_task_type_for_id","fmt","","","","from","","","","","get_clock","input_msg_indices_types","into","","","","","loop_count","monitor","new","node","node_id","output_msg_index_type","steps","task_type","tasks","to_owned","try_from","","","","","try_into","","","","","type_id","","","","","CuCompactString","CuMsg","CuMsgMetadata","CuMsgPack","CuMsgPayload","CuSinkTask","CuSrcTask","CuTask","CuTaskLifecycle","Freezable","Input","","Output","","after_process","before_process","borrow","","","borrow_decode","","","borrow_mut","","","clear_payload","clone","","","clone_into","","","clone_to_uninit","","","decode","","","default","","deserialize","","encode","","","fmt","","","","freeze","from","","","into","","","metadata","new","","payload","payload_mut","postprocess","preprocess","process","","","serialize","","set_payload","set_status","start","status_txt","stop","thaw","to_owned","","","to_string","tov","try_from","","","try_into","","","try_to_compact_string","type_id","","","Abort","CountingAllocator","CuDurationStatistics","CuMonitor","CuTaskState","Decision","GLOBAL","Ignore","LiveStatistics","NoMonitor","Postprocess","Preprocess","Process","ScopedAllocCounter","Shutdown","Start","Stop","alloc","borrow","","","","","","","borrow_mut","","","","","","","clone","","clone_into","","clone_to_uninit","","dealloc","default","","deserialize","drop","fmt","","","","from","","","","","","","get_allocated","get_deallocated","into","","","","","","","jitter_max","jitter_mean","jitter_min","jitter_percentile","jitter_stddev","len","","max","","mean","","min","","new","","","","","new_unbounded","new_with_max","percentile","","process_copperlist","","process_error","","record","","reset","","","serialize","start","stddev","stop","to_owned","","try_from","","","","","","","try_into","","","","","","","type_id","","","","","","","CuSimSinkTask","CuSimSrcTask","CuTaskCallbackState","Errored","ExecuteByRuntime","ExecutedBySim","New","Postprocess","Preprocess","Process","SimOverride","Start","Stop","_Phantom","borrow","","","","borrow_mut","","","","eq","from","","","","into","","","","new","","process","","try_from","","","","try_into","","","","type_id","","",""],"q":[[0,"cu29"],[60,"cu29::config"],[200,"cu29::copperlist"],[286,"cu29::curuntime"],[360,"cu29::cutask"],[449,"cu29::monitoring"],[570,"cu29::simulation"],[617,"cu29_traits"],[618,"bincode::error"],[619,"core::result"],[620,"bincode::de"],[621,"serde::de"],[622,"bincode::enc"],[623,"core::fmt"],[624,"alloc::string"],[625,"core::error"],[626,"serde::ser"],[627,"compact_str"],[628,"core::any"],[629,"core::option"],[630,"core::convert"],[631,"alloc::vec"],[632,"petgraph::adj"],[633,"std::io"],[634,"petgraph::graph_impl::stable_graph"],[635,"cu29_clock"],[636,"core::ops::function"],[637,"core::clone"],[638,"compact_str::traits"],[639,"core::alloc::layout"]],"i":"j```0Eh101``b02202`020202````2022An1131113`130`1``1`1311313113```````CbClChCjCd34Cn32145032145032145032145055350321450523322145032222222145035505511555515105321450431``5321450531143214503232145032145032321450``Fj````000``0En00Fh2F`1302130021313132130213013213302130002130222220202231332130213032130`````HbGj001Gf0H`Gl34210342333`223333`10342103421210340221110123210342103421034``````````InJ`Ih2Hl0Hj1Hn120120012012012012012121201220Id2312311If2220057634240401342443423424342K```````0``Jn00`100JdKh1Jl34JhJj342561010101044252561034256104434256100000010101010Gh45312221040421521601021453672145367214536721```Kj00L`000`0000KlKn321033210321031010210321032103","f":"```````````{{b{f{d}}}b}{f{{f{c}}}{}}0{{{f{hc}}}{{n{jl}}}A`}{{{f{h}}}{{f{hc}}}{}}0`{{{f{b}}}b}{{{f{j}}}j}{{f{f{hc}}}Ab{}}0{fAb}0````{{{f{hc}}}{{n{jl}}}Ad}{c{{n{b}}}Af}{{{f{j}}{f{hc}}}{{n{AbAh}}}Aj}{{{f{j}}{f{j}}}Al}{{{f{hAn}}}{{n{Abb}}}}{{{f{b}}{f{hB`}}}{{n{AbBb}}}}0{{{f{j}}{f{hB`}}}{{n{AbBb}}}}{cc{}}{{{f{d}}}b}{Bdb}2`{{}c{}}0{{{f{hAn}}{f{c}}}{{n{Abb}}}Bf}`{{{f{d}}c}bBh}``{{{f{b}}c}nBj}`{fc{}}0{fBd}{c{{n{e}}}{}{}}0{{}{{n{c}}}{}}0{f{{n{BlBn}}}}{fC`}0```````{{{f{hCb}}Cd}Cf}`{f{{f{c}}}{}}00000{{{f{h}}}{{f{hc}}}{}}00000{{{f{Ch}}}Ch}{{{f{Cj}}}Cj}{{{f{Cd}}}Cd}{{{f{Cl}}}Cl}{{{f{Cb}}}Cb}{{{f{Cn}}}Cn}{{f{f{hc}}}Ab{}}00000{fAb}00000{{{f{hCb}}CfCf{f{d}}}Ab}{{{f{hCb}}CfCf{f{d}}{Db{D`}}{Db{Al}}}Ab}{{}Ch}{{}Cb}{{}Cn}{c{{n{Ch}}}Af}{c{{n{Cj}}}Af}{c{{n{Cd}}}Af}{c{{n{Cl}}}Af}{c{{n{Cb}}}Af}{c{{n{Cn}}}Af}{{{f{d}}}Cb}{{{f{Cj}}{f{Cj}}}Al}{{{f{Ch}}{f{hB`}}}Dd}0{{{f{Cj}}{f{hB`}}}Dd}0{{{f{Cd}}{f{hB`}}}Dd}{{{f{Cl}}{f{hB`}}}Dd}{{{f{Cb}}{f{hB`}}}Dd}{{{f{Cn}}{f{hB`}}}Dd}{cc{}}{DfCj}{BdCj}2{DhCj}{DjCj}{D`Cj}{DlCj}6666{{{f{Ch}}{f{d}}}{{Db{c}}}{{Dn{Cj}}}}{{{f{Cb}}}{{E`{{Db{{f{Ch}}}}}}}}{{{f{Cb}}}{{E`{{Ed{Eb{f{Cd}}}}}}}}{{{f{Cn}}}{{Db{{f{Ch}}}}}}{{{f{Cb}}Cf}{{E`{Ef}}}}{{{f{Cb}}Ef}{{Db{Cl}}}}{{{f{Cd}}}Bd}{{{f{Cd}}}{{Db{{f{Ch}}}}}}{{{f{Cb}}}{{Db{{f{Cn}}}}}}{{{f{Cb}}Cf}{{Db{{f{Cd}}}}}}{{{f{Cb}}{f{d}}}{{Db{Bd}}}}0{{{f{Cd}}{f{d}}}{{Db{c}}}{{Dn{Cj}}}}7{{{f{Cd}}}{{f{d}}}}{{{f{Cn}}}{{f{d}}}}`{{}c{}}00000`{{}Ch}{{{f{d}}{f{d}}}Cd}{{{f{d}}}{{Eh{Cb}}}}{Bd{{Eh{Cb}}}}{{{f{Cb}}{f{hEj}}}Ab}{{{f{Ch}}c}nBj}{{{f{Cj}}c}nBj}{{{f{Cd}}c}nBj}{{{f{Cl}}c}nBj}{{{f{Cb}}c}nBj}{{{f{Cn}}c}nBj}{{{f{Cb}}}Bd}{{{f{hCh}}{f{d}}c}Ab{{El{Cj}}}}{{{f{hCd}}{f{d}}c}Ab{{El{Cj}}}}{{Cd{Db{Bd}}}Cd}`{fc{}}00000{fBd}0{c{{n{e}}}{}{}}00000{{}{{n{c}}}{}}00000{f{{n{BlBn}}}}0{fC`}00000`````````````{{{f{{En{c}}}}}{{Fb{{F`{c}}}}}Fd}{{{f{h{En{c}}}}}{{Ff{{F`{c}}}}}Fd}{f{{f{c}}}{}}000{{{f{hc}}}{{n{Fhl}}}A`}{{{f{hc}}}{{n{Fjl}}}A`}{{{f{hc}}}{{n{{F`{e}}l}}}A`{FlFd}}{{{f{h}}}{{f{hc}}}{}}000{{{f{h{F`{c}}}}Fj}AbFd}{{{f{h{En{c}}}}}AbFd}{{{f{Fh}}}Fh}{{{f{Fj}}}Fj}{{f{f{hc}}}Ab{}}0{fAb}0{{{f{h{En{c}}}}}{{Db{{f{h{F`{c}}}}}}}Fd}{{{f{hc}}}{{n{Fhl}}}Ad}{{{f{hc}}}{{n{Fjl}}}Ad}{{{f{hc}}}{{n{{F`{e}}l}}}Ad{FnFd}}{{}{{En{c}}}Fd}{{{f{Fh}}{f{hc}}}{{n{AbAh}}}Aj}{{{f{Fj}}{f{hc}}}{{n{AbAh}}}Aj}{{{f{{F`{c}}}}{f{he}}}{{n{AbAh}}}{BfFd}Aj}{{{f{Fh}}{f{Fh}}}Al}{{{f{Fj}}{f{Fj}}}Al}{{{f{{En{c}}}}{f{hB`}}}Dd{FdG`}}{{{f{Fh}}{f{hB`}}}Dd}{{{f{Fj}}{f{hB`}}}Dd}0{{{f{{F`{c}}}}{f{hB`}}}Dd{G`Fd}}{cc{}}000{{{f{{F`{c}}}}}FjFd}`{{}c{}}000{{{f{{En{c}}}}}AlFd}0{{{f{{En{c}}}}}{{Gb{{F`{c}}}}}Fd}{{{f{h{En{c}}}}}{{Gd{{F`{c}}}}}Fd}{{{f{{En{c}}}}}EfFd}`{{}{{En{c}}}Fd}{{D`c}{{F`{c}}}Fd}{{{f{{En{c}}}}}{{Db{{f{{F`{c}}}}}}}Fd}{{{f{h{En{c}}}}}{{Db{{f{h{F`{c}}}}}}}Fd}{{{f{Fj}}c}nBj}{fc{}}0{fBd}{c{{n{e}}}{}{}}000{{}{{n{c}}}{}}000{f{{n{BlBn}}}}{fC`}000``````````{{{f{{Gf{ceg}}}}}Ef{}FdGh}{f{{f{c}}}{}}0000{{{f{h}}}{{f{hc}}}{}}0000`{{{f{Gj}}}Gj}{{f{f{hc}}}Ab{}}{fAb}{{{f{Cb}}}{{Eh{Gl}}}}`{{{f{h{Gf{ceg}}}}D`}Ab{}FdGh}{{{f{Gj}}{f{Gj}}}Al}{{f{f{c}}}Al{}}00{{{f{{Gn{CdClCf}}}}Cf}Gj}{{{f{H`}}{f{hB`}}}Dd}{{{f{Gl}}{f{hB`}}}Dd}{{{f{Gj}}{f{hB`}}}Dd}{{{f{Hb}}{f{hB`}}}Dd}{cc{}}0000{{{f{{Gf{ceg}}}}}Hd{}FdGh}`{{}c{}}0000``{{Hd{f{Cb}}eim}{{Eh{{Gf{ckg}}}}}{}{{Hh{{E`{{Db{{f{Ch}}}}}}}{{Hf{{Eh{c}}}}}}}Gh{{Hh{{f{Cb}}}{{Hf{g}}}}}Fd{{An{{F`{k}}}}}}``````{fc{}}{c{{n{e}}}{}{}}0000{{}{{n{c}}}{}}0000{fC`}0000````````````````{f{{f{c}}}{}}00{{{f{hc}}}{{n{Hjl}}}A`}{{{f{hc}}}{{n{Hll}}}A`}{{{f{hc}}}{{n{{Hn{e}}l}}}A`{I`Fl}}{{{f{h}}}{{f{hc}}}{}}00{{{f{h{Hn{c}}}}}AbI`}{{{f{Hj}}}Hj}{{{f{Hl}}}Hl}{{{f{{Hn{c}}}}}{{Hn{c}}}{I`Ib}}{{f{f{hc}}}Ab{}}00{fAb}00{{{f{hc}}}{{n{Hjl}}}Ad}{{{f{hc}}}{{n{Hll}}}Ad}{{{f{hc}}}{{n{{Hn{e}}l}}}Ad{I`Fn}}{{}Hj}{{}Hl}{c{{n{Hj}}}Af}{c{{n{Hl}}}Af}{{{f{Hj}}{f{hc}}}{{n{AbAh}}}Aj}{{{f{Hl}}{f{hc}}}{{n{AbAh}}}Aj}{{{f{{Hn{c}}}}{f{he}}}{{n{AbAh}}}{I`Bf}Aj}{{{f{Hj}}{f{hB`}}}Dd}{{{f{Hl}}{f{hB`}}}Dd}0{{{f{{Hn{c}}}}{f{hB`}}}Dd{I`G`}}{{{f{Id}}{f{hc}}}{{n{AbAh}}}Aj}{cc{}}00{{}c{}}00`{{{Db{{f{Ch}}}}}{{Eh{If}}}}{{{Db{c}}}{{Hn{c}}}I`}{{{f{{Hn{c}}}}}{{Db{{f{c}}}}}I`}{{{f{h{Hn{c}}}}}{{f{h{Db{c}}}}}I`}{{{f{hIf}}{f{Hd}}}{{Eh{Ab}}}}0{{{f{h{Ih{}{{Hf{c}}}}}}{f{Hd}}c}{{Eh{Ab}}}Ij}{{{f{h{In{}{{Il{c}}{Hf{e}}}}}}{f{Hd}}ce}{{Eh{Ab}}}IjIj}{{{f{h{J`{}{{Il{c}}}}}}{f{Hd}}c}{{Eh{Ab}}}Ij}{{{f{Hj}}c}nBj}{{{f{Hl}}c}nBj}{{{f{h{Hn{c}}}}c}AbI`}{{{f{hHl}}c}AbJb}7`7{{{f{hId}}{f{hc}}}{{n{Abl}}}Ad}{fc{}}00{fBd}`{c{{n{e}}}{}{}}00{{}{{n{c}}}{}}00{f{{n{BlBn}}}}{fC`}00`````````````````{{{f{Jd}}Jf}Df}{f{{f{c}}}{}}000000{{{f{h}}}{{f{hc}}}{}}000000{{{f{Jh}}}Jh}{{{f{Jj}}}Jj}{{f{f{hc}}}Ab{}}0{fAb}0{{{f{Jd}}DfJf}Ab}{{}Jd}{{}Jl}{c{{n{Jn}}}Af}{{{f{hJl}}}Ab}{{{f{Jn}}{f{hB`}}}Dd}{{{f{K`}}{f{hB`}}}Dd}{{{f{Jh}}{f{hB`}}}Dd}{{{f{Jj}}{f{hB`}}}Dd}{cc{}}000000{{{f{Jd}}}Ef}0{{}c{}}000000{{{f{Jj}}}Kb}00{{{f{Jj}}Dh}Kb}1{{{f{Jh}}}Kd}{{{f{Jj}}}Kd}13{{{f{Jh}}}Dh}424{{{f{Cb}}{f{{Kf{{f{d}}}}}}}{{Eh{Gh}}}}{{{f{Cb}}{f{{Kf{{f{d}}}}}}}{{Eh{Kh}}}}{{}Jd}{{}Jl}{KbJj}{{}Jh}{KdJh}{{{f{Jh}}Dh}Kd};{{{f{Gh}}{f{{Kf{{f{Hl}}}}}}}{{Eh{Ab}}}}{{{f{Kh}}{f{{Kf{{f{Hl}}}}}}}{{Eh{Ab}}}}{{{f{Gh}}EfJn{f{b}}}K`}{{{f{Kh}}EfJn{f{b}}}K`}{{{f{hJh}}Kd}Ab}{{{f{hJj}}Kb}Ab}{{{f{Jd}}}Ab}{{{f{hJh}}}Ab}{{{f{hJj}}}Ab}{{{f{Jn}}c}nBj}{{{f{hGh}}{f{Hd}}}{{Eh{Ab}}}}{{{f{Jj}}}Kb}1{fc{}}0{c{{n{e}}}{}{}}000000{{}{{n{c}}}{}}000000{fC`}000000``````````````{f{{f{c}}}{}}000{{{f{h}}}{{f{hc}}}{}}000{{{f{Kj}}{f{Kj}}}Al}{cc{}}000{{}c{}}000{{{Db{{f{Ch}}}}}{{Eh{{Kl{c}}}}}{}}{{{Db{{f{Ch}}}}}{{Eh{{Kn{c}}}}}{}}{{{f{h{Kl{c}}}}{f{Hd}}e}{{Eh{Ab}}}I`{}}{{{f{h{Kn{c}}}}{f{Hd}}e}{{Eh{Ab}}}I`{}};;;;::::9999","D":"AEb","p":[[5,"CuError",0,617],[1,"str"],[1,"reference",null,null,1],[0,"mut"],[6,"UnifiedLogType",0,617],[6,"DecodeError",618],[6,"Result",619,null,1],[10,"BorrowDecoder",620],[1,"unit"],[10,"Decoder",620],[10,"Deserializer",621],[6,"EncodeError",618],[10,"Encoder",622],[1,"bool"],[10,"WriteStream",0,617],[5,"Formatter",623],[5,"Error",623],[5,"String",624],[10,"Encode",622],[10,"Error",625],[10,"Serializer",626],[5,"CompactString",627],[6,"ToCompactStringError",627],[5,"TypeId",628],[5,"CuConfig",60],[5,"Node",60],[8,"NodeId",60],[5,"ComponentConfig",60],[5,"Value",60],[5,"Cnx",60],[5,"MonitorConfig",60],[1,"u32"],[6,"Option",629,null,1],[8,"Result",623],[1,"u8"],[1,"f64"],[1,"i32"],[1,"u16"],[10,"From",630],[5,"Vec",631],[8,"NodeIndex",632],[1,"tuple",null,null,1],[1,"usize"],[8,"CuResult",0,617],[10,"Write",633],[10,"Into",630],[5,"CuListsManager",200],[5,"CopperList",200],[8,"AscIter",200],[10,"CopperListTuple",0,617],[8,"AscIterMut",200],[5,"CopperLiskMask",200],[6,"CopperListState",200],[10,"BorrowDecode",620],[10,"Decode",620],[10,"Debug",623],[8,"Iter",200],[8,"IterMut",200],[5,"CuRuntime",286],[10,"CuMonitor",449],[6,"CuTaskType",286],[5,"CuExecutionLoop",286],[8,"StableDiGraph",634],[5,"CuExecutionStep",286],[6,"CuExecutionUnit",286],[5,"RobotClock",635],[17,"Output"],[10,"Fn",636],[5,"CuCompactString",360],[5,"CuMsgMetadata",360],[5,"CuMsg",360],[10,"CuMsgPayload",360],[10,"Clone",637],[10,"Freezable",360],[10,"CuTaskLifecycle",360],[10,"CuSrcTask",360],[10,"CuMsgPack",360],[17,"Input"],[10,"CuTask",360],[10,"CuSinkTask",360],[10,"ToCompactString",638],[5,"CountingAllocator",449],[5,"Layout",639],[5,"LiveStatistics",449],[5,"CuDurationStatistics",449],[5,"ScopedAllocCounter",449],[6,"CuTaskState",449],[6,"Decision",449],[5,"CuDuration",635],[1,"u64"],[1,"slice"],[5,"NoMonitor",449],[6,"SimOverride",570],[5,"CuSimSrcTask",570],[5,"CuSimSinkTask",570],[6,"CuTaskCallbackState",570]],"r":[[1,617],[2,617],[3,617],[9,617],[10,617],[47,60]],"b":[[33,"impl-Display-for-CuError"],[34,"impl-Debug-for-CuError"],[37,"impl-From%3C%26str%3E-for-CuError"],[38,"impl-From%3CString%3E-for-CuError"],[112,"impl-Display-for-ComponentConfig"],[113,"impl-Debug-for-ComponentConfig"],[114,"impl-Display-for-Value"],[115,"impl-Debug-for-Value"],[121,"impl-From%3Cu8%3E-for-Value"],[122,"impl-From%3CString%3E-for-Value"],[124,"impl-From%3Cf64%3E-for-Value"],[125,"impl-From%3Ci32%3E-for-Value"],[126,"impl-From%3Cu32%3E-for-Value"],[127,"impl-From%3Cu16%3E-for-Value"],[246,"impl-Debug-for-CopperListState"],[247,"impl-Display-for-CopperListState"],[406,"impl-Debug-for-CuMsgMetadata"],[407,"impl-Display-for-CuMsgMetadata"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMABOgAAAAEABAABAAcAAAAJAAAADAAMAB0ABwAmAAEAKQAAACwAAAAuAAMAMwAJAEAAAABGAB0AZgAGAG4ACgB6AAEAfQADAIUAAQCIAAAAigADAJEAAACTAAIAnQABAKIAAwCnAAQArQAeAM0AAADQAAUA2AALAOUAFAD+AAEACQECAA0BEQAkAQ8ANQECADoBCQBJAQAAUAECAFYBAABZARAAbAEBAHMBAwB5ASAAogEDAKsBAwCzAQMAuAEKAMgBAQDMAQIA0AEgAPgBAQABAhUAGAIAABoCAAAcAgYAJAIWAEgCCQBaAg8A","P":[[12,"T"],[14,"__D"],[15,"T"],[18,""],[20,"T"],[22,""],[28,"__D"],[30,"__E"],[31,""],[36,"T"],[37,""],[39,"T"],[41,"U"],[43,"E"],[45,""],[48,"__S"],[50,"T"],[52,""],[53,"U,T"],[55,"U"],[57,""],[69,"T"],[81,""],[87,"T"],[93,""],[104,"__D"],[108,"D"],[109,"__D"],[110,""],[120,"T"],[121,""],[123,"T"],[124,""],[128,"T"],[133,""],[144,"T"],[145,""],[149,"U"],[156,""],[161,"__S"],[165,"S"],[166,"__S"],[167,""],[168,"T"],[170,""],[172,"T"],[178,""],[180,"U,T"],[186,"U"],[192,""],[213,"P"],[215,"T"],[219,"__D"],[221,"__D,P"],[222,"T"],[226,"P"],[228,""],[230,"T"],[232,""],[234,"P"],[235,"__D"],[237,"__D,P"],[238,"P"],[239,"__E"],[241,"P,__E"],[242,""],[244,"P"],[245,""],[248,"P"],[249,"T"],[253,"P"],[255,"U"],[259,"P"],[269,"__S"],[270,"T"],[272,""],[273,"U,T"],[277,"U"],[281,""],[296,"CT,P,M"],[297,"T"],[308,""],[309,"T"],[310,""],[313,"CT,P,M"],[314,""],[315,"K"],[318,""],[323,"T"],[328,"CT,P,M"],[330,"U"],[337,"CT,,M,,P,"],[344,"T"],[345,"U,T"],[350,"U"],[355,""],[376,"T"],[379,"D"],[380,"__D"],[381,"__D,T"],[382,"T"],[386,""],[388,"T"],[392,""],[395,"D"],[396,"__D"],[397,"__D,T"],[398,""],[400,"__D"],[402,"E"],[403,"__E"],[404,"T,__E"],[405,""],[408,"T"],[409,"E"],[410,"T"],[413,"U"],[417,""],[418,"T"],[421,""],[423,"CuSrcTask::Output"],[424,"CuTask::Input,CuTask::Output"],[425,"CuSinkTask::Input"],[426,"__S"],[428,"T"],[429,""],[430,""],[433,"D"],[434,"T"],[437,""],[439,"U,T"],[442,"U"],[445,""],[467,"T"],[481,""],[483,"T"],[485,""],[490,"__D"],[491,""],[496,"T"],[503,""],[505,"U"],[512,""],[543,"__S"],[544,""],[547,"T"],[549,"U,T"],[556,"U"],[563,""],[584,"T"],[592,""],[593,"T"],[597,"U"],[601,"T"],[603,"T,CuSrcTask::Output"],[604,"T,CuSinkTask::Input"],[605,"U,T"],[609,"U"],[613,""]]}],["cu29_clock",{"t":"KFIFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["ClockProvider","CuDuration","CuTime","Instant","OptionCuTime","RobotClock","RobotClockMock","add","","add_assign","","borrow","","","","","borrow_decode","","borrow_mut","","","","","checked_add","checked_duration_since","checked_sub","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","cmp","","decode","","decrement","default","","","deserialize","","div","duration_since","elapsed","encode","","eq","","","fmt","","","","","","","from","","","","","","","","","from_ref_time","get_clock","increment","into","","","","","is_none","mock","mul","new","none","now","","","partial_cmp","","recent","","saturating_duration_since","serialize","","set_value","sub","","","sub_assign","to_owned","","","","","to_string","","try_from","","","","","try_into","","","","","type_id","","","","","unwrap","value"],"q":[[0,"cu29_clock"],[127,"quanta::instant"],[128,"core::time"],[129,"bincode::error"],[130,"core::result"],[131,"bincode::de"],[132,"core::option"],[133,"core::cmp"],[134,"serde::de"],[135,"core::convert"],[136,"bincode::enc"],[137,"core::fmt"],[138,"serde::ser"],[139,"alloc::string"],[140,"core::any"]],"i":"```````bd101AdAh2Aj424213033342130421304213043420421424334242344221304442221301Cd15324132523241542445315444532415353241532415324131","f":"```````{{bb}c{}}{{df}d}{{{j{hb}}b}l}{{{j{hd}}f}l}{j{{j{c}}}{}}0000{{{j{hc}}}{{A`{bn}}}Ab}{{{j{hc}}}{{A`{Adn}}}Ab}{{{j{h}}}{{j{hc}}}{}}0000{{{j{d}}f}{{Af{d}}}}{{{j{d}}d}{{Af{f}}}}1{{{j{b}}}b}{{{j{Ad}}}Ad}{{{j{Ah}}}Ah}{{{j{d}}}d}{{{j{Aj}}}Aj}{{j{j{hc}}}l{}}0000{jl}0000{{{j{b}}{j{b}}}Al}{{{j{d}}{j{d}}}Al}{{{j{hc}}}{{A`{bn}}}An}{{{j{hc}}}{{A`{Adn}}}An}{{{j{Aj}}f}l}{{}b}{{}Ad}{{}Ah}{c{{A`{b}}}B`}{c{{A`{Ad}}}B`}{{bc}b{{Bd{Bb}}}}{{{j{d}}d}f}{{{j{d}}}f}{{{j{b}}{j{hc}}}{{A`{lBf}}}Bh}{{{j{Ad}}{j{hc}}}{{A`{lBf}}}Bh}{{{j{b}}{j{b}}}Bj}{{{j{Ad}}{j{Ad}}}Bj}{{{j{d}}{j{d}}}Bj}{{{j{b}}{j{hBl}}}Bn}0{{{j{Ad}}{j{hBl}}}Bn}0{{{j{Ah}}{j{hBl}}}Bn}{{{j{d}}{j{hBl}}}{{A`{lC`}}}}{{{j{Aj}}{j{hBl}}}Bn}{fb}{Bbb}{cc{}}0{CbAd}{{{Af{Cb}}}Ad}222{BbAh}{{{j{Cd}}}Ah}{{{j{Aj}}f}l}{{}c{}}0000{{{j{Ad}}}Bj}{{}{{Cf{AhAj}}}}{{bc}b{{Bd{Bb}}}}{{}Ah}{{}Ad}{{{j{Ah}}}Cb}{{}d}{{{j{Aj}}}Cb}{{{j{b}}{j{b}}}{{Af{Al}}}}{{{j{d}}{j{d}}}{{Af{Al}}}}43{{{j{d}}d}f}{{{j{b}}c}A`Ch}{{{j{Ad}}c}A`Ch}{{{j{Aj}}Bb}l}{{bb}c{}}{{df}d}{{dd}f}{{{j{hd}}f}l}{jc{}}0000{jCj}0{c{{A`{e}}}{}{}}0000{{}{{A`{c}}}{}}0000{jCl}0000{AdCb}{{{j{Aj}}}Bb}","D":"Dd","p":[[5,"CuDuration",0],[5,"Instant",0,127],[5,"Duration",128],[0,"mut"],[1,"reference",null,null,1],[1,"unit"],[6,"DecodeError",129],[6,"Result",130,null,1],[10,"BorrowDecoder",131],[5,"OptionCuTime",0],[6,"Option",132,null,1],[5,"RobotClock",0],[5,"RobotClockMock",0],[6,"Ordering",133],[10,"Decoder",131],[10,"Deserializer",134],[1,"u64"],[10,"Into",135],[6,"EncodeError",129],[10,"Encoder",136],[1,"bool"],[5,"Formatter",137],[8,"Result",137],[5,"Error",137],[8,"CuTime",0],[10,"ClockProvider",0],[1,"tuple",null,null,1],[10,"Serializer",138],[5,"String",139],[5,"TypeId",140]],"r":[[3,127]],"b":[[59,"impl-Display-for-CuDuration"],[60,"impl-Debug-for-CuDuration"],[61,"impl-Debug-for-OptionCuTime"],[62,"impl-Display-for-OptionCuTime"],[66,"impl-From%3CDuration%3E-for-CuDuration"],[67,"impl-From%3Cu64%3E-for-CuDuration"],[70,"impl-From%3CCuDuration%3E-for-OptionCuTime"],[71,"impl-From%3COption%3CCuDuration%3E%3E-for-OptionCuTime"],[100,"impl-Sub%3CDuration%3E-for-Instant"],[101,"impl-Sub-for-Instant"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAF0ADwAAAAAACAAAAAoADQAbABIALwAFADcADQBHAAEATQABAFQAAABWAAAAWAABAFwAAgBhAAEAZAABAGcAFwA=","P":[[7,"Add::Output"],[8,""],[11,"T"],[16,"D"],[17,"__D"],[18,"T"],[23,""],[31,"T"],[36,""],[43,"D"],[44,"__D"],[45,""],[49,"__D"],[51,"T"],[52,""],[54,"E"],[55,"__E"],[56,""],[68,"T"],[70,""],[72,"T"],[75,""],[78,"U"],[83,""],[85,"T"],[86,""],[96,"__S"],[98,""],[99,"Sub::Output"],[100,""],[103,"T"],[108,""],[110,"U,T"],[115,"U"],[120,""]]}],["cu29_derive",{"t":"XQ","n":["copper_runtime","gen_cumsgs"],"q":[[0,"cu29_derive"]],"i":"``","f":"``","D":"d","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA","P":[]}],["cu29_export",{"t":"GPGPPPFNNNNNNNNNNNNNNNONNHNNNNNNNNNNNNNNNNNNHHNNNNNNNNNNNNNONNNNNOO","n":["Command","Csv","ExportFormat","ExtractCopperlist","ExtractLog","Json","LogReaderCli","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","cmp","command","","command_for_update","compare","copperlists_dump","eq","equivalent","","","fmt","from","","","from_arg_matches","","from_arg_matches_mut","","group_id","has_subcommand","into","","","partial_cmp","run_cli","textlog_dump","to_owned","to_possible_value","to_string","try_from","","","try_into","","","try_to_compact_string","type_id","","","unifiedlog_base","update_from_arg_matches","","update_from_arg_matches_mut","","value_variants","export_format","log_index"],"q":[[0,"cu29_export"],[65,"cu29_export::Command"],[67,"clap_builder::builder::command"],[68,"core::cmp"],[69,"cu29::copperlist"],[70,"core::iter::traits::iterator"],[71,"std::io"],[72,"cu29_traits"],[73,"core::fmt"],[74,"clap_builder::parser::matches::arg_matches"],[75,"clap_builder"],[76,"core::result"],[77,"clap_builder::util::id"],[78,"core::option"],[79,"std::path"],[80,"clap_builder::builder::possible_value"],[81,"alloc::string"],[82,"compact_str"],[83,"core::any"]],"i":"`h`Bf01`B`01120120122220002`222222010101012012``2222012012201001012CnD`","f":"```````{bb}000{d{{d{c}}}{}}00{{{d{f}}}{{d{fc}}}{}}00{{{d{h}}}h}{{d{d{fc}}}j{}}{dj}{{{d{h}}{d{h}}}l}{{}b}`0{{d{d{c}}}l{}}{c{{`{{Ab{}{{n{{A`{e}}}}}}}}}AdAf}{{{d{h}}{d{h}}}Ah}{{d{d{c}}}Ah{}}00{{{d{h}}{d{fAj}}}Al}{cc{}}00{{{d{An}}}{{Bd{B`Bb}}}}{{{d{An}}}{{Bd{BfBb}}}}{{{d{fAn}}}{{Bd{B`Bb}}}}{{{d{fAn}}}{{Bd{BfBb}}}}{{}{{Bj{Bh}}}}{{{d{Bl}}}Ah}{{}c{}}00{{{d{h}}{d{h}}}{{Bj{l}}}}{{}{{Bn{j}}}}{{c{d{C`}}}{{Bn{j}}}Ad}{dc{}}{{{d{h}}}{{Bj{Cb}}}}{dCd}{c{{Bd{e}}}{}{}}00{{}{{Bd{c}}}{}}00{d{{Bd{CfCh}}}}{dCj}00`{{{d{fB`}}{d{An}}}{{Bd{jBb}}}}{{{d{fBf}}{d{An}}}{{Bd{jBb}}}}{{{d{fB`}}{d{fAn}}}{{Bd{jBb}}}}{{{d{fBf}}{d{fAn}}}{{Bd{jBb}}}}{{}{{d{{Cl{h}}}}}}``","D":"Aj","p":[[5,"Command",67],[1,"reference",null,null,1],[0,"mut"],[6,"ExportFormat",0],[1,"unit"],[6,"Ordering",68],[17,"Item"],[5,"CopperList",69],[10,"Iterator",70],[10,"Read",71],[10,"CopperListTuple",72],[1,"bool"],[5,"Formatter",73],[8,"Result",73],[5,"ArgMatches",74],[5,"LogReaderCli",0],[8,"Error",75],[6,"Result",76,null,1],[6,"Command",0],[5,"Id",77],[6,"Option",78,null,1],[1,"str"],[8,"CuResult",72],[5,"Path",79],[5,"PossibleValue",80],[5,"String",81],[5,"CompactString",82],[6,"ToCompactStringError",82],[5,"TypeId",83],[1,"slice"],[15,"ExtractCopperlist",65],[15,"ExtractLog",65]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADYACAAAAAMABgAAAAgAEQAbAAQAIwAFACwAAAAvAAwAPQAGAA==","P":[[11,"T"],[17,""],[18,"T"],[19,""],[24,"K"],[25,",P"],[26,""],[27,"K"],[30,""],[31,"T"],[34,""],[40,"U"],[43,""],[45,""],[46,"T"],[47,""],[49,"U,T"],[52,"U"],[55,""]]}],["cu29_helpers",{"t":"FHNNONNONNNO","n":["CopperContext","basic_copper_setup","borrow","borrow_mut","clock","from","into","logger_runtime","try_from","try_into","type_id","unified_logger"],"q":[[0,"cu29_helpers"],[12,"std::path"],[13,"core::option"],[14,"cu29_clock"],[15,"cu29_traits"],[16,"core::result"],[17,"core::any"]],"i":"``n000000000","f":"`{{{d{b}}{h{f}}j{h{l}}}{{A`{n}}}}{d{{d{c}}}{}}{{{d{Ab}}}{{d{Abc}}}{}}`{cc{}}{{}c{}}`{c{{Ad{e}}}{}{}}{{}{{Ad{c}}}{}}{dAf}`","D":"h","p":[[5,"Path",12],[1,"reference",null,null,1],[1,"usize"],[6,"Option",13,null,1],[1,"bool"],[5,"RobotClock",14],[5,"CopperContext",0],[8,"CuResult",15],[0,"mut"],[6,"Result",16,null,1],[5,"TypeId",17]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAgAAwAAAAAAAwACAAgABAA=","P":[[2,"T"],[6,"U"],[8,"U,T"],[9,"U"],[10,""]]}],["cu29_intern_strs",{"t":"H","n":["read_interned_strings"],"q":[[0,"cu29_intern_strs"],[1,"std::path"],[2,"alloc::string"],[3,"alloc::vec"],[4,"cu29_traits"]],"i":"`","f":"{{{d{b}}}{{j{{h{f}}}}}}","D":"b","p":[[5,"Path",1],[1,"reference",null,null,1],[5,"String",2],[5,"Vec",3],[8,"CuResult",4]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA","P":[]}],["cu29_log",{"t":"SFSNNNNHNNNNNHNNONOOHNONNNNE","n":["ANONYMOUS","CuLogEntry","MAX_LOG_PARAMS_ON_STACK","add_param","borrow","borrow_mut","decode","default_log_index_dir","deserialize","encode","eq","fmt","","format_logline","from","into","msg_index","new","paramname_indexes","params","rebuild_logline","serialize","time","to_string","try_from","try_into","type_id","value"],"q":[[0,"cu29_log"],[28,"cu29_value"],[29,"bincode::error"],[30,"core::result"],[31,"bincode::de"],[32,"std::path"],[33,"serde::de"],[34,"bincode::enc"],[35,"core::fmt"],[36,"cu29_clock"],[37,"alloc::string"],[38,"std::collections::hash::map"],[39,"cu29_traits"],[40,"serde::ser"],[41,"core::any"]],"i":"```d000`00000`000000`000000`","f":"```{{{f{bd}}hj}l}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{bc}}}{{A`{dn}}}Ab}{{}Ad}{c{{A`{d}}}Af}{{{f{d}}{f{bc}}}{{A`{lAh}}}Aj}{{{f{d}}{f{d}}}Al}{{{f{d}}{f{bAn}}}B`}0{{Bb{f{Bd}}{f{{Bh{Bf}}}}{f{{Bj{BfBf}}}}}{{Bl{Bf}}}}{cc{}}{{}c{}}`{hd}``{{{f{{Bh{Bf}}}}{f{d}}}{{Bl{Bf}}}}{{{f{d}}c}A`Bn}`{fBf}{c{{A`{e}}}{}{}}{{}{{A`{c}}}{}}{fC`}`","D":"A`","p":[[0,"mut"],[5,"CuLogEntry",0],[1,"reference",null,null,1],[1,"u32"],[6,"Value",28],[1,"unit"],[6,"DecodeError",29],[6,"Result",30,null,1],[10,"Decoder",31],[5,"PathBuf",32],[10,"Deserializer",33],[6,"EncodeError",29],[10,"Encoder",34],[1,"bool"],[5,"Formatter",35],[8,"Result",35],[8,"CuTime",36],[1,"str"],[5,"String",37],[1,"slice"],[5,"HashMap",38],[8,"CuResult",39],[10,"Serializer",40],[5,"TypeId",41]],"r":[],"b":[[11,"impl-Debug-for-CuLogEntry"],[12,"impl-Display-for-CuLogEntry"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABQABwAAAAEAAwAAAAUAAgAJAAQAEQAAABMAAQAWAAYA","P":[[4,"T"],[6,"D"],[7,""],[8,"__D"],[9,"E"],[10,""],[14,"T"],[15,"U"],[17,""],[21,"__S"],[23,""],[24,"U,T"],[25,"U"],[26,""]]}],["cu29_log_derive",{"t":"Q","n":["debug"],"q":[[0,"cu29_log_derive"]],"i":"`","f":"`","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA","P":[]}],["cu29_log_runtime",{"t":"FFFFNNNNNNNNNNNNNNNNNNNNNNNNNHNNHNNNNNNNNNNNNNNN","n":["LoggerRuntime","NullLog","OwningIoWriter","SimpleFileWriter","borrow","","","","borrow_mut","","","","bytes_written","drop","enabled","flush","","","","fmt","from","","","","init","into","","","","log","","","log_debug_mode","new","","try_from","","","","try_into","","","","type_id","","","","write"],"q":[[0,"cu29_log_runtime"],[48,"std::io"],[49,"log"],[50,"bincode::error"],[51,"core::result"],[52,"cu29_traits"],[53,"core::fmt"],[54,"cu29_clock"],[55,"core::option"],[56,"cu29_log"],[57,"std::path"],[58,"core::any"]],"i":"````A`lfAj321012332100321023210`30`103210321032101","f":"````{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{{b{{f{c}}}}}hj}{{{b{dl}}}n}{{{b{A`}}{b{Ab}}}Ad}{{{b{A`}}}n}{{{b{l}}}n}{{{b{d{f{c}}}}}{{Ah{nAf}}}j}{{{b{dAj}}}{{Al{n}}}}{{{b{Aj}}{b{dAn}}}B`}{cc{}}000{{Bbc{Bd{e}}}l{{Bh{Bf}}}Bj}{{}c{}}000{{{b{dBf}}}{{Al{n}}}}{{{b{A`}}{b{Bl}}}n}{{{b{dAj}}{b{Bf}}}{{Al{n}}}}{{{b{dBf}}{b{Bn}}{b{{C`{{b{Bn}}}}}}}{{Al{n}}}}{c{{f{c}}}j}{{{b{Cb}}}{{Al{Aj}}}}{c{{Ah{e}}}{}{}}000{{}{{Ah{c}}}{}}000{bCd}000{{{b{d{f{c}}}}{b{{C`{Cf}}}}}{{Ah{nAf}}}j}","D":"Aj","p":[[1,"reference",null,null,1],[0,"mut"],[5,"OwningIoWriter",0],[1,"usize"],[10,"Write",48],[5,"LoggerRuntime",0],[1,"unit"],[5,"NullLog",0],[5,"Metadata",49],[1,"bool"],[6,"EncodeError",50],[6,"Result",51,null,1],[5,"SimpleFileWriter",0],[8,"CuResult",52],[5,"Formatter",53],[8,"Result",53],[5,"RobotClock",54],[6,"Option",55,null,1],[5,"CuLogEntry",56],[10,"WriteStream",52],[10,"Log",49],[5,"Record",49],[1,"str"],[1,"slice"],[5,"PathBuf",57],[5,"TypeId",58],[1,"u8"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACMABQAAAAAAAgABAAUADwAfAAEAIgAOAA==","P":[[4,"T"],[12,"W"],[13,""],[17,"W"],[18,""],[20,"T"],[24,","],[25,"U"],[29,""],[33,"W"],[34,""],[35,"U,T"],[39,"U"],[43,""],[47,"W"]]}],["cu29_rendercfg",{"t":"FPKFIPPPPPGKNNNNNNNNNNONNNNNNNNCONNNNNNNNNNNNNNNNNNNMHONONNNNNNNNNNNNNNNFFFFFFIFNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNOOONNHHNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNOONNNNNNN","n":["Args","CopperList","CopperListTuple","CuError","CuResult","Empty","Err","LastEntry","Ok","StructuredLogLine","UnifiedLogType","WriteStream","add_cause","augment_args","augment_args_for_update","borrow","","","borrow_decode","borrow_mut","","","cause","clone","","clone_into","","clone_to_uninit","","command","command_for_update","config","","decode","deserialize","encode","eq","flush","fmt","","","from","","","","","from_arg_matches","from_arg_matches_mut","group_id","into","","","log","main","message","new_with_cause","open","serialize","to_owned","","to_string","try_from","","","try_into","","","type_id","","","update_from_arg_matches","update_from_arg_matches_mut","Cnx","ComponentConfig","CuConfig","CuConfigRepresentation","MonitorConfig","Node","NodeId","Value","add_node","batch","borrow","","","","","","","borrow_mut","","","","","","","clone","","","","","","clone_into","","","","","","clone_to_uninit","","","","","","cnx","config","","connect","connect_ext","default","","","","deserialize","","","","","","","deserialize_ron","dst","eq","fmt","","","","","","","","from","","","","","","","","","","","","","get","get_all_instances_configs","get_all_nodes","get_config","get_dst_edges","get_edge_weight","get_id","get_instance_config","get_monitor_config","get_node","get_node_input_msg_type","get_node_output_msg_type","get_options","get_param","get_src_edges","get_type","","graph","id","into","","","","","","","into_resettable","monitor","","msg","new","","read_configuration","read_configuration_str","render","serialize","","","","","","","serialize_ron","set","set_param","set_type","src","store","tasks","to_owned","","","","","","to_string","","try_from","","","","","","","try_into","","","","","","","type_","","type_id","","","","","",""],"q":[[0,"cu29_rendercfg"],[72,"cu29_rendercfg::config"],[234,"cu29_traits"],[235,"clap_builder::builder::command"],[236,"bincode::error"],[237,"core::result"],[238,"bincode::de"],[239,"serde::de"],[240,"bincode::enc"],[241,"core::fmt"],[242,"alloc::string"],[243,"clap_builder::parser::matches::arg_matches"],[244,"clap_builder"],[245,"clap_builder::util::id"],[246,"core::option"],[247,"std::io::error"],[248,"core::error"],[249,"serde::ser"],[250,"core::any"],[251,"core::convert"],[252,"alloc::vec"],[253,"petgraph::adj"],[254,"ron::options"],[255,"clap_builder::builder::resettable"],[256,"std::io"]],"i":"`l```0Fd101``bBj01303130113131300`03133B`224222411112410`221224224124124111````````ClDfDbDdCn34DhDj4325610432561432561432561021664610432561065344332561433333332561046616622666662621624325610360542``6432561064225504325614343256104325610214325610","f":"````````````{{b{f{d}}}b}{hh}0{f{{f{c}}}{}}00{{{f{jc}}}{{A`{ln}}}Ab}{{{f{j}}}{{f{jc}}}{}}00`{{{f{b}}}b}{{{f{l}}}l}{{f{f{jc}}}Ad{}}0{fAd}0{{}h}0``{{{f{jc}}}{{A`{ln}}}Af}{c{{A`{b}}}Ah}{{{f{l}}{f{jc}}}{{A`{AdAj}}}Al}{{{f{l}}{f{l}}}An}{{{f{jB`}}}{{A`{Adb}}}}{{{f{b}}{f{jBb}}}{{A`{AdBd}}}}0{{{f{l}}{f{jBb}}}{{A`{AdBd}}}}{Bfb}{{{f{d}}}b}{cc{}}00{{{f{Bh}}}{{A`{BjBl}}}}{{{f{jBh}}}{{A`{BjBl}}}}{{}{{C`{Bn}}}}{{}c{}}00{{{f{jB`}}{f{c}}}{{A`{Adb}}}Cb}{{}{{Cd{Ad}}}}`{{{f{d}}c}bCf}`{{{f{b}}c}A`Ch}{fc{}}0{fBf}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{fCj}00{{{f{jBj}}{f{Bh}}}{{A`{AdBl}}}}{{{f{jBj}}{f{jBh}}}{{A`{AdBl}}}}````````{{{f{jCl}}Cn}D`}`{f{{f{c}}}{}}000000{{{f{j}}}{{f{jc}}}{}}000000{{{f{Db}}}Db}{{{f{Dd}}}Dd}{{{f{Cn}}}Cn}{{{f{Df}}}Df}{{{f{Cl}}}Cl}{{{f{Dh}}}Dh}{{f{f{jc}}}Ad{}}00000{fAd}00000```{{{f{jCl}}D`D`{f{d}}}Ad}{{{f{jCl}}D`D`{f{d}}{C`{D`}}{C`{An}}}Ad}{{}Db}{{}Cl}{{}Dh}{{}Dj}{c{{A`{Db}}}Ah}{c{{A`{Dd}}}Ah}{c{{A`{Cn}}}Ah}{c{{A`{Df}}}Ah}{c{{A`{Cl}}}Ah}{c{{A`{Dh}}}Ah}{c{{A`{Dj}}}Ah}{{{f{d}}}Cl}`{{{f{Dd}}{f{Dd}}}An}{{{f{Db}}{f{jBb}}}Dl}0{{{f{Dd}}{f{jBb}}}Dl}0{{{f{Cn}}{f{jBb}}}Dl}{{{f{Df}}{f{jBb}}}Dl}{{{f{Cl}}{f{jBb}}}Dl}{{{f{Dh}}{f{jBb}}}Dl}{cc{}}{D`Dd}1{DnDd}{BfDd}{E`Dd}{EbDd}{EdDd}66666{{{f{Db}}{f{d}}}{{C`{c}}}{{Ef{Dd}}}}{{{f{Cl}}}{{Eh{{C`{{f{Db}}}}}}}}{{{f{Cl}}}{{Eh{{El{Ej{f{Cn}}}}}}}}{{{f{Dh}}}{{C`{{f{Db}}}}}}{{{f{Cl}}D`}{{Eh{En}}}}{{{f{Cl}}En}{{C`{Df}}}}{{{f{Cn}}}Bf}{{{f{Cn}}}{{C`{{f{Db}}}}}}{{{f{Cl}}}{{C`{{f{Dh}}}}}}{{{f{Cl}}D`}{{C`{{f{Cn}}}}}}{{{f{Cl}}{f{d}}}{{C`{Bf}}}}0{{}F`}{{{f{Cn}}{f{d}}}{{C`{c}}}{{Ef{Dd}}}}8{{{f{Cn}}}{{f{d}}}}{{{f{Dh}}}{{f{d}}}}``{{}c{}}000000{{}{{Fb{Bf}}}}```{{}Db}{{{f{d}}{f{d}}}Cn}{{{f{d}}}{{Fd{Cl}}}}{Bf{{Fd{Cl}}}}{{{f{Cl}}{f{jFf}}}Ad}{{{f{Db}}c}A`Ch}{{{f{Dd}}c}A`Ch}{{{f{Cn}}c}A`Ch}{{{f{Df}}c}A`Ch}{{{f{Cl}}c}A`Ch}{{{f{Dh}}c}A`Ch}{{{f{Dj}}c}A`Ch}{{{f{Cl}}}Bf}{{{f{jDb}}{f{d}}c}Ad{{Fh{Dd}}}}{{{f{jCn}}{f{d}}c}Ad{{Fh{Dd}}}}{{Cn{C`{Bf}}}Cn}```{fc{}}00000{fBf}0{c{{A`{e}}}{}{}}000000{{}{{A`{c}}}{}}000000``{fCj}000000","D":"Fn","p":[[5,"CuError",0,234],[1,"str"],[1,"reference",null,null,1],[5,"Command",235],[0,"mut"],[6,"UnifiedLogType",0,234],[6,"DecodeError",236],[6,"Result",237,null,1],[10,"BorrowDecoder",238],[1,"unit"],[10,"Decoder",238],[10,"Deserializer",239],[6,"EncodeError",236],[10,"Encoder",240],[1,"bool"],[10,"WriteStream",0,234],[5,"Formatter",241],[5,"Error",241],[5,"String",242],[5,"ArgMatches",243],[5,"Args",0],[8,"Error",244],[5,"Id",245],[6,"Option",246,null,1],[10,"Encode",240],[8,"Result",247],[10,"Error",248],[10,"Serializer",249],[5,"TypeId",250],[5,"CuConfig",72],[5,"Node",72],[1,"u32"],[5,"ComponentConfig",72],[5,"Value",72],[5,"Cnx",72],[5,"MonitorConfig",72],[5,"CuConfigRepresentation",72],[8,"Result",241],[1,"f64"],[1,"i32"],[1,"u16"],[1,"u8"],[10,"From",251],[5,"Vec",252],[8,"NodeIndex",253],[1,"tuple",null,null,1],[1,"usize"],[5,"Options",254],[6,"Resettable",255],[8,"CuResult",0,234],[10,"Write",256],[10,"Into",251]],"r":[[2,234],[3,234],[4,234],[10,234],[11,234]],"b":[[38,"impl-Debug-for-CuError"],[39,"impl-Display-for-CuError"],[41,"impl-From%3CString%3E-for-CuError"],[42,"impl-From%3C%26str%3E-for-CuError"],[133,"impl-Debug-for-ComponentConfig"],[134,"impl-Display-for-ComponentConfig"],[135,"impl-Display-for-Value"],[136,"impl-Debug-for-Value"],[142,"impl-From%3Cu32%3E-for-Value"],[144,"impl-From%3Cf64%3E-for-Value"],[145,"impl-From%3CString%3E-for-Value"],[146,"impl-From%3Ci32%3E-for-Value"],[147,"impl-From%3Cu16%3E-for-Value"],[148,"impl-From%3Cu8%3E-for-Value"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAALMAGgAAAAIABQABAAgAAAAKAAAADQASACIACQAvAAIANQAAADcAAQA6AA4ATQAAAFMAIgB4AAcAgQAMAI8AAACRAAQAmwABAJ4AAACgAAMApwABAKoAAwC1AAIAuQABAL4AAwDDAAUAywAfAA==","P":[[15,"T"],[18,"__D"],[19,"T"],[23,""],[25,"T"],[27,""],[33,"__D"],[35,"__E"],[36,""],[43,"T"],[46,""],[49,"U"],[52,"E"],[53,""],[55,""],[57,"__S"],[58,"T"],[60,""],[61,"U,T"],[64,"U"],[67,""],[82,"T"],[96,""],[102,"T"],[108,""],[123,"__D"],[127,"D"],[128,"__D"],[130,""],[141,"T"],[142,""],[143,"T"],[144,""],[149,"T"],[155,""],[167,"T"],[168,""],[173,"U"],[180,""],[189,"__S"],[193,"S"],[194,"__S"],[196,""],[197,"T"],[199,""],[203,"T"],[209,""],[211,"U,T"],[218,"U"],[227,""]]}],["cu29_soa_derive",{"t":"Y","n":["Soa"],"q":[[0,"cu29_soa_derive"]],"i":"`","f":"`","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA","P":[]}],["cu29_traits",{"t":"PKFIPPPPPGKNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNN","n":["CopperList","CopperListTuple","CuError","CuResult","Empty","Err","LastEntry","Ok","StructuredLogLine","UnifiedLogType","WriteStream","add_cause","borrow","","borrow_decode","borrow_mut","","clone","","clone_into","","clone_to_uninit","","decode","deserialize","encode","eq","flush","fmt","","","from","","","","into","","log","new_with_cause","serialize","to_owned","","to_string","try_from","","try_into","","type_id",""],"q":[[0,"cu29_traits"],[49,"bincode::error"],[50,"core::result"],[51,"bincode::de"],[52,"serde::de"],[53,"bincode::enc"],[54,"core::fmt"],[55,"alloc::string"],[56,"core::error"],[57,"serde::ser"],[58,"core::any"]],"i":"j```0B`101``b022020202022022An113111313011131131313","f":"```````````{{b{f{d}}}b}{f{{f{c}}}{}}0{{{f{hc}}}{{n{jl}}}A`}{{{f{h}}}{{f{hc}}}{}}0{{{f{b}}}b}{{{f{j}}}j}{{f{f{hc}}}Ab{}}0{fAb}0{{{f{hc}}}{{n{jl}}}Ad}{c{{n{b}}}Af}{{{f{j}}{f{hc}}}{{n{AbAh}}}Aj}{{{f{j}}{f{j}}}Al}{{{f{hAn}}}{{B`{Ab}}}}{{{f{b}}{f{hBb}}}Bd}0{{{f{j}}{f{hBb}}}Bd}{{{f{d}}}b}{cc{}}{Bfb}1{{}c{}}0{{{f{hAn}}{f{c}}}{{B`{Ab}}}Bh}{{{f{d}}c}bBj}{{{f{b}}c}nBl}{fc{}}0{fBf}{c{{n{e}}}{}{}}0{{}{{n{c}}}{}}0{fBn}0","D":"Ad","p":[[5,"CuError",0],[1,"str"],[1,"reference",null,null,1],[0,"mut"],[6,"UnifiedLogType",0],[6,"DecodeError",49],[6,"Result",50,null,1],[10,"BorrowDecoder",51],[1,"unit"],[10,"Decoder",51],[10,"Deserializer",52],[6,"EncodeError",49],[10,"Encoder",53],[1,"bool"],[10,"WriteStream",0],[8,"CuResult",0],[5,"Formatter",54],[8,"Result",54],[5,"String",55],[10,"Encode",53],[10,"Error",56],[10,"Serializer",57],[5,"TypeId",58]],"r":[],"b":[[28,"impl-Display-for-CuError"],[29,"impl-Debug-for-CuError"],[31,"impl-From%3C%26str%3E-for-CuError"],[33,"impl-From%3CString%3E-for-CuError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACcABwAAAAEABAABAAcAAAAJAAAADAAUACIAAAAmAAsA","P":[[12,"T"],[14,"__D"],[15,"T"],[17,""],[19,"T"],[21,""],[23,"__D"],[25,"__E"],[26,""],[32,"T"],[33,""],[34,"T"],[35,"U"],[37,"E"],[38,""],[39,"__S"],[40,"T"],[42,""],[43,"U,T"],[45,"U"],[47,""]]}],["cu29_unifiedlog",{"t":"GPPPFFGFFFFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["AllocatedSection","NoMoreSpace","Read","Section","SectionHandle","SectionHeader","UnifiedLogger","UnifiedLoggerBuilder","UnifiedLoggerIOReader","UnifiedLoggerRead","UnifiedLoggerWrite","Write","borrow","","","","","","","","borrow_decode","borrow_mut","","","","","","","","build","create","","decode","default","","","drop","encode","file_base_name","flush_section","fmt","from","","","","","","","","get_user_buffer","into","","","","","","","","new","","","preallocated_size","read","read_next_section_type","read_section","stream_write","try_from","","","","","","","","try_into","","","","","","","","type_id","","","","","","","","update_header","write"],"q":[[0,"cu29_unifiedlog"],[92,"bincode::error"],[93,"core::result"],[94,"bincode::de"],[95,"std::io::error"],[96,"bincode::enc"],[97,"std::path"],[98,"core::fmt"],[99,"cu29_traits"],[100,"alloc::vec"],[101,"core::option"],[102,"std::sync::mutex"],[103,"alloc::sync"],[104,"core::any"]],"i":"`DfA`1```````00nBn3AnCbfAj165473210550151031531654732100654732105425244`65473210654732106547321005","f":"````````````{b{{b{c}}}{}}0000000{{{b{dc}}}{{j{fh}}}l}{{{b{d}}}{{b{dc}}}{}}0000000{n{{Ab{A`}}}}{{nAd}n}{{f{b{d{Ah{Af}}}}}Aj}{{{b{dc}}}{{j{fh}}}Al}{{}n}{{}f}{{}Aj}{{{b{dAn}}}B`}{{{b{f}}{b{dc}}}{{j{B`Bb}}}Bd}{{n{b{Bf}}}n}{{{b{dAn}}{b{dAj}}}B`}{{{b{f}}{b{dBh}}}Bj}{cc{}}0000000{{{b{dAj}}}{{b{d{Ah{Af}}}}}}{{}c{}}0000000:{{{b{Bl}}}{{Ab{Bn}}}}{{BnC`}Cb}{{nCd}n}{{{b{dCb}}{b{d{Ah{Af}}}}}{{Ab{Cd}}}}{{{b{dBn}}C`}{{Cj{{Ch{{Cf{Af}}}}}}}}{{{b{dBn}}}{{Cj{{Cf{Af}}}}}}{{{Cn{{Cl{An}}}}C`Cd}{{`{{D`{c}}}}}Db}{c{{j{e}}}{}{}}0000000{{}{{j{c}}}{}}0000000{bDd}0000000{{{b{dAj}}}B`}{{nAd}n}","D":"Cd","p":[[1,"reference",null,null,1],[0,"mut"],[5,"SectionHeader",0],[6,"DecodeError",92],[6,"Result",93,null,1],[10,"BorrowDecoder",94],[5,"UnifiedLoggerBuilder",0],[6,"UnifiedLogger",0],[8,"Result",95],[1,"bool"],[1,"u8"],[1,"slice"],[5,"SectionHandle",0],[10,"Decoder",94],[5,"UnifiedLoggerWrite",0],[1,"unit"],[6,"EncodeError",92],[10,"Encoder",96],[5,"Path",97],[5,"Formatter",98],[8,"Result",98],[5,"PathBuf",97],[5,"UnifiedLoggerRead",0],[6,"UnifiedLogType",99],[5,"UnifiedLoggerIOReader",0],[1,"usize"],[5,"Vec",100],[6,"Option",101,null,1],[8,"CuResult",99],[5,"Mutex",102],[5,"Arc",103,null,1],[10,"WriteStream",99],[10,"Encode",96],[5,"TypeId",104],[6,"AllocatedSection",0]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAEIABgAAAAQADAAaACgAAQAyAAAAOwAFAEMAGQA=","P":[[12,"T"],[20,"__D"],[21,"T"],[29,""],[32,"__D"],[33,""],[37,"__E"],[38,""],[41,"T"],[49,""],[50,"U"],[58,""],[65,"E"],[66,"U,T"],[74,"U"],[82,""]]}]]')); +var searchIndex = new Map(JSON.parse('[["cu29",{"t":"PKFIPPPPPGKNNNNNNENNNNNNCCCCNNNNNNNNNNNNQNNMCNQENCNNNNNNNNNNFFFFFIFNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNONNHHNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNIIPFFGFPPPIIPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNONNNNNNNNNNNNNNNNNNNNNFFGFGPPPPPNNNNNNNNNNNONNNHONNNNNHNNNNNNNNNNONNNNNOONOOOOOONNNNNNNNNNNNNNNNFFFKKKKKKKRRRROONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOMNNNNNMMMNNNNNONNNNNNONNNNNNNNNNPFFKGGJPFFPPPFPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNMNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFGPPPPPPPGPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["CopperList","CopperListTuple","CuError","CuResult","Empty","Err","LastEntry","Ok","StructuredLogLine","UnifiedLogType","WriteStream","add_cause","borrow","","borrow_decode","borrow_mut","","clock","clone","","clone_into","","clone_to_uninit","","config","copperlist","curuntime","cutask","decode","deserialize","encode","eq","flush","fmt","","","from","","","","input_msg","into","","log","monitoring","new_with_cause","output_msg","read_configuration","serialize","simulation","to_owned","","to_string","try_from","","try_into","","try_to_compact_string","type_id","","Cnx","ComponentConfig","CuConfig","MonitorConfig","Node","NodeId","Value","add_node","batch","borrow","","","","","","borrow_mut","","","","","","clone","","","","","","clone_into","","","","","","clone_to_uninit","","","","","","connect","connect_ext","default","","","deserialize","","","","","","deserialize_ron","eq","fmt","","","","","","","","from","","","","","","","","","","","","get","get_all_instances_configs","get_all_nodes","get_config","get_dst_edges","get_edge_weight","get_id","get_instance_config","get_monitor_config","get_node","get_node_input_msg_type","get_node_output_msg_type","get_param","get_src_edges","get_type","","graph","into","","","","","","msg","new","","read_configuration","read_configuration_str","render","serialize","","","","","","serialize_ron","set","set_param","set_type","store","to_owned","","","","","","to_string","","try_from","","","","","","try_into","","","","","","try_to_compact_string","","type_id","","","","","","AscIter","AscIterMut","BeingSerialized","CopperLiskMask","CopperList","CopperListState","CuListsManager","DoneProcessing","Free","Initialized","Iter","IterMut","Processing","asc_iter","asc_iter_mut","borrow","","","","borrow_decode","","","borrow_mut","","","","change_state","clear","clone","","clone_into","","clone_to_uninit","","create","decode","","","default","encode","","","eq","","fmt","","","","","from","","","","get_state","id","into","","","","is_empty","is_full","iter","iter_mut","len","msgs","new","","peek","pop","serialize","to_owned","","to_string","try_from","","","","try_into","","","","try_to_compact_string","type_id","","","","CuExecutionLoop","CuExecutionStep","CuExecutionUnit","CuRuntime","CuTaskType","Loop","Regular","Sink","Source","Step","available_copper_lists","borrow","","","","","borrow_mut","","","","","clock","clone","clone_into","clone_to_uninit","compute_runtime_plan","copper_lists_manager","end_of_processing","eq","equivalent","","","find_task_type_for_id","fmt","","","","from","","","","","get_clock","input_msg_indices_types","into","","","","","loop_count","monitor","new","node","node_id","output_msg_index_type","steps","task_type","tasks","to_owned","try_from","","","","","try_into","","","","","type_id","","","","","CuCompactString","CuMsg","CuMsgMetadata","CuMsgPack","CuMsgPayload","CuSinkTask","CuSrcTask","CuTask","CuTaskLifecycle","Freezable","Input","","Output","","after_process","before_process","borrow","","","borrow_decode","","","borrow_mut","","","clear_payload","clone","","","clone_into","","","clone_to_uninit","","","decode","","","default","","deserialize","","encode","","","fmt","","","","freeze","from","","","into","","","metadata","new","","payload","payload_mut","postprocess","preprocess","process","","","serialize","","set_payload","set_status","start","status_txt","stop","thaw","to_owned","","","to_string","tov","try_from","","","try_into","","","try_to_compact_string","type_id","","","Abort","CountingAllocator","CuDurationStatistics","CuMonitor","CuTaskState","Decision","GLOBAL","Ignore","LiveStatistics","NoMonitor","Postprocess","Preprocess","Process","ScopedAllocCounter","Shutdown","Start","Stop","alloc","borrow","","","","","","","borrow_mut","","","","","","","clone","","clone_into","","clone_to_uninit","","dealloc","default","","deserialize","drop","fmt","","","","from","","","","","","","get_allocated","get_deallocated","into","","","","","","","jitter_max","jitter_mean","jitter_min","jitter_percentile","jitter_stddev","len","","max","","mean","","min","","new","","","","","new_unbounded","new_with_max","percentile","","process_copperlist","","process_error","","record","","reset","","","serialize","start","stddev","stop","to_owned","","try_from","","","","","","","try_into","","","","","","","type_id","","","","","","","CuSimSinkTask","CuSimSrcTask","CuTaskCallbackState","Errored","ExecuteByRuntime","ExecutedBySim","New","Postprocess","Preprocess","Process","SimOverride","Start","Stop","_Phantom","borrow","","","","borrow_mut","","","","eq","from","","","","into","","","","new","","process","","try_from","","","","try_into","","","","type_id","","",""],"q":[[0,"cu29"],[60,"cu29::config"],[200,"cu29::copperlist"],[286,"cu29::curuntime"],[360,"cu29::cutask"],[449,"cu29::monitoring"],[570,"cu29::simulation"],[617,"cu29_traits"],[618,"bincode::error"],[619,"core::result"],[620,"bincode::de"],[621,"serde::de"],[622,"bincode::enc"],[623,"core::fmt"],[624,"alloc::string"],[625,"core::error"],[626,"serde::ser"],[627,"compact_str"],[628,"core::any"],[629,"core::option"],[630,"core::convert"],[631,"alloc::vec"],[632,"petgraph::adj"],[633,"std::io"],[634,"petgraph::graph_impl::stable_graph"],[635,"cu29_clock"],[636,"core::ops::function"],[637,"core::clone"],[638,"compact_str::traits"],[639,"core::alloc::layout"]],"i":"j```0Eh101``b02202`020202````2022B`1131113`130`1``1`1311313113```````CdCnCjClCf34D`32145032145032145032145055350321450523322145032222222145035505511555515105321450431``5321450531143214503232145032145032321450``Fj````000``0En00Fh2F`1302130021313132130213013213302130002130222220202231332130213032130`````HbGj001Gf0H`Gl34210342333`223333`10342103421210340221110123210342103421034``````````InJ`Ih2Hl0Hj1Hn120120012012012012012121201220Id2312311If2220057634240401342443423424342K```````0``Jn00`100JdKh1Jl34JhJj342561010101044252561034256104434256100000010101010Gh45312221040421521601021453672145367214536721```Kj00L`000`0000KlKn321033210321031010210321032103","f":"```````````{{b{f{d}}}b}{f{{f{c}}}{}}0{{{f{hc}}}{{n{jl}}}A`}{{{f{h}}}{{f{hc}}}{}}0`{{{f{b}}}b}{{{f{j}}}j}{{f{f{hc}}}Ab{}}0{{fAd}Ab}0````{{{f{hc}}}{{n{jl}}}Af}{c{{n{b}}}Ah}{{{f{j}}{f{hc}}}{{n{AbAj}}}Al}{{{f{j}}{f{j}}}An}{{{f{hB`}}}{{n{Abb}}}}{{{f{b}}{f{hBb}}}{{n{AbBd}}}}0{{{f{j}}{f{hBb}}}{{n{AbBd}}}}{cc{}}{{{f{d}}}b}{Bfb}2`{{}c{}}0{{{f{hB`}}{f{c}}}{{n{Abb}}}Bh}`{{{f{d}}c}bBj}``{{{f{b}}c}nBl}`{fc{}}0{fBf}{c{{n{e}}}{}{}}0{{}{{n{c}}}{}}0{f{{n{BnC`}}}}{fCb}0```````{{{f{hCd}}Cf}Ch}`{f{{f{c}}}{}}00000{{{f{h}}}{{f{hc}}}{}}00000{{{f{Cj}}}Cj}{{{f{Cl}}}Cl}{{{f{Cf}}}Cf}{{{f{Cn}}}Cn}{{{f{Cd}}}Cd}{{{f{D`}}}D`}{{f{f{hc}}}Ab{}}00000{{fAd}Ab}00000{{{f{hCd}}ChCh{f{d}}}Ab}{{{f{hCd}}ChCh{f{d}}{Dd{Db}}{Dd{An}}}Ab}{{}Cj}{{}Cd}{{}D`}{c{{n{Cj}}}Ah}{c{{n{Cl}}}Ah}{c{{n{Cf}}}Ah}{c{{n{Cn}}}Ah}{c{{n{Cd}}}Ah}{c{{n{D`}}}Ah}{{{f{d}}}Cd}{{{f{Cl}}{f{Cl}}}An}{{{f{Cj}}{f{hBb}}}Df}0{{{f{Cl}}{f{hBb}}}Df}0{{{f{Cf}}{f{hBb}}}Df}{{{f{Cn}}{f{hBb}}}Df}{{{f{Cd}}{f{hBb}}}Df}{{{f{D`}}{f{hBb}}}Df}{cc{}}{AdCl}{BfCl}2{DhCl}{DjCl}{DbCl}{DlCl}6666{{{f{Cj}}{f{d}}}{{Dd{c}}}{{Dn{Cl}}}}{{{f{Cd}}}{{E`{{Dd{{f{Cj}}}}}}}}{{{f{Cd}}}{{E`{{Ed{Eb{f{Cf}}}}}}}}{{{f{D`}}}{{Dd{{f{Cj}}}}}}{{{f{Cd}}Ch}{{E`{Ef}}}}{{{f{Cd}}Ef}{{Dd{Cn}}}}{{{f{Cf}}}Bf}{{{f{Cf}}}{{Dd{{f{Cj}}}}}}{{{f{Cd}}}{{Dd{{f{D`}}}}}}{{{f{Cd}}Ch}{{Dd{{f{Cf}}}}}}{{{f{Cd}}{f{d}}}{{Dd{Bf}}}}0{{{f{Cf}}{f{d}}}{{Dd{c}}}{{Dn{Cl}}}}7{{{f{Cf}}}{{f{d}}}}{{{f{D`}}}{{f{d}}}}`{{}c{}}00000`{{}Cj}{{{f{d}}{f{d}}}Cf}{{{f{d}}}{{Eh{Cd}}}}{Bf{{Eh{Cd}}}}{{{f{Cd}}{f{hEj}}}Ab}{{{f{Cj}}c}nBl}{{{f{Cl}}c}nBl}{{{f{Cf}}c}nBl}{{{f{Cn}}c}nBl}{{{f{Cd}}c}nBl}{{{f{D`}}c}nBl}{{{f{Cd}}}Bf}{{{f{hCj}}{f{d}}c}Ab{{El{Cl}}}}{{{f{hCf}}{f{d}}c}Ab{{El{Cl}}}}{{Cf{Dd{Bf}}}Cf}`{fc{}}00000{fBf}0{c{{n{e}}}{}{}}00000{{}{{n{c}}}{}}00000{f{{n{BnC`}}}}0{fCb}00000`````````````{{{f{{En{c}}}}}{{Fb{{F`{c}}}}}Fd}{{{f{h{En{c}}}}}{{Ff{{F`{c}}}}}Fd}{f{{f{c}}}{}}000{{{f{hc}}}{{n{Fhl}}}A`}{{{f{hc}}}{{n{Fjl}}}A`}{{{f{hc}}}{{n{{F`{e}}l}}}A`{FlFd}}{{{f{h}}}{{f{hc}}}{}}000{{{f{h{F`{c}}}}Fj}AbFd}{{{f{h{En{c}}}}}AbFd}{{{f{Fh}}}Fh}{{{f{Fj}}}Fj}{{f{f{hc}}}Ab{}}0{{fAd}Ab}0{{{f{h{En{c}}}}}{{Dd{{f{h{F`{c}}}}}}}Fd}{{{f{hc}}}{{n{Fhl}}}Af}{{{f{hc}}}{{n{Fjl}}}Af}{{{f{hc}}}{{n{{F`{e}}l}}}Af{FnFd}}{{}{{En{c}}}Fd}{{{f{Fh}}{f{hc}}}{{n{AbAj}}}Al}{{{f{Fj}}{f{hc}}}{{n{AbAj}}}Al}{{{f{{F`{c}}}}{f{he}}}{{n{AbAj}}}{BhFd}Al}{{{f{Fh}}{f{Fh}}}An}{{{f{Fj}}{f{Fj}}}An}{{{f{{En{c}}}}{f{hBb}}}Df{FdG`}}{{{f{Fh}}{f{hBb}}}Df}{{{f{Fj}}{f{hBb}}}Df}0{{{f{{F`{c}}}}{f{hBb}}}Df{G`Fd}}{cc{}}000{{{f{{F`{c}}}}}FjFd}`{{}c{}}000{{{f{{En{c}}}}}AnFd}0{{{f{{En{c}}}}}{{Gb{{F`{c}}}}}Fd}{{{f{h{En{c}}}}}{{Gd{{F`{c}}}}}Fd}{{{f{{En{c}}}}}EfFd}`{{}{{En{c}}}Fd}{{Dbc}{{F`{c}}}Fd}{{{f{{En{c}}}}}{{Dd{{f{{F`{c}}}}}}}Fd}{{{f{h{En{c}}}}}{{Dd{{f{h{F`{c}}}}}}}Fd}{{{f{Fj}}c}nBl}{fc{}}0{fBf}{c{{n{e}}}{}{}}000{{}{{n{c}}}{}}000{f{{n{BnC`}}}}{fCb}000``````````{{{f{{Gf{ceg}}}}}Ef{}FdGh}{f{{f{c}}}{}}0000{{{f{h}}}{{f{hc}}}{}}0000`{{{f{Gj}}}Gj}{{f{f{hc}}}Ab{}}{{fAd}Ab}{{{f{Cd}}}{{Eh{Gl}}}}`{{{f{h{Gf{ceg}}}}Db}Ab{}FdGh}{{{f{Gj}}{f{Gj}}}An}{{f{f{c}}}An{}}00{{{f{{Gn{CfCnCh}}}}Ch}Gj}{{{f{H`}}{f{hBb}}}Df}{{{f{Gl}}{f{hBb}}}Df}{{{f{Gj}}{f{hBb}}}Df}{{{f{Hb}}{f{hBb}}}Df}{cc{}}0000{{{f{{Gf{ceg}}}}}Hd{}FdGh}`{{}c{}}0000``{{Hd{f{Cd}}eim}{{Eh{{Gf{ckg}}}}}{}{{Hh{{E`{{Dd{{f{Cj}}}}}}}{{Hf{{Eh{c}}}}}}}Gh{{Hh{{f{Cd}}}{{Hf{g}}}}}Fd{{B`{{F`{k}}}}}}``````{fc{}}{c{{n{e}}}{}{}}0000{{}{{n{c}}}{}}0000{fCb}0000````````````````{f{{f{c}}}{}}00{{{f{hc}}}{{n{Hjl}}}A`}{{{f{hc}}}{{n{Hll}}}A`}{{{f{hc}}}{{n{{Hn{e}}l}}}A`{I`Fl}}{{{f{h}}}{{f{hc}}}{}}00{{{f{h{Hn{c}}}}}AbI`}{{{f{Hj}}}Hj}{{{f{Hl}}}Hl}{{{f{{Hn{c}}}}}{{Hn{c}}}{I`Ib}}{{f{f{hc}}}Ab{}}00{{fAd}Ab}00{{{f{hc}}}{{n{Hjl}}}Af}{{{f{hc}}}{{n{Hll}}}Af}{{{f{hc}}}{{n{{Hn{e}}l}}}Af{I`Fn}}{{}Hj}{{}Hl}{c{{n{Hj}}}Ah}{c{{n{Hl}}}Ah}{{{f{Hj}}{f{hc}}}{{n{AbAj}}}Al}{{{f{Hl}}{f{hc}}}{{n{AbAj}}}Al}{{{f{{Hn{c}}}}{f{he}}}{{n{AbAj}}}{I`Bh}Al}{{{f{Hj}}{f{hBb}}}Df}{{{f{Hl}}{f{hBb}}}Df}0{{{f{{Hn{c}}}}{f{hBb}}}Df{I`G`}}{{{f{Id}}{f{hc}}}{{n{AbAj}}}Al}{cc{}}00{{}c{}}00`{{{Dd{{f{Cj}}}}}{{Eh{If}}}}{{{Dd{c}}}{{Hn{c}}}I`}{{{f{{Hn{c}}}}}{{Dd{{f{c}}}}}I`}{{{f{h{Hn{c}}}}}{{f{h{Dd{c}}}}}I`}{{{f{hIf}}{f{Hd}}}{{Eh{Ab}}}}0{{{f{h{Ih{}{{Hf{c}}}}}}{f{Hd}}c}{{Eh{Ab}}}Ij}{{{f{h{In{}{{Il{c}}{Hf{e}}}}}}{f{Hd}}ce}{{Eh{Ab}}}IjIj}{{{f{h{J`{}{{Il{c}}}}}}{f{Hd}}c}{{Eh{Ab}}}Ij}{{{f{Hj}}c}nBl}{{{f{Hl}}c}nBl}{{{f{h{Hn{c}}}}c}AbI`}{{{f{hHl}}c}AbJb}7`7{{{f{hId}}{f{hc}}}{{n{Abl}}}Af}{fc{}}00{fBf}`{c{{n{e}}}{}{}}00{{}{{n{c}}}{}}00{f{{n{BnC`}}}}{fCb}00`````````````````{{{f{Jd}}Jf}Ad}{f{{f{c}}}{}}000000{{{f{h}}}{{f{hc}}}{}}000000{{{f{Jh}}}Jh}{{{f{Jj}}}Jj}{{f{f{hc}}}Ab{}}0{{fAd}Ab}0{{{f{Jd}}AdJf}Ab}{{}Jd}{{}Jl}{c{{n{Jn}}}Ah}{{{f{hJl}}}Ab}{{{f{Jn}}{f{hBb}}}Df}{{{f{K`}}{f{hBb}}}Df}{{{f{Jh}}{f{hBb}}}Df}{{{f{Jj}}{f{hBb}}}Df}{cc{}}000000{{{f{Jd}}}Ef}0{{}c{}}000000{{{f{Jj}}}Kb}00{{{f{Jj}}Dh}Kb}1{{{f{Jh}}}Kd}{{{f{Jj}}}Kd}13{{{f{Jh}}}Dh}424{{{f{Cd}}{f{{Kf{{f{d}}}}}}}{{Eh{Gh}}}}{{{f{Cd}}{f{{Kf{{f{d}}}}}}}{{Eh{Kh}}}}{{}Jd}{{}Jl}{KbJj}{{}Jh}{KdJh}{{{f{Jh}}Dh}Kd};{{{f{Gh}}{f{{Kf{{f{Hl}}}}}}}{{Eh{Ab}}}}{{{f{Kh}}{f{{Kf{{f{Hl}}}}}}}{{Eh{Ab}}}}{{{f{Gh}}EfJn{f{b}}}K`}{{{f{Kh}}EfJn{f{b}}}K`}{{{f{hJh}}Kd}Ab}{{{f{hJj}}Kb}Ab}{{{f{Jd}}}Ab}{{{f{hJh}}}Ab}{{{f{hJj}}}Ab}{{{f{Jn}}c}nBl}{{{f{hGh}}{f{Hd}}}{{Eh{Ab}}}}{{{f{Jj}}}Kb}1{fc{}}0{c{{n{e}}}{}{}}000000{{}{{n{c}}}{}}000000{fCb}000000``````````````{f{{f{c}}}{}}000{{{f{h}}}{{f{hc}}}{}}000{{{f{Kj}}{f{Kj}}}An}{cc{}}000{{}c{}}000{{{Dd{{f{Cj}}}}}{{Eh{{Kl{c}}}}}{}}{{{Dd{{f{Cj}}}}}{{Eh{{Kn{c}}}}}{}}{{{f{h{Kl{c}}}}{f{Hd}}e}{{Eh{Ab}}}I`{}}{{{f{h{Kn{c}}}}{f{Hd}}e}{{Eh{Ab}}}I`{}};;;;::::9999","D":"AEb","p":[[5,"CuError",0,617],[1,"str"],[1,"reference",null,null,1],[0,"mut"],[6,"UnifiedLogType",0,617],[6,"DecodeError",618],[6,"Result",619,null,1],[10,"BorrowDecoder",620],[1,"unit"],[1,"u8"],[10,"Decoder",620],[10,"Deserializer",621],[6,"EncodeError",618],[10,"Encoder",622],[1,"bool"],[10,"WriteStream",0,617],[5,"Formatter",623],[5,"Error",623],[5,"String",624],[10,"Encode",622],[10,"Error",625],[10,"Serializer",626],[5,"CompactString",627],[6,"ToCompactStringError",627],[5,"TypeId",628],[5,"CuConfig",60],[5,"Node",60],[8,"NodeId",60],[5,"ComponentConfig",60],[5,"Value",60],[5,"Cnx",60],[5,"MonitorConfig",60],[1,"u32"],[6,"Option",629,null,1],[8,"Result",623],[1,"f64"],[1,"i32"],[1,"u16"],[10,"From",630],[5,"Vec",631],[8,"NodeIndex",632],[1,"tuple",null,null,1],[1,"usize"],[8,"CuResult",0,617],[10,"Write",633],[10,"Into",630],[5,"CuListsManager",200],[5,"CopperList",200],[8,"AscIter",200],[10,"CopperListTuple",0,617],[8,"AscIterMut",200],[5,"CopperLiskMask",200],[6,"CopperListState",200],[10,"BorrowDecode",620],[10,"Decode",620],[10,"Debug",623],[8,"Iter",200],[8,"IterMut",200],[5,"CuRuntime",286],[10,"CuMonitor",449],[6,"CuTaskType",286],[5,"CuExecutionLoop",286],[8,"StableDiGraph",634],[5,"CuExecutionStep",286],[6,"CuExecutionUnit",286],[5,"RobotClock",635],[17,"Output"],[10,"Fn",636],[5,"CuCompactString",360],[5,"CuMsgMetadata",360],[5,"CuMsg",360],[10,"CuMsgPayload",360],[10,"Clone",637],[10,"Freezable",360],[10,"CuTaskLifecycle",360],[10,"CuSrcTask",360],[10,"CuMsgPack",360],[17,"Input"],[10,"CuTask",360],[10,"CuSinkTask",360],[10,"ToCompactString",638],[5,"CountingAllocator",449],[5,"Layout",639],[5,"LiveStatistics",449],[5,"CuDurationStatistics",449],[5,"ScopedAllocCounter",449],[6,"CuTaskState",449],[6,"Decision",449],[5,"CuDuration",635],[1,"u64"],[1,"slice"],[5,"NoMonitor",449],[6,"SimOverride",570],[5,"CuSimSrcTask",570],[5,"CuSimSinkTask",570],[6,"CuTaskCallbackState",570]],"r":[[1,617],[2,617],[3,617],[9,617],[10,617],[47,60]],"b":[[33,"impl-Display-for-CuError"],[34,"impl-Debug-for-CuError"],[37,"impl-From%3C%26str%3E-for-CuError"],[38,"impl-From%3CString%3E-for-CuError"],[112,"impl-Display-for-ComponentConfig"],[113,"impl-Debug-for-ComponentConfig"],[114,"impl-Display-for-Value"],[115,"impl-Debug-for-Value"],[121,"impl-From%3Cu8%3E-for-Value"],[122,"impl-From%3CString%3E-for-Value"],[124,"impl-From%3Cf64%3E-for-Value"],[125,"impl-From%3Ci32%3E-for-Value"],[126,"impl-From%3Cu32%3E-for-Value"],[127,"impl-From%3Cu16%3E-for-Value"],[246,"impl-Debug-for-CopperListState"],[247,"impl-Display-for-CopperListState"],[406,"impl-Debug-for-CuMsgMetadata"],[407,"impl-Display-for-CuMsgMetadata"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAMABOgAAAAEABAABAAcAAAAJAAAADAAMAB0ABwAmAAEAKQAAACwAAAAuAAMAMwAJAEAAAABGAB0AZgAGAG4ACgB6AAEAfQADAIUAAQCIAAAAigADAJEAAACTAAIAnQABAKIAAwCnAAQArQAeAM0AAADQAAUA2AALAOUAFAD+AAEACQECAA0BEQAkAQ8ANQECADoBCQBJAQAAUAECAFYBAABZARAAbAEBAHMBAwB5ASAAogEDAKsBAwCzAQMAuAEKAMgBAQDMAQIA0AEgAPgBAQABAhUAGAIAABoCAAAcAgYAJAIWAEgCCQBaAg8A","P":[[12,"T"],[14,"__D"],[15,"T"],[18,""],[20,"T"],[22,""],[28,"__D"],[30,"__E"],[31,""],[36,"T"],[37,""],[39,"T"],[41,"U"],[43,"E"],[45,""],[48,"__S"],[50,"T"],[52,""],[53,"U,T"],[55,"U"],[57,""],[69,"T"],[81,""],[87,"T"],[93,""],[104,"__D"],[108,"D"],[109,"__D"],[110,""],[120,"T"],[121,""],[123,"T"],[124,""],[128,"T"],[133,""],[144,"T"],[145,""],[149,"U"],[156,""],[161,"__S"],[165,"S"],[166,"__S"],[167,""],[168,"T"],[170,""],[172,"T"],[178,""],[180,"U,T"],[186,"U"],[192,""],[213,"P"],[215,"T"],[219,"__D"],[221,"__D,P"],[222,"T"],[226,"P"],[228,""],[230,"T"],[232,""],[234,"P"],[235,"__D"],[237,"__D,P"],[238,"P"],[239,"__E"],[241,"P,__E"],[242,""],[244,"P"],[245,""],[248,"P"],[249,"T"],[253,"P"],[255,"U"],[259,"P"],[269,"__S"],[270,"T"],[272,""],[273,"U,T"],[277,"U"],[281,""],[296,"CT,P,M"],[297,"T"],[308,""],[309,"T"],[310,""],[313,"CT,P,M"],[314,""],[315,"K"],[318,""],[323,"T"],[328,"CT,P,M"],[330,"U"],[337,"CT,,M,,P,"],[344,"T"],[345,"U,T"],[350,"U"],[355,""],[376,"T"],[379,"D"],[380,"__D"],[381,"__D,T"],[382,"T"],[386,""],[388,"T"],[392,""],[395,"D"],[396,"__D"],[397,"__D,T"],[398,""],[400,"__D"],[402,"E"],[403,"__E"],[404,"T,__E"],[405,""],[408,"T"],[409,"E"],[410,"T"],[413,"U"],[417,""],[418,"T"],[421,""],[423,"CuSrcTask::Output"],[424,"CuTask::Input,CuTask::Output"],[425,"CuSinkTask::Input"],[426,"__S"],[428,"T"],[429,""],[430,""],[433,"D"],[434,"T"],[437,""],[439,"U,T"],[442,"U"],[445,""],[467,"T"],[481,""],[483,"T"],[485,""],[490,"__D"],[491,""],[496,"T"],[503,""],[505,"U"],[512,""],[543,"__S"],[544,""],[547,"T"],[549,"U,T"],[556,"U"],[563,""],[584,"T"],[592,""],[593,"T"],[597,"U"],[601,"T"],[603,"T,CuSrcTask::Output"],[604,"T,CuSinkTask::Input"],[605,"U,T"],[609,"U"],[613,""]]}],["cu29_clock",{"t":"KFIFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["ClockProvider","CuDuration","CuTime","Instant","OptionCuTime","RobotClock","RobotClockMock","add","","add_assign","","borrow","","","","","borrow_decode","","borrow_mut","","","","","checked_add","checked_duration_since","checked_sub","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","cmp","","decode","","decrement","default","","","deserialize","","div","duration_since","elapsed","encode","","eq","","","fmt","","","","","","","from","","","","","","","","","from_ref_time","get_clock","increment","into","","","","","is_none","mock","mul","new","none","now","","","partial_cmp","","recent","","saturating_duration_since","serialize","","set_value","sub","","","sub_assign","to_owned","","","","","to_string","","try_from","","","","","try_into","","","","","type_id","","","","","unwrap","value"],"q":[[0,"cu29_clock"],[127,"quanta::instant"],[128,"core::time"],[129,"bincode::error"],[130,"core::result"],[131,"bincode::de"],[132,"core::option"],[133,"core::cmp"],[134,"serde::de"],[135,"core::convert"],[136,"bincode::enc"],[137,"core::fmt"],[138,"serde::ser"],[139,"alloc::string"],[140,"core::any"]],"i":"```````bd101AdAh2Aj424213033342130421304213043420421424334242344221304442221301Cf15324132523241542445315444532415353241532415324131","f":"```````{{bb}c{}}{{df}d}{{{j{hb}}b}l}{{{j{hd}}f}l}{j{{j{c}}}{}}0000{{{j{hc}}}{{A`{bn}}}Ab}{{{j{hc}}}{{A`{Adn}}}Ab}{{{j{h}}}{{j{hc}}}{}}0000{{{j{d}}f}{{Af{d}}}}{{{j{d}}d}{{Af{f}}}}1{{{j{b}}}b}{{{j{Ad}}}Ad}{{{j{Ah}}}Ah}{{{j{d}}}d}{{{j{Aj}}}Aj}{{j{j{hc}}}l{}}0000{{jAl}l}0000{{{j{b}}{j{b}}}An}{{{j{d}}{j{d}}}An}{{{j{hc}}}{{A`{bn}}}B`}{{{j{hc}}}{{A`{Adn}}}B`}{{{j{Aj}}f}l}{{}b}{{}Ad}{{}Ah}{c{{A`{b}}}Bb}{c{{A`{Ad}}}Bb}{{bc}b{{Bf{Bd}}}}{{{j{d}}d}f}{{{j{d}}}f}{{{j{b}}{j{hc}}}{{A`{lBh}}}Bj}{{{j{Ad}}{j{hc}}}{{A`{lBh}}}Bj}{{{j{b}}{j{b}}}Bl}{{{j{Ad}}{j{Ad}}}Bl}{{{j{d}}{j{d}}}Bl}{{{j{b}}{j{hBn}}}C`}0{{{j{Ad}}{j{hBn}}}C`}0{{{j{Ah}}{j{hBn}}}C`}{{{j{d}}{j{hBn}}}{{A`{lCb}}}}{{{j{Aj}}{j{hBn}}}C`}{fb}{Bdb}{cc{}}0{CdAd}{{{Af{Cd}}}Ad}222{BdAh}{{{j{Cf}}}Ah}{{{j{Aj}}f}l}{{}c{}}0000{{{j{Ad}}}Bl}{{}{{Ch{AhAj}}}}{{bc}b{{Bf{Bd}}}}{{}Ah}{{}Ad}{{{j{Ah}}}Cd}{{}d}{{{j{Aj}}}Cd}{{{j{b}}{j{b}}}{{Af{An}}}}{{{j{d}}{j{d}}}{{Af{An}}}}43{{{j{d}}d}f}{{{j{b}}c}A`Cj}{{{j{Ad}}c}A`Cj}{{{j{Aj}}Bd}l}{{bb}c{}}{{df}d}{{dd}f}{{{j{hd}}f}l}{jc{}}0000{jCl}0{c{{A`{e}}}{}{}}0000{{}{{A`{c}}}{}}0000{jCn}0000{AdCd}{{{j{Aj}}}Bd}","D":"Dd","p":[[5,"CuDuration",0],[5,"Instant",0,127],[5,"Duration",128],[0,"mut"],[1,"reference",null,null,1],[1,"unit"],[6,"DecodeError",129],[6,"Result",130,null,1],[10,"BorrowDecoder",131],[5,"OptionCuTime",0],[6,"Option",132,null,1],[5,"RobotClock",0],[5,"RobotClockMock",0],[1,"u8"],[6,"Ordering",133],[10,"Decoder",131],[10,"Deserializer",134],[1,"u64"],[10,"Into",135],[6,"EncodeError",129],[10,"Encoder",136],[1,"bool"],[5,"Formatter",137],[8,"Result",137],[5,"Error",137],[8,"CuTime",0],[10,"ClockProvider",0],[1,"tuple",null,null,1],[10,"Serializer",138],[5,"String",139],[5,"TypeId",140]],"r":[[3,127]],"b":[[59,"impl-Display-for-CuDuration"],[60,"impl-Debug-for-CuDuration"],[61,"impl-Debug-for-OptionCuTime"],[62,"impl-Display-for-OptionCuTime"],[66,"impl-From%3CDuration%3E-for-CuDuration"],[67,"impl-From%3Cu64%3E-for-CuDuration"],[70,"impl-From%3CCuDuration%3E-for-OptionCuTime"],[71,"impl-From%3COption%3CCuDuration%3E%3E-for-OptionCuTime"],[100,"impl-Sub%3CDuration%3E-for-Instant"],[101,"impl-Sub-for-Instant"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAF0ADwAAAAAACAAAAAoADQAbABIALwAFADcADQBHAAEATQABAFQAAABWAAAAWAABAFwAAgBhAAEAZAABAGcAFwA=","P":[[7,"Add::Output"],[8,""],[11,"T"],[16,"D"],[17,"__D"],[18,"T"],[23,""],[31,"T"],[36,""],[43,"D"],[44,"__D"],[45,""],[49,"__D"],[51,"T"],[52,""],[54,"E"],[55,"__E"],[56,""],[68,"T"],[70,""],[72,"T"],[75,""],[78,"U"],[83,""],[85,"T"],[86,""],[96,"__S"],[98,""],[99,"Sub::Output"],[100,""],[103,"T"],[108,""],[110,"U,T"],[115,"U"],[120,""]]}],["cu29_derive",{"t":"XQ","n":["copper_runtime","gen_cumsgs"],"q":[[0,"cu29_derive"]],"i":"``","f":"``","D":"d","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA","P":[]}],["cu29_export",{"t":"GPGPPPFNNNNNNNNNNNNNNNONNHNNNNNNNNNNNNNNNNNNHHNNNNNNNNNNNNNONNNNNOO","n":["Command","Csv","ExportFormat","ExtractCopperlist","ExtractLog","Json","LogReaderCli","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","cmp","command","","command_for_update","compare","copperlists_dump","eq","equivalent","","","fmt","from","","","from_arg_matches","","from_arg_matches_mut","","group_id","has_subcommand","into","","","partial_cmp","run_cli","textlog_dump","to_owned","to_possible_value","to_string","try_from","","","try_into","","","try_to_compact_string","type_id","","","unifiedlog_base","update_from_arg_matches","","update_from_arg_matches_mut","","value_variants","export_format","log_index"],"q":[[0,"cu29_export"],[65,"cu29_export::Command"],[67,"clap_builder::builder::command"],[68,"core::cmp"],[69,"cu29::copperlist"],[70,"core::iter::traits::iterator"],[71,"std::io"],[72,"cu29_traits"],[73,"core::fmt"],[74,"clap_builder::parser::matches::arg_matches"],[75,"clap_builder"],[76,"core::result"],[77,"clap_builder::util::id"],[78,"core::option"],[79,"std::path"],[80,"clap_builder::builder::possible_value"],[81,"alloc::string"],[82,"compact_str"],[83,"core::any"]],"i":"`h`Bh01`Bb01120120122220002`222222010101012012``2222012012201001012D`Db","f":"```````{bb}000{d{{d{c}}}{}}00{{{d{f}}}{{d{fc}}}{}}00{{{d{h}}}h}{{d{d{fc}}}j{}}{{dl}j}{{{d{h}}{d{h}}}n}{{}b}`0{{d{d{c}}}n{}}{c{{`{{Ad{}{{A`{{Ab{e}}}}}}}}}AfAh}{{{d{h}}{d{h}}}Aj}{{d{d{c}}}Aj{}}00{{{d{h}}{d{fAl}}}An}{cc{}}00{{{d{B`}}}{{Bf{BbBd}}}}{{{d{B`}}}{{Bf{BhBd}}}}{{{d{fB`}}}{{Bf{BbBd}}}}{{{d{fB`}}}{{Bf{BhBd}}}}{{}{{Bl{Bj}}}}{{{d{Bn}}}Aj}{{}c{}}00{{{d{h}}{d{h}}}{{Bl{n}}}}{{}{{C`{j}}}}{{c{d{Cb}}}{{C`{j}}}Af}{dc{}}{{{d{h}}}{{Bl{Cd}}}}{dCf}{c{{Bf{e}}}{}{}}00{{}{{Bf{c}}}{}}00{d{{Bf{ChCj}}}}{dCl}00`{{{d{fBb}}{d{B`}}}{{Bf{jBd}}}}{{{d{fBh}}{d{B`}}}{{Bf{jBd}}}}{{{d{fBb}}{d{fB`}}}{{Bf{jBd}}}}{{{d{fBh}}{d{fB`}}}{{Bf{jBd}}}}{{}{{d{{Cn{h}}}}}}``","D":"Aj","p":[[5,"Command",67],[1,"reference",null,null,1],[0,"mut"],[6,"ExportFormat",0],[1,"unit"],[1,"u8"],[6,"Ordering",68],[17,"Item"],[5,"CopperList",69],[10,"Iterator",70],[10,"Read",71],[10,"CopperListTuple",72],[1,"bool"],[5,"Formatter",73],[8,"Result",73],[5,"ArgMatches",74],[5,"LogReaderCli",0],[8,"Error",75],[6,"Result",76,null,1],[6,"Command",0],[5,"Id",77],[6,"Option",78,null,1],[1,"str"],[8,"CuResult",72],[5,"Path",79],[5,"PossibleValue",80],[5,"String",81],[5,"CompactString",82],[6,"ToCompactStringError",82],[5,"TypeId",83],[1,"slice"],[15,"ExtractCopperlist",65],[15,"ExtractLog",65]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADYACAAAAAMABgAAAAgAEQAbAAQAIwAFACwAAAAvAAwAPQAGAA==","P":[[11,"T"],[17,""],[18,"T"],[19,""],[24,"K"],[25,",P"],[26,""],[27,"K"],[30,""],[31,"T"],[34,""],[40,"U"],[43,""],[45,""],[46,"T"],[47,""],[49,"U,T"],[52,"U"],[55,""]]}],["cu29_helpers",{"t":"FHNNONNONNNO","n":["CopperContext","basic_copper_setup","borrow","borrow_mut","clock","from","into","logger_runtime","try_from","try_into","type_id","unified_logger"],"q":[[0,"cu29_helpers"],[12,"std::path"],[13,"core::option"],[14,"cu29_clock"],[15,"cu29_traits"],[16,"core::result"],[17,"core::any"]],"i":"``n000000000","f":"`{{{d{b}}{h{f}}j{h{l}}}{{A`{n}}}}{d{{d{c}}}{}}{{{d{Ab}}}{{d{Abc}}}{}}`{cc{}}{{}c{}}`{c{{Ad{e}}}{}{}}{{}{{Ad{c}}}{}}{dAf}`","D":"h","p":[[5,"Path",12],[1,"reference",null,null,1],[1,"usize"],[6,"Option",13,null,1],[1,"bool"],[5,"RobotClock",14],[5,"CopperContext",0],[8,"CuResult",15],[0,"mut"],[6,"Result",16,null,1],[5,"TypeId",17]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAgAAwAAAAAAAwACAAgABAA=","P":[[2,"T"],[6,"U"],[8,"U,T"],[9,"U"],[10,""]]}],["cu29_intern_strs",{"t":"H","n":["read_interned_strings"],"q":[[0,"cu29_intern_strs"],[1,"std::path"],[2,"alloc::string"],[3,"alloc::vec"],[4,"cu29_traits"]],"i":"`","f":"{{{d{b}}}{{j{{h{f}}}}}}","D":"b","p":[[5,"Path",1],[1,"reference",null,null,1],[5,"String",2],[5,"Vec",3],[8,"CuResult",4]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA","P":[]}],["cu29_log",{"t":"SFSNNNNHNNNNNHNNONOOHNONNNNE","n":["ANONYMOUS","CuLogEntry","MAX_LOG_PARAMS_ON_STACK","add_param","borrow","borrow_mut","decode","default_log_index_dir","deserialize","encode","eq","fmt","","format_logline","from","into","msg_index","new","paramname_indexes","params","rebuild_logline","serialize","time","to_string","try_from","try_into","type_id","value"],"q":[[0,"cu29_log"],[28,"cu29_value"],[29,"bincode::error"],[30,"core::result"],[31,"bincode::de"],[32,"std::path"],[33,"serde::de"],[34,"bincode::enc"],[35,"core::fmt"],[36,"cu29_clock"],[37,"alloc::string"],[38,"std::collections::hash::map"],[39,"cu29_traits"],[40,"serde::ser"],[41,"core::any"]],"i":"```d000`00000`000000`000000`","f":"```{{{f{bd}}hj}l}{f{{f{c}}}{}}{{{f{b}}}{{f{bc}}}{}}{{{f{bc}}}{{A`{dn}}}Ab}{{}Ad}{c{{A`{d}}}Af}{{{f{d}}{f{bc}}}{{A`{lAh}}}Aj}{{{f{d}}{f{d}}}Al}{{{f{d}}{f{bAn}}}B`}0{{Bb{f{Bd}}{f{{Bh{Bf}}}}{f{{Bj{BfBf}}}}}{{Bl{Bf}}}}{cc{}}{{}c{}}`{hd}``{{{f{{Bh{Bf}}}}{f{d}}}{{Bl{Bf}}}}{{{f{d}}c}A`Bn}`{fBf}{c{{A`{e}}}{}{}}{{}{{A`{c}}}{}}{fC`}`","D":"A`","p":[[0,"mut"],[5,"CuLogEntry",0],[1,"reference",null,null,1],[1,"u32"],[6,"Value",28],[1,"unit"],[6,"DecodeError",29],[6,"Result",30,null,1],[10,"Decoder",31],[5,"PathBuf",32],[10,"Deserializer",33],[6,"EncodeError",29],[10,"Encoder",34],[1,"bool"],[5,"Formatter",35],[8,"Result",35],[8,"CuTime",36],[1,"str"],[5,"String",37],[1,"slice"],[5,"HashMap",38],[8,"CuResult",39],[10,"Serializer",40],[5,"TypeId",41]],"r":[],"b":[[11,"impl-Debug-for-CuLogEntry"],[12,"impl-Display-for-CuLogEntry"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABQABwAAAAEAAwAAAAUAAgAJAAQAEQAAABMAAQAWAAYA","P":[[4,"T"],[6,"D"],[7,""],[8,"__D"],[9,"E"],[10,""],[14,"T"],[15,"U"],[17,""],[21,"__S"],[23,""],[24,"U,T"],[25,"U"],[26,""]]}],["cu29_log_derive",{"t":"Q","n":["debug"],"q":[[0,"cu29_log_derive"]],"i":"`","f":"`","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA","P":[]}],["cu29_log_runtime",{"t":"FFFFNNNNNNNNNNNNNNNNNNNNNNNNNHNNHNNNNNNNNNNNNNNN","n":["LoggerRuntime","NullLog","OwningIoWriter","SimpleFileWriter","borrow","","","","borrow_mut","","","","bytes_written","drop","enabled","flush","","","","fmt","from","","","","init","into","","","","log","","","log_debug_mode","new","","try_from","","","","try_into","","","","type_id","","","","write"],"q":[[0,"cu29_log_runtime"],[48,"std::io"],[49,"log"],[50,"bincode::error"],[51,"core::result"],[52,"cu29_traits"],[53,"core::fmt"],[54,"cu29_clock"],[55,"core::option"],[56,"cu29_log"],[57,"std::path"],[58,"core::any"]],"i":"````A`lfAj321012332100321023210`30`103210321032101","f":"````{b{{b{c}}}{}}000{{{b{d}}}{{b{dc}}}{}}000{{{b{{f{c}}}}}hj}{{{b{dl}}}n}{{{b{A`}}{b{Ab}}}Ad}{{{b{A`}}}n}{{{b{l}}}n}{{{b{d{f{c}}}}}{{Ah{nAf}}}j}{{{b{dAj}}}{{Al{n}}}}{{{b{Aj}}{b{dAn}}}B`}{cc{}}000{{Bbc{Bd{e}}}l{{Bh{Bf}}}Bj}{{}c{}}000{{{b{dBf}}}{{Al{n}}}}{{{b{A`}}{b{Bl}}}n}{{{b{dAj}}{b{Bf}}}{{Al{n}}}}{{{b{dBf}}{b{Bn}}{b{{C`{{b{Bn}}}}}}}{{Al{n}}}}{c{{f{c}}}j}{{{b{Cb}}}{{Al{Aj}}}}{c{{Ah{e}}}{}{}}000{{}{{Ah{c}}}{}}000{bCd}000{{{b{d{f{c}}}}{b{{C`{Cf}}}}}{{Ah{nAf}}}j}","D":"Aj","p":[[1,"reference",null,null,1],[0,"mut"],[5,"OwningIoWriter",0],[1,"usize"],[10,"Write",48],[5,"LoggerRuntime",0],[1,"unit"],[5,"NullLog",0],[5,"Metadata",49],[1,"bool"],[6,"EncodeError",50],[6,"Result",51,null,1],[5,"SimpleFileWriter",0],[8,"CuResult",52],[5,"Formatter",53],[8,"Result",53],[5,"RobotClock",54],[6,"Option",55,null,1],[5,"CuLogEntry",56],[10,"WriteStream",52],[10,"Log",49],[5,"Record",49],[1,"str"],[1,"slice"],[5,"PathBuf",57],[5,"TypeId",58],[1,"u8"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACMABQAAAAAAAgABAAUADwAfAAEAIgAOAA==","P":[[4,"T"],[12,"W"],[13,""],[17,"W"],[18,""],[20,"T"],[24,","],[25,"U"],[29,""],[33,"W"],[34,""],[35,"U,T"],[39,"U"],[43,""],[47,"W"]]}],["cu29_rendercfg",{"t":"FPKFIPPPPPGKNNNNNNNNNNONNNNNNNNCONNNNNNNNNNNNNNNNNNNMHONONNNNNNNNNNNNNNNFFFFFFIFNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNOOONNHHNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNOONNNNNNN","n":["Args","CopperList","CopperListTuple","CuError","CuResult","Empty","Err","LastEntry","Ok","StructuredLogLine","UnifiedLogType","WriteStream","add_cause","augment_args","augment_args_for_update","borrow","","","borrow_decode","borrow_mut","","","cause","clone","","clone_into","","clone_to_uninit","","command","command_for_update","config","","decode","deserialize","encode","eq","flush","fmt","","","from","","","","","from_arg_matches","from_arg_matches_mut","group_id","into","","","log","main","message","new_with_cause","open","serialize","to_owned","","to_string","try_from","","","try_into","","","type_id","","","update_from_arg_matches","update_from_arg_matches_mut","Cnx","ComponentConfig","CuConfig","CuConfigRepresentation","MonitorConfig","Node","NodeId","Value","add_node","batch","borrow","","","","","","","borrow_mut","","","","","","","clone","","","","","","clone_into","","","","","","clone_to_uninit","","","","","","cnx","config","","connect","connect_ext","default","","","","deserialize","","","","","","","deserialize_ron","dst","eq","fmt","","","","","","","","from","","","","","","","","","","","","","get","get_all_instances_configs","get_all_nodes","get_config","get_dst_edges","get_edge_weight","get_id","get_instance_config","get_monitor_config","get_node","get_node_input_msg_type","get_node_output_msg_type","get_options","get_param","get_src_edges","get_type","","graph","id","into","","","","","","","into_resettable","monitor","","msg","new","","read_configuration","read_configuration_str","render","serialize","","","","","","","serialize_ron","set","set_param","set_type","src","store","tasks","to_owned","","","","","","to_string","","try_from","","","","","","","try_into","","","","","","","type_","","type_id","","","","","",""],"q":[[0,"cu29_rendercfg"],[72,"cu29_rendercfg::config"],[234,"cu29_traits"],[235,"clap_builder::builder::command"],[236,"bincode::error"],[237,"core::result"],[238,"bincode::de"],[239,"serde::de"],[240,"bincode::enc"],[241,"core::fmt"],[242,"alloc::string"],[243,"clap_builder::parser::matches::arg_matches"],[244,"clap_builder"],[245,"clap_builder::util::id"],[246,"core::option"],[247,"std::io::error"],[248,"core::error"],[249,"serde::ser"],[250,"core::any"],[251,"core::convert"],[252,"alloc::vec"],[253,"petgraph::adj"],[254,"ron::options"],[255,"clap_builder::builder::resettable"],[256,"std::io"]],"i":"`l```0Fd101``bBl01303130113131300`03133Bb224222411112410`221224224124124111````````CnDhDdDfD`34DjDl4325610432561432561432561021664610432561065344332561433333332561046616622666662621624325610360542``6432561064225504325614343256104325610214325610","f":"````````````{{b{f{d}}}b}{hh}0{f{{f{c}}}{}}00{{{f{jc}}}{{A`{ln}}}Ab}{{{f{j}}}{{f{jc}}}{}}00`{{{f{b}}}b}{{{f{l}}}l}{{f{f{jc}}}Ad{}}0{{fAf}Ad}0{{}h}0``{{{f{jc}}}{{A`{ln}}}Ah}{c{{A`{b}}}Aj}{{{f{l}}{f{jc}}}{{A`{AdAl}}}An}{{{f{l}}{f{l}}}B`}{{{f{jBb}}}{{A`{Adb}}}}{{{f{b}}{f{jBd}}}{{A`{AdBf}}}}0{{{f{l}}{f{jBd}}}{{A`{AdBf}}}}{Bhb}{{{f{d}}}b}{cc{}}00{{{f{Bj}}}{{A`{BlBn}}}}{{{f{jBj}}}{{A`{BlBn}}}}{{}{{Cb{C`}}}}{{}c{}}00{{{f{jBb}}{f{c}}}{{A`{Adb}}}Cd}{{}{{Cf{Ad}}}}`{{{f{d}}c}bCh}`{{{f{b}}c}A`Cj}{fc{}}0{fBh}{c{{A`{e}}}{}{}}00{{}{{A`{c}}}{}}00{fCl}00{{{f{jBl}}{f{Bj}}}{{A`{AdBn}}}}{{{f{jBl}}{f{jBj}}}{{A`{AdBn}}}}````````{{{f{jCn}}D`}Db}`{f{{f{c}}}{}}000000{{{f{j}}}{{f{jc}}}{}}000000{{{f{Dd}}}Dd}{{{f{Df}}}Df}{{{f{D`}}}D`}{{{f{Dh}}}Dh}{{{f{Cn}}}Cn}{{{f{Dj}}}Dj}{{f{f{jc}}}Ad{}}00000{{fAf}Ad}00000```{{{f{jCn}}DbDb{f{d}}}Ad}{{{f{jCn}}DbDb{f{d}}{Cb{Db}}{Cb{B`}}}Ad}{{}Dd}{{}Cn}{{}Dj}{{}Dl}{c{{A`{Dd}}}Aj}{c{{A`{Df}}}Aj}{c{{A`{D`}}}Aj}{c{{A`{Dh}}}Aj}{c{{A`{Cn}}}Aj}{c{{A`{Dj}}}Aj}{c{{A`{Dl}}}Aj}{{{f{d}}}Cn}`{{{f{Df}}{f{Df}}}B`}{{{f{Dd}}{f{jBd}}}Dn}0{{{f{Df}}{f{jBd}}}Dn}0{{{f{D`}}{f{jBd}}}Dn}{{{f{Dh}}{f{jBd}}}Dn}{{{f{Cn}}{f{jBd}}}Dn}{{{f{Dj}}{f{jBd}}}Dn}{cc{}}{DbDf}1{E`Df}{BhDf}{EbDf}{EdDf}{AfDf}66666{{{f{Dd}}{f{d}}}{{Cb{c}}}{{Ef{Df}}}}{{{f{Cn}}}{{Eh{{Cb{{f{Dd}}}}}}}}{{{f{Cn}}}{{Eh{{El{Ej{f{D`}}}}}}}}{{{f{Dj}}}{{Cb{{f{Dd}}}}}}{{{f{Cn}}Db}{{Eh{En}}}}{{{f{Cn}}En}{{Cb{Dh}}}}{{{f{D`}}}Bh}{{{f{D`}}}{{Cb{{f{Dd}}}}}}{{{f{Cn}}}{{Cb{{f{Dj}}}}}}{{{f{Cn}}Db}{{Cb{{f{D`}}}}}}{{{f{Cn}}{f{d}}}{{Cb{Bh}}}}0{{}F`}{{{f{D`}}{f{d}}}{{Cb{c}}}{{Ef{Df}}}}8{{{f{D`}}}{{f{d}}}}{{{f{Dj}}}{{f{d}}}}``{{}c{}}000000{{}{{Fb{Bh}}}}```{{}Dd}{{{f{d}}{f{d}}}D`}{{{f{d}}}{{Fd{Cn}}}}{Bh{{Fd{Cn}}}}{{{f{Cn}}{f{jFf}}}Ad}{{{f{Dd}}c}A`Cj}{{{f{Df}}c}A`Cj}{{{f{D`}}c}A`Cj}{{{f{Dh}}c}A`Cj}{{{f{Cn}}c}A`Cj}{{{f{Dj}}c}A`Cj}{{{f{Dl}}c}A`Cj}{{{f{Cn}}}Bh}{{{f{jDd}}{f{d}}c}Ad{{Fh{Df}}}}{{{f{jD`}}{f{d}}c}Ad{{Fh{Df}}}}{{D`{Cb{Bh}}}D`}```{fc{}}00000{fBh}0{c{{A`{e}}}{}{}}000000{{}{{A`{c}}}{}}000000``{fCl}000000","D":"Fn","p":[[5,"CuError",0,234],[1,"str"],[1,"reference",null,null,1],[5,"Command",235],[0,"mut"],[6,"UnifiedLogType",0,234],[6,"DecodeError",236],[6,"Result",237,null,1],[10,"BorrowDecoder",238],[1,"unit"],[1,"u8"],[10,"Decoder",238],[10,"Deserializer",239],[6,"EncodeError",236],[10,"Encoder",240],[1,"bool"],[10,"WriteStream",0,234],[5,"Formatter",241],[5,"Error",241],[5,"String",242],[5,"ArgMatches",243],[5,"Args",0],[8,"Error",244],[5,"Id",245],[6,"Option",246,null,1],[10,"Encode",240],[8,"Result",247],[10,"Error",248],[10,"Serializer",249],[5,"TypeId",250],[5,"CuConfig",72],[5,"Node",72],[1,"u32"],[5,"ComponentConfig",72],[5,"Value",72],[5,"Cnx",72],[5,"MonitorConfig",72],[5,"CuConfigRepresentation",72],[8,"Result",241],[1,"f64"],[1,"i32"],[1,"u16"],[10,"From",251],[5,"Vec",252],[8,"NodeIndex",253],[1,"tuple",null,null,1],[1,"usize"],[5,"Options",254],[6,"Resettable",255],[8,"CuResult",0,234],[10,"Write",256],[10,"Into",251]],"r":[[2,234],[3,234],[4,234],[10,234],[11,234]],"b":[[38,"impl-Debug-for-CuError"],[39,"impl-Display-for-CuError"],[41,"impl-From%3CString%3E-for-CuError"],[42,"impl-From%3C%26str%3E-for-CuError"],[133,"impl-Debug-for-ComponentConfig"],[134,"impl-Display-for-ComponentConfig"],[135,"impl-Display-for-Value"],[136,"impl-Debug-for-Value"],[142,"impl-From%3Cu32%3E-for-Value"],[144,"impl-From%3Cf64%3E-for-Value"],[145,"impl-From%3CString%3E-for-Value"],[146,"impl-From%3Ci32%3E-for-Value"],[147,"impl-From%3Cu16%3E-for-Value"],[148,"impl-From%3Cu8%3E-for-Value"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAALMAGgAAAAIABQABAAgAAAAKAAAADQASACIACQAvAAIANQAAADcAAQA6AA4ATQAAAFMAIgB4AAcAgQAMAI8AAACRAAQAmwABAJ4AAACgAAMApwABAKoAAwC1AAIAuQABAL4AAwDDAAUAywAfAA==","P":[[15,"T"],[18,"__D"],[19,"T"],[23,""],[25,"T"],[27,""],[33,"__D"],[35,"__E"],[36,""],[43,"T"],[46,""],[49,"U"],[52,"E"],[53,""],[55,""],[57,"__S"],[58,"T"],[60,""],[61,"U,T"],[64,"U"],[67,""],[82,"T"],[96,""],[102,"T"],[108,""],[123,"__D"],[127,"D"],[128,"__D"],[130,""],[141,"T"],[142,""],[143,"T"],[144,""],[149,"T"],[155,""],[167,"T"],[168,""],[173,"U"],[180,""],[189,"__S"],[193,"S"],[194,"__S"],[196,""],[197,"T"],[199,""],[203,"T"],[209,""],[211,"U,T"],[218,"U"],[227,""]]}],["cu29_soa_derive",{"t":"Y","n":["Soa"],"q":[[0,"cu29_soa_derive"]],"i":"`","f":"`","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA","P":[]}],["cu29_traits",{"t":"PKFIPPPPPGKNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNN","n":["CopperList","CopperListTuple","CuError","CuResult","Empty","Err","LastEntry","Ok","StructuredLogLine","UnifiedLogType","WriteStream","add_cause","borrow","","borrow_decode","borrow_mut","","clone","","clone_into","","clone_to_uninit","","decode","deserialize","encode","eq","flush","fmt","","","from","","","","into","","log","new_with_cause","serialize","to_owned","","to_string","try_from","","try_into","","type_id",""],"q":[[0,"cu29_traits"],[49,"bincode::error"],[50,"core::result"],[51,"bincode::de"],[52,"serde::de"],[53,"bincode::enc"],[54,"core::fmt"],[55,"alloc::string"],[56,"core::error"],[57,"serde::ser"],[58,"core::any"]],"i":"j```0Bb101``b022020202022022B`113111313011131131313","f":"```````````{{b{f{d}}}b}{f{{f{c}}}{}}0{{{f{hc}}}{{n{jl}}}A`}{{{f{h}}}{{f{hc}}}{}}0{{{f{b}}}b}{{{f{j}}}j}{{f{f{hc}}}Ab{}}0{{fAd}Ab}0{{{f{hc}}}{{n{jl}}}Af}{c{{n{b}}}Ah}{{{f{j}}{f{hc}}}{{n{AbAj}}}Al}{{{f{j}}{f{j}}}An}{{{f{hB`}}}{{Bb{Ab}}}}{{{f{b}}{f{hBd}}}Bf}0{{{f{j}}{f{hBd}}}Bf}{{{f{d}}}b}{cc{}}{Bhb}1{{}c{}}0{{{f{hB`}}{f{c}}}{{Bb{Ab}}}Bj}{{{f{d}}c}bBl}{{{f{b}}c}nBn}{fc{}}0{fBh}{c{{n{e}}}{}{}}0{{}{{n{c}}}{}}0{fC`}0","D":"Ad","p":[[5,"CuError",0],[1,"str"],[1,"reference",null,null,1],[0,"mut"],[6,"UnifiedLogType",0],[6,"DecodeError",49],[6,"Result",50,null,1],[10,"BorrowDecoder",51],[1,"unit"],[1,"u8"],[10,"Decoder",51],[10,"Deserializer",52],[6,"EncodeError",49],[10,"Encoder",53],[1,"bool"],[10,"WriteStream",0],[8,"CuResult",0],[5,"Formatter",54],[8,"Result",54],[5,"String",55],[10,"Encode",53],[10,"Error",56],[10,"Serializer",57],[5,"TypeId",58]],"r":[],"b":[[28,"impl-Display-for-CuError"],[29,"impl-Debug-for-CuError"],[31,"impl-From%3C%26str%3E-for-CuError"],[33,"impl-From%3CString%3E-for-CuError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACcABwAAAAEABAABAAcAAAAJAAAADAAUACIAAAAmAAsA","P":[[12,"T"],[14,"__D"],[15,"T"],[17,""],[19,"T"],[21,""],[23,"__D"],[25,"__E"],[26,""],[32,"T"],[33,""],[34,"T"],[35,"U"],[37,"E"],[38,""],[39,"__S"],[40,"T"],[42,""],[43,"U,T"],[45,"U"],[47,""]]}],["cu29_unifiedlog",{"t":"GPPPFFGFFFFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["AllocatedSection","NoMoreSpace","Read","Section","SectionHandle","SectionHeader","UnifiedLogger","UnifiedLoggerBuilder","UnifiedLoggerIOReader","UnifiedLoggerRead","UnifiedLoggerWrite","Write","borrow","","","","","","","","borrow_decode","borrow_mut","","","","","","","","build","create","","decode","default","","","drop","encode","file_base_name","flush_section","fmt","from","","","","","","","","get_user_buffer","into","","","","","","","","new","","","preallocated_size","read","read_next_section_type","read_section","stream_write","try_from","","","","","","","","try_into","","","","","","","","type_id","","","","","","","","update_header","write"],"q":[[0,"cu29_unifiedlog"],[92,"bincode::error"],[93,"core::result"],[94,"bincode::de"],[95,"std::io::error"],[96,"bincode::enc"],[97,"std::path"],[98,"core::fmt"],[99,"cu29_traits"],[100,"alloc::vec"],[101,"core::option"],[102,"std::sync::mutex"],[103,"alloc::sync"],[104,"core::any"]],"i":"`DfA`1```````00nBn3AnCbfAj165473210550151031531654732100654732105425244`65473210654732106547321005","f":"````````````{b{{b{c}}}{}}0000000{{{b{dc}}}{{j{fh}}}l}{{{b{d}}}{{b{dc}}}{}}0000000{n{{Ab{A`}}}}{{nAd}n}{{f{b{d{Ah{Af}}}}}Aj}{{{b{dc}}}{{j{fh}}}Al}{{}n}{{}f}{{}Aj}{{{b{dAn}}}B`}{{{b{f}}{b{dc}}}{{j{B`Bb}}}Bd}{{n{b{Bf}}}n}{{{b{dAn}}{b{dAj}}}B`}{{{b{f}}{b{dBh}}}Bj}{cc{}}0000000{{{b{dAj}}}{{b{d{Ah{Af}}}}}}{{}c{}}0000000:{{{b{Bl}}}{{Ab{Bn}}}}{{BnC`}Cb}{{nCd}n}{{{b{dCb}}{b{d{Ah{Af}}}}}{{Ab{Cd}}}}{{{b{dBn}}C`}{{Cj{{Ch{{Cf{Af}}}}}}}}{{{b{dBn}}}{{Cj{{Cf{Af}}}}}}{{{Cn{{Cl{An}}}}C`Cd}{{`{{D`{c}}}}}Db}{c{{j{e}}}{}{}}0000000{{}{{j{c}}}{}}0000000{bDd}0000000{{{b{dAj}}}B`}{{nAd}n}","D":"Cd","p":[[1,"reference",null,null,1],[0,"mut"],[5,"SectionHeader",0],[6,"DecodeError",92],[6,"Result",93,null,1],[10,"BorrowDecoder",94],[5,"UnifiedLoggerBuilder",0],[6,"UnifiedLogger",0],[8,"Result",95],[1,"bool"],[1,"u8"],[1,"slice"],[5,"SectionHandle",0],[10,"Decoder",94],[5,"UnifiedLoggerWrite",0],[1,"unit"],[6,"EncodeError",92],[10,"Encoder",96],[5,"Path",97],[5,"Formatter",98],[8,"Result",98],[5,"PathBuf",97],[5,"UnifiedLoggerRead",0],[6,"UnifiedLogType",99],[5,"UnifiedLoggerIOReader",0],[1,"usize"],[5,"Vec",100],[6,"Option",101,null,1],[8,"CuResult",99],[5,"Mutex",102],[5,"Arc",103,null,1],[10,"WriteStream",99],[10,"Encode",96],[5,"TypeId",104],[6,"AllocatedSection",0]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAEIABgAAAAQADAAaACgAAQAyAAAAOwAFAEMAGQA=","P":[[12,"T"],[20,"__D"],[21,"T"],[29,""],[32,"__D"],[33,""],[37,"__E"],[38,""],[41,"T"],[49,""],[50,"U"],[58,""],[65,"E"],[66,"U,T"],[74,"U"],[82,""]]}]]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); -//{"start":39,"fragment_lengths":[16804,4004,191,2906,805,369,1752,174,1840,7028,172,2056,2688]} \ No newline at end of file +//{"start":39,"fragment_lengths":[16828,4017,191,2919,805,369,1752,174,1840,7036,172,2069,2688]} \ No newline at end of file diff --git a/settings.html b/settings.html index afcf5dc4c..3eb9fe646 100644 --- a/settings.html +++ b/settings.html @@ -1 +1 @@ -Settings

    Rustdoc settings

    Back
    \ No newline at end of file +Settings

    Rustdoc settings

    Back
    \ No newline at end of file diff --git a/src/cu29/config.rs.html b/src/cu29/config.rs.html index 4ed4f0758..cc74c3e44 100644 --- a/src/cu29/config.rs.html +++ b/src/cu29/config.rs.html @@ -1,4 +1,4 @@ -config.rs - source

    cu29/
    config.rs

    +config.rs - source

    cu29/
    config.rs

     1
     2
     3
    diff --git a/src/cu29/copperlist.rs.html b/src/cu29/copperlist.rs.html
    index 22a5fbc98..8bc24fa74 100644
    --- a/src/cu29/copperlist.rs.html
    +++ b/src/cu29/copperlist.rs.html
    @@ -1,4 +1,4 @@
    -copperlist.rs - source

    cu29/
    copperlist.rs

    +copperlist.rs - source

    cu29/
    copperlist.rs

     1
     2
     3
    diff --git a/src/cu29/curuntime.rs.html b/src/cu29/curuntime.rs.html
    index d6faea0e1..ed4a12355 100644
    --- a/src/cu29/curuntime.rs.html
    +++ b/src/cu29/curuntime.rs.html
    @@ -1,4 +1,4 @@
    -curuntime.rs - source

    cu29/
    curuntime.rs

    +curuntime.rs - source

    cu29/
    curuntime.rs

     1
     2
     3
    diff --git a/src/cu29/cutask.rs.html b/src/cu29/cutask.rs.html
    index 695b3b714..ed9ad0ecf 100644
    --- a/src/cu29/cutask.rs.html
    +++ b/src/cu29/cutask.rs.html
    @@ -1,4 +1,4 @@
    -cutask.rs - source

    cu29/
    cutask.rs

    +cutask.rs - source

    cu29/
    cutask.rs

     1
     2
     3
    diff --git a/src/cu29/lib.rs.html b/src/cu29/lib.rs.html
    index 3d6665da1..a5da172d8 100644
    --- a/src/cu29/lib.rs.html
    +++ b/src/cu29/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source

    cu29/
    lib.rs

    +lib.rs - source

    cu29/
    lib.rs

     1
     2
     3
    diff --git a/src/cu29/monitoring.rs.html b/src/cu29/monitoring.rs.html
    index e79d449d0..997e00e2d 100644
    --- a/src/cu29/monitoring.rs.html
    +++ b/src/cu29/monitoring.rs.html
    @@ -1,4 +1,4 @@
    -monitoring.rs - source

    cu29/
    monitoring.rs

    +monitoring.rs - source

    cu29/
    monitoring.rs

     1
     2
     3
    diff --git a/src/cu29/simulation.rs.html b/src/cu29/simulation.rs.html
    index 29c16d150..e029716a6 100644
    --- a/src/cu29/simulation.rs.html
    +++ b/src/cu29/simulation.rs.html
    @@ -1,4 +1,4 @@
    -simulation.rs - source

    cu29/
    simulation.rs

    +simulation.rs - source

    cu29/
    simulation.rs

     1
     2
     3
    diff --git a/src/cu29_clock/lib.rs.html b/src/cu29_clock/lib.rs.html
    index 7862a8f6f..02c6aa393 100644
    --- a/src/cu29_clock/lib.rs.html
    +++ b/src/cu29_clock/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source

    cu29_clock/
    lib.rs

    +lib.rs - source

    cu29_clock/
    lib.rs

     1
     2
     3
    diff --git a/src/cu29_derive/format.rs.html b/src/cu29_derive/format.rs.html
    index 0670854b9..6d55889ad 100644
    --- a/src/cu29_derive/format.rs.html
    +++ b/src/cu29_derive/format.rs.html
    @@ -1,4 +1,4 @@
    -format.rs - source

    cu29_derive/
    format.rs

    +format.rs - source

    cu29_derive/
    format.rs

     1
     2
     3
    diff --git a/src/cu29_derive/lib.rs.html b/src/cu29_derive/lib.rs.html
    index 055737622..6ee9c7e37 100644
    --- a/src/cu29_derive/lib.rs.html
    +++ b/src/cu29_derive/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source

    cu29_derive/
    lib.rs

    +lib.rs - source

    cu29_derive/
    lib.rs

     1
     2
     3
    diff --git a/src/cu29_derive/utils.rs.html b/src/cu29_derive/utils.rs.html
    index 68f301f85..b84d613ea 100644
    --- a/src/cu29_derive/utils.rs.html
    +++ b/src/cu29_derive/utils.rs.html
    @@ -1,4 +1,4 @@
    -utils.rs - source

    cu29_derive/
    utils.rs

    +utils.rs - source

    cu29_derive/
    utils.rs

     1
     2
     3
    diff --git a/src/cu29_export/lib.rs.html b/src/cu29_export/lib.rs.html
    index c14a9cbdb..942ec0fb0 100644
    --- a/src/cu29_export/lib.rs.html
    +++ b/src/cu29_export/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source

    cu29_export/
    lib.rs

    +lib.rs - source

    cu29_export/
    lib.rs

     1
     2
     3
    diff --git a/src/cu29_helpers/lib.rs.html b/src/cu29_helpers/lib.rs.html
    index 7ee8039ee..315b2d8c3 100644
    --- a/src/cu29_helpers/lib.rs.html
    +++ b/src/cu29_helpers/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source

    cu29_helpers/
    lib.rs

    +lib.rs - source

    cu29_helpers/
    lib.rs

     1
     2
     3
    diff --git a/src/cu29_intern_strs/lib.rs.html b/src/cu29_intern_strs/lib.rs.html
    index 8ad41d4b5..7400313ab 100644
    --- a/src/cu29_intern_strs/lib.rs.html
    +++ b/src/cu29_intern_strs/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source

    cu29_intern_strs/
    lib.rs

    +lib.rs - source

    cu29_intern_strs/
    lib.rs

     1
     2
     3
    diff --git a/src/cu29_log/lib.rs.html b/src/cu29_log/lib.rs.html
    index 190ee9b2c..e5912382d 100644
    --- a/src/cu29_log/lib.rs.html
    +++ b/src/cu29_log/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source

    cu29_log/
    lib.rs

    +lib.rs - source

    cu29_log/
    lib.rs

     1
     2
     3
    diff --git a/src/cu29_log_derive/index.rs.html b/src/cu29_log_derive/index.rs.html
    index 00049f0a6..9396ed184 100644
    --- a/src/cu29_log_derive/index.rs.html
    +++ b/src/cu29_log_derive/index.rs.html
    @@ -1,4 +1,4 @@
    -index.rs - source

    cu29_log_derive/
    index.rs

    +index.rs - source

    cu29_log_derive/
    index.rs

     1
     2
     3
    diff --git a/src/cu29_log_derive/lib.rs.html b/src/cu29_log_derive/lib.rs.html
    index 74c21a990..1fc67ac66 100644
    --- a/src/cu29_log_derive/lib.rs.html
    +++ b/src/cu29_log_derive/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source

    cu29_log_derive/
    lib.rs

    +lib.rs - source

    cu29_log_derive/
    lib.rs

     1
     2
     3
    diff --git a/src/cu29_log_runtime/lib.rs.html b/src/cu29_log_runtime/lib.rs.html
    index 8a9f8397f..e4c2a2132 100644
    --- a/src/cu29_log_runtime/lib.rs.html
    +++ b/src/cu29_log_runtime/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source

    cu29_log_runtime/
    lib.rs

    +lib.rs - source

    cu29_log_runtime/
    lib.rs

     1
     2
     3
    @@ -276,7 +276,11 @@
     275
     276
     277
    -278
    use bincode::config::Configuration;
    +278
    +279
    +280
    +281
    +282
    use bincode::config::Configuration;
     use bincode::enc::write::Writer;
     use bincode::enc::Encode;
     use bincode::enc::{Encoder, EncoderImpl};
    @@ -308,7 +312,10 @@
             Ok(())
         }
     }
    -static WRITER: OnceLock<(Mutex<Box<dyn WriteStream<CuLogEntry>>>, RobotClock)> = OnceLock::new();
    +type LogWriter = Box<dyn WriteStream<CuLogEntry>>;
    +type WriterPair = (Mutex<LogWriter>, RobotClock);
    +
    +static WRITER: OnceLock<WriterPair> = OnceLock::new();
     
     #[cfg(debug_assertions)]
     static EXTRA_TEXT_LOGGER: OnceLock<Option<Box<dyn Log>>> = OnceLock::new();
    @@ -452,7 +459,7 @@
         bytes_written: usize,
     }
     
    -impl<'a, W: Write> OwningIoWriter<W> {
    +impl<W: Write> OwningIoWriter<W> {
         pub fn new(writer: W) -> Self {
             Self {
                 writer: BufWriter::new(writer),
    @@ -496,6 +503,7 @@
         pub fn new(path: &PathBuf) -> CuResult<Self> {
             let file = std::fs::OpenOptions::new()
                 .create(true)
    +            .truncate(true)
                 .write(true)
                 .open(path)
                 .map_err(|e| format!("Failed to open file: {:?}", e))?;
    diff --git a/src/cu29_rendercfg/config.rs.html b/src/cu29_rendercfg/config.rs.html
    index 4e90c5451..73604a04f 100644
    --- a/src/cu29_rendercfg/config.rs.html
    +++ b/src/cu29_rendercfg/config.rs.html
    @@ -1,4 +1,4 @@
    -config.rs - source

    cu29_rendercfg/
    config.rs

    +config.rs - source

    cu29_rendercfg/
    config.rs

     1
     2
     3
    diff --git a/src/cu29_rendercfg/rendercfg.rs.html b/src/cu29_rendercfg/rendercfg.rs.html
    index 5ee6b0984..4b1f7a9c1 100644
    --- a/src/cu29_rendercfg/rendercfg.rs.html
    +++ b/src/cu29_rendercfg/rendercfg.rs.html
    @@ -1,4 +1,4 @@
    -rendercfg.rs - source

    cu29_rendercfg/
    rendercfg.rs

    +rendercfg.rs - source

    cu29_rendercfg/
    rendercfg.rs

     1
     2
     3
    diff --git a/src/cu29_soa_derive/format.rs.html b/src/cu29_soa_derive/format.rs.html
    index dd734a6dc..1b9a42b7b 100644
    --- a/src/cu29_soa_derive/format.rs.html
    +++ b/src/cu29_soa_derive/format.rs.html
    @@ -1,4 +1,4 @@
    -format.rs - source

    cu29_soa_derive/
    format.rs

    +format.rs - source

    cu29_soa_derive/
    format.rs

     1
     2
     3
    diff --git a/src/cu29_soa_derive/lib.rs.html b/src/cu29_soa_derive/lib.rs.html
    index a4368ba11..b5c169a5f 100644
    --- a/src/cu29_soa_derive/lib.rs.html
    +++ b/src/cu29_soa_derive/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source

    cu29_soa_derive/
    lib.rs

    +lib.rs - source

    cu29_soa_derive/
    lib.rs

     1
     2
     3
    diff --git a/src/cu29_traits/lib.rs.html b/src/cu29_traits/lib.rs.html
    index 176808362..2e8a6f04f 100644
    --- a/src/cu29_traits/lib.rs.html
    +++ b/src/cu29_traits/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source

    cu29_traits/
    lib.rs

    +lib.rs - source

    cu29_traits/
    lib.rs

     1
     2
     3
    diff --git a/src/cu29_unifiedlog/lib.rs.html b/src/cu29_unifiedlog/lib.rs.html
    index fa410a23c..3ac68e6f6 100644
    --- a/src/cu29_unifiedlog/lib.rs.html
    +++ b/src/cu29_unifiedlog/lib.rs.html
    @@ -1,4 +1,4 @@
    -lib.rs - source

    cu29_unifiedlog/
    lib.rs

    +lib.rs - source

    cu29_unifiedlog/
    lib.rs

     1
     2
     3
    diff --git a/static.files/search-6851d9ab.js b/static.files/search-6851d9ab.js
    new file mode 100644
    index 000000000..08e5f5b2d
    --- /dev/null
    +++ b/static.files/search-6851d9ab.js
    @@ -0,0 +1,6 @@
    +"use strict";if(!Array.prototype.toSpliced){Array.prototype.toSpliced=function(){const me=this.slice();Array.prototype.splice.apply(me,arguments);return me}}function onEachBtwn(arr,func,funcBtwn){let skipped=true;for(const value of arr){if(!skipped){funcBtwn(value)}skipped=func(value)}}const itemTypes=["keyword","primitive","mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","associatedtype","constant","associatedconstant","union","foreigntype","existential","attr","derive","traitalias","generic",];const TY_PRIMITIVE=itemTypes.indexOf("primitive");const TY_GENERIC=itemTypes.indexOf("generic");const TY_IMPORT=itemTypes.indexOf("import");const TY_TRAIT=itemTypes.indexOf("trait");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";const UNBOXING_LIMIT=5;const REGEX_IDENT=/\p{ID_Start}\p{ID_Continue}*|_\p{ID_Continue}+/uy;const REGEX_INVALID_TYPE_FILTER=/[^a-z]/ui;const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost,);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1,)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function isEndCharacter(c){return"=,>-])".indexOf(c)!==-1}function isSeparatorCharacter(c){return c===","||c==="="}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function skipWhitespace(parserState){while(parserState.pos0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(c!==" "){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function getFilteredNextElem(query,parserState,elems,isInGenerics){const start=parserState.pos;if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){throw["Expected type filter before ",":"]}getNextElem(query,parserState,elems,isInGenerics);if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}if(elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.normalizedPathLast;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;getNextElem(query,parserState,elems,isInGenerics)}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let foundSeparator=false;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;const oldIsInBinding=parserState.isInBinding;parserState.isInBinding=null;let hofParameters=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===")"){extra="("}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"," after ","="]}hofParameters=[...elems];elems.length=0;parserState.pos+=2;foundStopChar=true;foundSeparator=false;continue}else if(c===" "){parserState.pos+=1;continue}else if(isSeparatorCharacter(c)){parserState.pos+=1;foundStopChar=true;foundSeparator=true;continue}else if(c===":"&&isPathStart(parserState)){throw["Unexpected ","::",": paths cannot start with ","::"]}else if(isEndCharacter(c)){throw["Unexpected ",c," after ",extra]}if(!foundStopChar){let extra=[];if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",",",", ","=",", or ",endChar,...extra,", found ",c,]}throw["Expected ",","," or ","=",...extra,", found ",c,]}const posBefore=parserState.pos;getFilteredNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;if(hofParameters){foundSeparator=false;if([...elems,...hofParameters].some(x=>x.bindingName)||parserState.isInBinding){throw["Unexpected ","="," within ","->"]}const hofElem=makePrimitiveElement("->",{generics:hofParameters,bindings:new Map([["output",[...elems]]]),typeFilter:null,});elems.length=0;elems[0]=hofElem}parserState.typeFilter=oldTypeFilter;parserState.isInBinding=oldIsInBinding;return{foundSeparator}}function getNextElem(query,parserState,elems,isInGenerics){const generics=[];skipWhitespace(parserState);let start=parserState.pos;let end;if("[(".indexOf(parserState.userQuery[parserState.pos])!==-1){let endChar=")";let name="()";let friendlyName="tuple";if(parserState.userQuery[parserState.pos]==="["){endChar="]";name="[]";friendlyName="slice"}parserState.pos+=1;const{foundSeparator}=getItemsBefore(query,parserState,generics,endChar);const typeFilter=parserState.typeFilter;const bindingName=parserState.isInBinding;parserState.typeFilter=null;parserState.isInBinding=null;for(const gen of generics){if(gen.bindingName!==null){throw["Type parameter ","=",` cannot be within ${friendlyName} `,name]}}if(name==="()"&&!foundSeparator&&generics.length===1&&typeFilter===null){elems.push(generics[0])}else if(name==="()"&&generics.length===1&&generics[0].name==="->"){generics[0].typeFilter=typeFilter;elems.push(generics[0])}else{if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive ",name," and ",typeFilter," both specified",]}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}elems.push(makePrimitiveElement(name,{bindingName,generics}))}}else if(parserState.userQuery[parserState.pos]==="&"){if(parserState.typeFilter!==null&&parserState.typeFilter!=="primitive"){throw["Invalid search type: primitive ","&"," and ",parserState.typeFilter," both specified",]}parserState.typeFilter=null;parserState.pos+=1;let c=parserState.userQuery[parserState.pos];while(c===" "&&parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}else if(parserState.pos=end){throw["Found generics without a path"]}if(parserState.isInBinding){throw["Unexpected ","("," after ","="]}parserState.pos+=1;const typeFilter=parserState.typeFilter;parserState.typeFilter=null;getItemsBefore(query,parserState,generics,")");skipWhitespace(parserState);if(isReturnArrow(parserState)){parserState.pos+=2;skipWhitespace(parserState);getFilteredNextElem(query,parserState,generics,isInGenerics);generics[generics.length-1].bindingName=makePrimitiveElement("output")}else{generics.push(makePrimitiveElement(null,{bindingName:makePrimitiveElement("output"),typeFilter:null,}))}parserState.typeFilter=typeFilter}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}if(parserState.userQuery[parserState.pos]==="="){if(parserState.isInBinding){throw["Cannot write ","="," twice in a binding"]}if(!isInGenerics){throw["Type parameter ","="," must be within generics list"]}const name=parserState.userQuery.slice(start,end).trim();if(name==="!"){throw["Type parameter ","="," key cannot be ","!"," never type"]}if(name.includes("!")){throw["Type parameter ","="," key cannot be ","!"," macro"]}if(name.includes("::")){throw["Type parameter ","="," key cannot contain ","::"," path"]}if(name.includes(":")){throw["Type parameter ","="," key cannot contain ",":"," type"]}parserState.isInBinding={name,generics}}else{elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics,),)}}}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();const match=query.match(REGEX_INVALID_TYPE_FILTER);if(match){throw["Unexpected ",match[0]," in type filter (before ",":",")",]}}function createQueryElement(query,parserState,name,generics,isInGenerics){const path=name.trim();if(path.length===0&&generics.length===0){throw["Unexpected ",parserState.userQuery[parserState.pos]]}if(query.literalSearch&&parserState.totalElems-parserState.genericsElems>0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name.trim()==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}const bindingName=parserState.isInBinding;parserState.isInBinding=null;return makePrimitiveElement("never",{bindingName})}const quadcolon=/::\s*::/.exec(path);if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(quadcolon!==null){throw["Unexpected ",quadcolon[0]]}const pathSegments=path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/).map(x=>x.toLowerCase());if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}const bindingName=parserState.isInBinding;parserState.isInBinding=null;const bindings=new Map();const pathLast=pathSegments[pathSegments.length-1];return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast,normalizedPathLast:pathLast.replace(/_/g,""),generics:generics.filter(gen=>{if(gen.bindingName!==null){if(gen.name!==null){gen.bindingName.generics.unshift(gen)}bindings.set(gen.bindingName.name.toLowerCase().replace(/_/g,""),gen.bindingName.generics,);return false}return true}),bindings,typeFilter,bindingName,}}function makePrimitiveElement(name,extra){return Object.assign({name,id:null,fullPath:[name],pathWithoutLast:[],pathLast:name,normalizedPathLast:name,generics:[],bindings:new Map(),typeFilter:"primitive",bindingName:null,},extra)}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function getIdentEndPosition(parserState){let afterIdent=consumeIdent(parserState);let end=parserState.pos;let macroExclamation=-1;while(parserState.pos0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]," (not a valid identifier)"]}else{throw["Unexpected ",c," (not a valid identifier)"]}parserState.pos+=1;afterIdent=consumeIdent(parserState);end=parserState.pos}if(macroExclamation!==-1){if(parserState.typeFilter===null){parserState.typeFilter="macro"}else if(parserState.typeFilter!=="macro"){throw["Invalid search type: macro ","!"," and ",parserState.typeFilter," both specified",]}end=macroExclamation}return end}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function consumeIdent(parserState){REGEX_IDENT.lastIndex=parserState.pos;const match=parserState.userQuery.match(REGEX_IDENT);if(match){parserState.pos+=match[0].length;return true}return false}function isPathSeparator(c){return c===":"||c===" "}class VlqHexDecoder{constructor(string,cons){this.string=string;this.cons=cons;this.offset=0;this.backrefQueue=[]}decodeList(){let c=this.string.charCodeAt(this.offset);const ret=[];while(c!==125){ret.push(this.decode());c=this.string.charCodeAt(this.offset)}this.offset+=1;return ret}decode(){let n=0;let c=this.string.charCodeAt(this.offset);if(c===123){this.offset+=1;return this.decodeList()}while(c<96){n=(n<<4)|(c&0xF);this.offset+=1;c=this.string.charCodeAt(this.offset)}n=(n<<4)|(c&0xF);const[sign,value]=[n&1,n>>1];this.offset+=1;return sign?-value:value}next(){const c=this.string.charCodeAt(this.offset);if(c>=48&&c<64){this.offset+=1;return this.backrefQueue[c-48]}if(c===96){this.offset+=1;return this.cons(0)}const result=this.cons(this.decode());this.backrefQueue.unshift(result);if(this.backrefQueue.length>16){this.backrefQueue.pop()}return result}}class RoaringBitmap{constructor(str){const strdecoded=atob(str);const u8array=new Uint8Array(strdecoded.length);for(let j=0;j=4){offsets=[];for(let j=0;j>3]&(1<<(j&0x7))){const runcount=(u8array[i]|(u8array[i+1]<<8));i+=2;this.containers.push(new RoaringBitmapRun(runcount,u8array.slice(i,i+(runcount*4)),));i+=runcount*4}else if(this.cardinalities[j]>=4096){this.containers.push(new RoaringBitmapBits(u8array.slice(i,i+8192)));i+=8192}else{const end=this.cardinalities[j]*2;this.containers.push(new RoaringBitmapArray(this.cardinalities[j],u8array.slice(i,i+end),));i+=end}}}contains(keyvalue){const key=keyvalue>>16;const value=keyvalue&0xFFFF;for(let i=0;i=start&&value<=(start+lenm1)){return true}}return false}}class RoaringBitmapArray{constructor(cardinality,array){this.cardinality=cardinality;this.array=array}contains(value){const l=this.cardinality*2;for(let i=0;i>3]&(1<<(value&7)))}}class NameTrie{constructor(){this.children=[];this.matches=[]}insert(name,id,tailTable){this.insertSubstring(name,0,id,tailTable)}insertSubstring(name,substart,id,tailTable){const l=name.length;if(substart===l){this.matches.push(id)}else{const sb=name.charCodeAt(substart);let child;if(this.children[sb]!==undefined){child=this.children[sb]}else{child=new NameTrie();this.children[sb]=child;let sste;if(substart>=2){const tail=name.substring(substart-2,substart+1);if(tailTable.has(tail)){sste=tailTable.get(tail)}else{sste=[];tailTable.set(tail,sste)}sste.push(child)}}child.insertSubstring(name,substart+1,id,tailTable)}}search(name,tailTable){const results=new Set();this.searchSubstringPrefix(name,0,results);if(results.size=3){const levParams=name.length>=6?new Lev2TParametricDescription(name.length):new Lev1TParametricDescription(name.length);this.searchLev(name,0,levParams,results);const tail=name.substring(0,3);if(tailTable.has(tail)){for(const entry of tailTable.get(tail)){entry.searchSubstringPrefix(name,3,results)}}}return[...results]}searchSubstringPrefix(name,substart,results){const l=name.length;if(substart===l){for(const match of this.matches){results.add(match)}let unprocessedChildren=[];for(const child of this.children){if(child){unprocessedChildren.push(child)}}let nextSet=[];while(unprocessedChildren.length!==0){const next=unprocessedChildren.pop();for(const child of next.children){if(child){nextSet.push(child)}}for(const match of next.matches){results.add(match)}if(unprocessedChildren.length===0){const tmp=unprocessedChildren;unprocessedChildren=nextSet;nextSet=tmp}}}else{const sb=name.charCodeAt(substart);if(this.children[sb]!==undefined){this.children[sb].searchSubstringPrefix(name,substart+1,results)}}}searchLev(name,substart,levParams,results){const stack=[[this,0]];const n=levParams.n;while(stack.length!==0){const[trie,levState]=stack.pop();for(const[charCode,child]of trie.children.entries()){if(!child){continue}const levPos=levParams.getPosition(levState);const vector=levParams.getVector(name,charCode,levPos,Math.min(name.length,levPos+(2*n)+1),);const newLevState=levParams.transition(levState,levPos,vector,);if(newLevState>=0){stack.push([child,newLevState]);if(levParams.isAccept(newLevState)){for(const match of child.matches){results.add(match)}}}}}}}class DocSearch{constructor(rawSearchIndex,rootPath,searchState){this.searchIndexDeprecated=new Map();this.searchIndexEmptyDesc=new Map();this.functionTypeFingerprint=null;this.typeNameIdMap=new Map();this.assocTypeIdNameMap=new Map();this.ALIASES=new Map();this.rootPath=rootPath;this.searchState=searchState;this.typeNameIdOfArray=this.buildTypeMapIndex("array");this.typeNameIdOfSlice=this.buildTypeMapIndex("slice");this.typeNameIdOfArrayOrSlice=this.buildTypeMapIndex("[]");this.typeNameIdOfTuple=this.buildTypeMapIndex("tuple");this.typeNameIdOfUnit=this.buildTypeMapIndex("unit");this.typeNameIdOfTupleOrUnit=this.buildTypeMapIndex("()");this.typeNameIdOfFn=this.buildTypeMapIndex("fn");this.typeNameIdOfFnMut=this.buildTypeMapIndex("fnmut");this.typeNameIdOfFnOnce=this.buildTypeMapIndex("fnonce");this.typeNameIdOfHof=this.buildTypeMapIndex("->");this.typeNameIdOfOutput=this.buildTypeMapIndex("output",true);this.typeNameIdOfReference=this.buildTypeMapIndex("reference");this.EMPTY_BINDINGS_MAP=new Map();this.EMPTY_GENERICS_ARRAY=[];this.TYPES_POOL=new Map();this.nameTrie=new NameTrie();this.tailTable=new Map();this.searchIndex=this.buildIndex(rawSearchIndex)}buildTypeMapIndex(name,isAssocType){if(name===""||name===null){return null}if(this.typeNameIdMap.has(name)){const obj=this.typeNameIdMap.get(name);obj.assocOnly=isAssocType&&obj.assocOnly;return obj.id}else{const id=this.typeNameIdMap.size;this.typeNameIdMap.set(name,{id,assocOnly:isAssocType});return id}}buildItemSearchTypeAll(types,paths,lowercasePaths){return types.length>0?types.map(type=>this.buildItemSearchType(type,paths,lowercasePaths)):this.EMPTY_GENERICS_ARRAY}buildItemSearchType(type,paths,lowercasePaths,isAssocType){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;const BINDINGS_DATA=2;let pathIndex,generics,bindings;if(typeof type==="number"){pathIndex=type;generics=this.EMPTY_GENERICS_ARRAY;bindings=this.EMPTY_BINDINGS_MAP}else{pathIndex=type[PATH_INDEX_DATA];generics=this.buildItemSearchTypeAll(type[GENERICS_DATA],paths,lowercasePaths,);if(type.length>BINDINGS_DATA&&type[BINDINGS_DATA].length>0){bindings=new Map(type[BINDINGS_DATA].map(binding=>{const[assocType,constraints]=binding;return[this.buildItemSearchType(assocType,paths,lowercasePaths,true).id,this.buildItemSearchTypeAll(constraints,paths,lowercasePaths),]}))}else{bindings=this.EMPTY_BINDINGS_MAP}}let result;if(pathIndex<0){result={id:pathIndex,name:"",ty:TY_GENERIC,path:null,exactPath:null,generics,bindings,unboxFlag:true,}}else if(pathIndex===0){result={id:null,name:"",ty:null,path:null,exactPath:null,generics,bindings,unboxFlag:true,}}else{const item=lowercasePaths[pathIndex-1];const id=this.buildTypeMapIndex(item.name,isAssocType);if(isAssocType){this.assocTypeIdNameMap.set(id,paths[pathIndex-1].name)}result={id,name:paths[pathIndex-1].name,ty:item.ty,path:item.path,exactPath:item.exactPath,generics,bindings,unboxFlag:item.unboxFlag,}}const cr=this.TYPES_POOL.get(result.id);if(cr){if(cr.generics.length===result.generics.length&&cr.generics!==result.generics&&cr.generics.every((x,i)=>result.generics[i]===x)){result.generics=cr.generics}if(cr.bindings.size===result.bindings.size&&cr.bindings!==result.bindings){let ok=true;for(const[k,v]of cr.bindings.entries()){const v2=result.bindings.get(v);if(!v2){ok=false;break}if(v!==v2&&v.length===v2.length&&v.every((x,i)=>v2[i]===x)){result.bindings.set(k,v)}else if(v!==v2){ok=false;break}}if(ok){result.bindings=cr.bindings}}if(cr.ty===result.ty&&cr.path===result.path&&cr.bindings===result.bindings&&cr.generics===result.generics&&cr.ty===result.ty&&cr.name===result.name&&cr.unboxFlag===result.unboxFlag){return cr}}this.TYPES_POOL.set(result.id,result);return result}buildFunctionTypeFingerprint(type,output){let input=type.id;if(input===this.typeNameIdOfArray||input===this.typeNameIdOfSlice){input=this.typeNameIdOfArrayOrSlice}if(input===this.typeNameIdOfTuple||input===this.typeNameIdOfUnit){input=this.typeNameIdOfTupleOrUnit}if(input===this.typeNameIdOfFn||input===this.typeNameIdOfFnMut||input===this.typeNameIdOfFnOnce){input=this.typeNameIdOfHof}const hashint1=k=>{k=(~~k+0x7ed55d16)+(k<<12);k=(k ^ 0xc761c23c)^(k>>>19);k=(~~k+0x165667b1)+(k<<5);k=(~~k+0xd3a2646c)^(k<<9);k=(~~k+0xfd7046c5)+(k<<3);return(k ^ 0xb55a4f09)^(k>>>16)};const hashint2=k=>{k=~k+(k<<15);k ^=k>>>12;k+=k<<2;k ^=k>>>4;k=Math.imul(k,2057);return k ^(k>>16)};if(input!==null){const h0a=hashint1(input);const h0b=hashint2(input);const h1a=~~(h0a+Math.imul(h0b,2));const h1b=~~(h0a+Math.imul(h0b,3));const h2a=~~(h0a+Math.imul(h0b,4));const h2b=~~(h0a+Math.imul(h0b,5));output[0]|=(1<<(h0a%32))|(1<<(h1b%32));output[1]|=(1<<(h1a%32))|(1<<(h2b%32));output[2]|=(1<<(h2a%32))|(1<<(h0b%32));output[3]+=1}for(const g of type.generics){this.buildFunctionTypeFingerprint(g,output)}const fb={id:null,ty:0,generics:this.EMPTY_GENERICS_ARRAY,bindings:this.EMPTY_BINDINGS_MAP,};for(const[k,v]of type.bindings.entries()){fb.id=k;fb.generics=v;this.buildFunctionTypeFingerprint(fb,output)}}buildIndex(rawSearchIndex){const buildFunctionSearchTypeCallback=(paths,lowercasePaths)=>{return functionSearchType=>{if(functionSearchType===0){return null}const INPUTS_DATA=0;const OUTPUT_DATA=1;let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[this.buildItemSearchType(functionSearchType[INPUTS_DATA],paths,lowercasePaths,),]}else{inputs=this.buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],paths,lowercasePaths,)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[this.buildItemSearchType(functionSearchType[OUTPUT_DATA],paths,lowercasePaths,),]}else{output=this.buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],paths,lowercasePaths,)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;inoop);let descShard={crate,shard:0,start:0,len:itemDescShardDecoder.next(),promise:null,resolve:null,};const descShardList=[descShard];this.searchIndexDeprecated.set(crate,new RoaringBitmap(crateCorpus.c));this.searchIndexEmptyDesc.set(crate,new RoaringBitmap(crateCorpus.e));let descIndex=0;let lastParamNames=[];let normalizedName=crate.indexOf("_")===-1?crate:crate.replace(/_/g,"");const crateRow={crate,ty:3,name:crate,path:"",descShard,descIndex,exactPath:"",desc:crateCorpus.doc,parent:undefined,type:null,paramNames:lastParamNames,id,word:crate,normalizedName,bitIndex:0,implDisambiguator:null,};this.nameTrie.insert(normalizedName,id,this.tailTable);id+=1;searchIndex.push(crateRow);currentIndex+=1;if(!this.searchIndexEmptyDesc.get(crate).contains(0)){descIndex+=1}const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemReexports=new Map(crateCorpus.r);const itemParentIdxDecoder=new VlqHexDecoder(crateCorpus.i,noop=>noop);const implDisambiguator=new Map(crateCorpus.b);const paths=crateCorpus.p;const aliases=crateCorpus.a;const itemParamNames=new Map(crateCorpus.P);const lowercasePaths=[];const itemFunctionDecoder=new VlqHexDecoder(crateCorpus.f,buildFunctionSearchTypeCallback(paths,lowercasePaths),);let len=paths.length;let lastPath=itemPaths.get(0);for(let i=0;i2&&elem[2]!==null){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}const exactPath=elem.length>3&&elem[3]!==null?itemPaths.get(elem[3]):path;const unboxFlag=elem.length>4&&!!elem[4];lowercasePaths.push({ty,name:name.toLowerCase(),path,exactPath,unboxFlag});paths[i]={ty,name,path,exactPath,unboxFlag}}lastPath="";len=itemTypes.length;let lastName="";let lastWord="";for(let i=0;i=descShard.len&&!this.searchIndexEmptyDesc.get(crate).contains(bitIndex)){descShard={crate,shard:descShard.shard+1,start:descShard.start+descShard.len,len:itemDescShardDecoder.next(),promise:null,resolve:null,};descIndex=0;descShardList.push(descShard)}const name=itemNames[i]===""?lastName:itemNames[i];const word=itemNames[i]===""?lastWord:itemNames[i].toLowerCase();const path=itemPaths.has(i)?itemPaths.get(i):lastPath;const paramNames=itemParamNames.has(i)?itemParamNames.get(i).split(","):lastParamNames;const type=itemFunctionDecoder.next();if(type!==null){if(type){const fp=this.functionTypeFingerprint.subarray(id*4,(id+1)*4);for(const t of type.inputs){this.buildFunctionTypeFingerprint(t,fp)}for(const t of type.output){this.buildFunctionTypeFingerprint(t,fp)}for(const w of type.where_clause){for(const t of w){this.buildFunctionTypeFingerprint(t,fp)}}}}const itemParentIdx=itemParentIdxDecoder.next();normalizedName=word.indexOf("_")===-1?word:word.replace(/_/g,"");const row={crate,ty:itemTypes.charCodeAt(i)-65,name,path,descShard,descIndex,exactPath:itemReexports.has(i)?itemPaths.get(itemReexports.get(i)):path,parent:itemParentIdx>0?paths[itemParentIdx-1]:undefined,type,paramNames,id,word,normalizedName,bitIndex,implDisambiguator:implDisambiguator.has(i)?implDisambiguator.get(i):null,};this.nameTrie.insert(normalizedName,id,this.tailTable);id+=1;searchIndex.push(row);lastPath=row.path;lastParamNames=row.paramNames;if(!this.searchIndexEmptyDesc.get(crate).contains(bitIndex)){descIndex+=1}lastName=name;lastWord=word}if(aliases){const currentCrateAliases=new Map();this.ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!Object.prototype.hasOwnProperty.call(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=itemTypes.length;this.searchState.descShards.set(crate,descShardList)}this.TYPES_POOL=new Map();return searchIndex}static parseQuery(userQuery){function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}for(const constraints of elem.bindings.values()){for(const constraint of constraints){convertTypeFilterOnElem(constraint)}}}function newParsedQuery(userQuery){return{userQuery,elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,hasReturnArrow:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,typeFingerprint:new Uint32Array(4),}}function parseInput(query,parserState){let foundStopChar=true;while(parserState.pos"){if(isReturnArrow(parserState)){query.hasReturnArrow=true;break}throw["Unexpected ",c," (did you mean ","->","?)"]}else if(parserState.pos>0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}throw["Unexpected ",c]}else if(c===" "){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;getFilteredNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}async execQuery(parsedQuery,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}const buildHrefAndPath=item=>{let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;let exactPath=item.exactPath;if(type==="mod"){displayPath=path+"::";href=this.rootPath+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=this.rootPath+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";exactPath="";href=this.rootPath+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=this.rootPath+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor=type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;exactPath=`${myparent.exactPath}::${myparent.name}`;if(parentType==="primitive"){displayPath=myparent.name+"::";exactPath=myparent.name}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}if(item.implDisambiguator!==null){anchor=item.implDisambiguator+"/"+anchor}href=this.rootPath+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html#"+anchor}else{displayPath=item.path+"::";href=this.rootPath+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href,`${exactPath}::${name}`]};function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}const transformResults=(results,typeInfo)=>{const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const res=buildHrefAndPath(this.searchIndex[result.id]);const obj=Object.assign({dist:result.dist,displayPath:pathSplitter(res[0]),},this.searchIndex[result.id]);obj.fullPath=res[2]+"|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}if(obj.ty===TY_IMPORT&&duplicates.has(res[2])){continue}if(duplicates.has(res[2]+"|"+TY_IMPORT)){continue}duplicates.add(obj.fullPath);duplicates.add(res[2]);if(typeInfo!==null){obj.displayTypeSignature=this.formatDisplayTypeSignature(obj,typeInfo)}obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out};this.formatDisplayTypeSignature=async(obj,typeInfo)=>{let fnInputs=null;let fnOutput=null;let mgens=null;if(typeInfo!=="elems"&&typeInfo!=="returned"){fnInputs=unifyFunctionTypes(obj.type.inputs,parsedQuery.elems,obj.type.where_clause,null,mgensScratch=>{fnOutput=unifyFunctionTypes(obj.type.output,parsedQuery.returned,obj.type.where_clause,mgensScratch,mgensOut=>{mgens=mgensOut;return true},0,);return!!fnOutput},0,)}else{const arr=typeInfo==="elems"?obj.type.inputs:obj.type.output;const highlighted=unifyFunctionTypes(arr,parsedQuery.elems,obj.type.where_clause,null,mgensOut=>{mgens=mgensOut;return true},0,);if(typeInfo==="elems"){fnInputs=highlighted}else{fnOutput=highlighted}}if(!fnInputs){fnInputs=obj.type.inputs}if(!fnOutput){fnOutput=obj.type.output}const mappedNames=new Map();const whereClause=new Map();const fnParamNames=obj.paramNames;const queryParamNames=[];const remapQuery=queryElem=>{if(queryElem.id<0){queryParamNames[-1-queryElem.id]=queryElem.name}if(queryElem.generics.length>0){queryElem.generics.forEach(remapQuery)}if(queryElem.bindings.size>0){[...queryElem.bindings.values()].flat().forEach(remapQuery)}};parsedQuery.elems.forEach(remapQuery);parsedQuery.returned.forEach(remapQuery);const pushText=(fnType,result)=>{if(!!(result.length%2)===!!fnType.highlighted){result.push("")}else if(result.length===0&&!!fnType.highlighted){result.push("");result.push("")}result[result.length-1]+=fnType.name};const writeHof=(fnType,result)=>{const hofOutput=fnType.bindings.get(this.typeNameIdOfOutput)||[];const hofInputs=fnType.generics;pushText(fnType,result);pushText({name:" (",highlighted:false},result);let needsComma=false;for(const fnType of hofInputs){if(needsComma){pushText({name:", ",highlighted:false},result)}needsComma=true;writeFn(fnType,result)}pushText({name:hofOutput.length===0?")":") -> ",highlighted:false,},result);if(hofOutput.length>1){pushText({name:"(",highlighted:false},result)}needsComma=false;for(const fnType of hofOutput){if(needsComma){pushText({name:", ",highlighted:false},result)}needsComma=true;writeFn(fnType,result)}if(hofOutput.length>1){pushText({name:")",highlighted:false},result)}};const writeSpecialPrimitive=(fnType,result)=>{if(fnType.id===this.typeNameIdOfArray||fnType.id===this.typeNameIdOfSlice||fnType.id===this.typeNameIdOfTuple||fnType.id===this.typeNameIdOfUnit){const[ob,sb]=fnType.id===this.typeNameIdOfArray||fnType.id===this.typeNameIdOfSlice?["[","]"]:["(",")"];pushText({name:ob,highlighted:fnType.highlighted},result);onEachBtwn(fnType.generics,nested=>writeFn(nested,result),()=>pushText({name:", ",highlighted:false},result),);pushText({name:sb,highlighted:fnType.highlighted},result);return true}else if(fnType.id===this.typeNameIdOfReference){pushText({name:"&",highlighted:fnType.highlighted},result);let prevHighlighted=false;onEachBtwn(fnType.generics,value=>{prevHighlighted=value.highlighted;writeFn(value,result)},value=>pushText({name:" ",highlighted:prevHighlighted&&value.highlighted,},result),);return true}else if(fnType.id===this.typeNameIdOfFn){writeHof(fnType,result);return true}return false};const writeFn=(fnType,result)=>{if(fnType.id<0){if(fnParamNames[-1-fnType.id]===""){for(const nested of fnType.generics){writeFn(nested,result)}return}else if(mgens){for(const[queryId,fnId]of mgens){if(fnId===fnType.id){mappedNames.set(queryParamNames[-1-queryId],fnParamNames[-1-fnType.id],)}}}pushText({name:fnParamNames[-1-fnType.id],highlighted:!!fnType.highlighted,},result);const where=[];onEachBtwn(fnType.generics,nested=>writeFn(nested,where),()=>pushText({name:" + ",highlighted:false},where),);if(where.length>0){whereClause.set(fnParamNames[-1-fnType.id],where)}}else{if(fnType.ty===TY_PRIMITIVE){if(writeSpecialPrimitive(fnType,result)){return}}else if(fnType.ty===TY_TRAIT&&(fnType.id===this.typeNameIdOfFn||fnType.id===this.typeNameIdOfFnMut||fnType.id===this.typeNameIdOfFnOnce)){writeHof(fnType,result);return}pushText(fnType,result);let hasBindings=false;if(fnType.bindings.size>0){onEachBtwn(fnType.bindings,([key,values])=>{const name=this.assocTypeIdNameMap.get(key);if(values.length===1&&values[0].id<0&&`${fnType.name}::${name}`===fnParamNames[-1-values[0].id]){for(const value of values){writeFn(value,[])}return true}if(!hasBindings){hasBindings=true;pushText({name:"<",highlighted:false},result)}pushText({name,highlighted:false},result);pushText({name:values.length!==1?"=(":"=",highlighted:false,},result);onEachBtwn(values||[],value=>writeFn(value,result),()=>pushText({name:" + ",highlighted:false},result),);if(values.length!==1){pushText({name:")",highlighted:false},result)}},()=>pushText({name:", ",highlighted:false},result),)}if(fnType.generics.length>0){pushText({name:hasBindings?", ":"<",highlighted:false},result)}onEachBtwn(fnType.generics,value=>writeFn(value,result),()=>pushText({name:", ",highlighted:false},result),);if(hasBindings||fnType.generics.length>0){pushText({name:">",highlighted:false},result)}}};const type=[];onEachBtwn(fnInputs,fnType=>writeFn(fnType,type),()=>pushText({name:", ",highlighted:false},type),);pushText({name:" -> ",highlighted:false},type);onEachBtwn(fnOutput,fnType=>writeFn(fnType,type),()=>pushText({name:", ",highlighted:false},type),);return{type,mappedNames,whereClause}};const sortResults=async(results,typeInfo,preferredCrate)=>{const userQuery=parsedQuery.userQuery;const normalizedUserQuery=parsedQuery.userQuery.toLowerCase();const result_list=[];for(const result of results.values()){result.item=this.searchIndex[result.id];result.word=this.searchIndex[result.id].word;result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.item.name!==userQuery);b=(bbb.item.name!==userQuery);if(a!==b){return a-b}a=(aaa.word!==normalizedUserQuery);b=(bbb.word!==normalizedUserQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=this.searchIndexDeprecated.get(aaa.item.crate).contains(aaa.item.bitIndex);b=this.searchIndexDeprecated.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=this.searchIndexEmptyDesc.get(aaa.item.crate).contains(aaa.item.bitIndex);b=this.searchIndexEmptyDesc.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});return transformResults(result_list,typeInfo)};function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return null}const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return solutionCb(mgens)?fnTypesIn:null}if(!fnTypesIn||fnTypesIn.length===0){return null}const ql=queryElems.length;const fl=fnTypesIn.length;if(ql===1&&queryElems[0].generics.length===0&&queryElems[0].bindings.size===0){const queryElem=queryElems[0];for(const[i,fnType]of fnTypesIn.entries()){if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}if(fnType.id<0&&queryElem.id<0){if(mgens&&mgens.has(queryElem.id)&&mgens.get(queryElem.id)!==fnType.id){continue}const mgensScratch=new Map(mgens);mgensScratch.set(queryElem.id,fnType.id);if(!solutionCb||solutionCb(mgensScratch)){const highlighted=[...fnTypesIn];highlighted[i]=Object.assign({highlighted:true,},fnType,{generics:whereClause[-1-fnType.id],});return highlighted}}else if(solutionCb(mgens?new Map(mgens):null)){const highlighted=[...fnTypesIn];highlighted[i]=Object.assign({highlighted:true,},fnType,{generics:unifyGenericTypes(fnType.generics,queryElem.generics,whereClause,mgens?new Map(mgens):null,solutionCb,unboxingDepth,)||fnType.generics,});return highlighted}}for(const[i,fnType]of fnTypesIn.entries()){if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}if(fnType.id<0){const highlightedGenerics=unifyFunctionTypes(whereClause[(-fnType.id)-1],queryElems,whereClause,mgens,solutionCb,unboxingDepth+1,);if(highlightedGenerics){const highlighted=[...fnTypesIn];highlighted[i]=Object.assign({highlighted:true,},fnType,{generics:highlightedGenerics,});return highlighted}}else{const highlightedGenerics=unifyFunctionTypes([...Array.from(fnType.bindings.values()).flat(),...fnType.generics],queryElems,whereClause,mgens?new Map(mgens):null,solutionCb,unboxingDepth+1,);if(highlightedGenerics){const highlighted=[...fnTypesIn];highlighted[i]=Object.assign({},fnType,{generics:highlightedGenerics,bindings:new Map([...fnType.bindings.entries()].map(([k,v])=>{return[k,highlightedGenerics.splice(0,v.length)]})),});return highlighted}}}return false}const fnTypes=fnTypesIn.slice();const flast=fl-1;const qlast=ql-1;const queryElem=queryElems[qlast];let queryElemsTmp=null;for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(queryElem.id)&&mgensScratch.get(queryElem.id)!==fnType.id){continue}mgensScratch.set(queryElem.id,fnType.id)}else{mgensScratch=mgens}fnTypes[i]=fnTypes[flast];fnTypes.length=flast;if(!queryElemsTmp){queryElemsTmp=queryElems.slice(0,qlast)}let unifiedGenerics=[];let unifiedGenericsMgens=null;const passesUnification=unifyFunctionTypes(fnTypes,queryElemsTmp,whereClause,mgensScratch,mgensScratch=>{if(fnType.generics.length===0&&queryElem.generics.length===0&&fnType.bindings.size===0&&queryElem.bindings.size===0){return solutionCb(mgensScratch)}const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch,unboxingDepth,);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){unifiedGenerics=unifyGenericTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb,unboxingDepth,);if(unifiedGenerics!==null){unifiedGenericsMgens=simplifiedMgens;return true}}return false},unboxingDepth,);if(passesUnification){passesUnification.length=fl;passesUnification[flast]=passesUnification[i];passesUnification[i]=Object.assign({},fnType,{highlighted:true,generics:unifiedGenerics,bindings:new Map([...fnType.bindings.entries()].map(([k,v])=>{return[k,queryElem.bindings.has(k)?unifyFunctionTypes(v,queryElem.bindings.get(k),whereClause,unifiedGenericsMgens,solutionCb,unboxingDepth,):unifiedGenerics.splice(0,v.length)]})),});return passesUnification}fnTypes[flast]=fnTypes[i];fnTypes[i]=fnType;fnTypes.length=fl}for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;const bindings=fnType.bindings?Array.from(fnType.bindings.values()).flat():[];const passesUnification=unifyFunctionTypes(fnTypes.toSpliced(i,1,...bindings,...generics),queryElems,whereClause,mgens,solutionCb,unboxingDepth+1,);if(passesUnification){const highlightedGenerics=passesUnification.slice(i,i+generics.length+bindings.length,);const highlightedFnType=Object.assign({},fnType,{generics:highlightedGenerics,bindings:new Map([...fnType.bindings.entries()].map(([k,v])=>{return[k,highlightedGenerics.splice(0,v.length)]})),});return passesUnification.toSpliced(i,generics.length+bindings.length,highlightedFnType,)}}return null}function unifyGenericTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return null}const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return solutionCb(mgens)?fnTypesIn:null}if(!fnTypesIn||fnTypesIn.length===0){return null}const fnType=fnTypesIn[0];const queryElem=queryElems[0];if(unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){if(fnType.id<0&&queryElem.id<0){if(!mgens||!mgens.has(queryElem.id)||mgens.get(queryElem.id)===fnType.id){const mgensScratch=new Map(mgens);mgensScratch.set(queryElem.id,fnType.id);const fnTypesRemaining=unifyGenericTypes(fnTypesIn.slice(1),queryElems.slice(1),whereClause,mgensScratch,solutionCb,unboxingDepth,);if(fnTypesRemaining){const highlighted=[fnType,...fnTypesRemaining];highlighted[0]=Object.assign({highlighted:true,},fnType,{generics:whereClause[-1-fnType.id],});return highlighted}}}else{let unifiedGenerics;const fnTypesRemaining=unifyGenericTypes(fnTypesIn.slice(1),queryElems.slice(1),whereClause,mgens,mgensScratch=>{const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch,unboxingDepth,);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){unifiedGenerics=unifyGenericTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb,unboxingDepth,);if(unifiedGenerics!==null){return true}}},unboxingDepth,);if(fnTypesRemaining){const highlighted=[fnType,...fnTypesRemaining];highlighted[0]=Object.assign({highlighted:true,},fnType,{generics:unifiedGenerics||fnType.generics,});return highlighted}}}if(unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){let highlightedRemaining;if(fnType.id<0){const highlightedGenerics=unifyFunctionTypes(whereClause[(-fnType.id)-1],[queryElem],whereClause,mgens,mgensScratch=>{const hl=unifyGenericTypes(fnTypesIn.slice(1),queryElems.slice(1),whereClause,mgensScratch,solutionCb,unboxingDepth,);if(hl){highlightedRemaining=hl}return hl},unboxingDepth+1,);if(highlightedGenerics){return[Object.assign({highlighted:true,},fnType,{generics:highlightedGenerics,}),...highlightedRemaining]}}else{const highlightedGenerics=unifyGenericTypes([...Array.from(fnType.bindings.values()).flat(),...fnType.generics,],[queryElem],whereClause,mgens,mgensScratch=>{const hl=unifyGenericTypes(fnTypesIn.slice(1),queryElems.slice(1),whereClause,mgensScratch,solutionCb,unboxingDepth,);if(hl){highlightedRemaining=hl}return hl},unboxingDepth+1,);if(highlightedGenerics){return[Object.assign({},fnType,{generics:highlightedGenerics,bindings:new Map([...fnType.bindings.entries()].map(([k,v])=>{return[k,highlightedGenerics.splice(0,v.length)]})),}),...highlightedRemaining]}}}return null}const unifyFunctionTypeIsMatchCandidate=(fnType,queryElem,mgensIn)=>{if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgensIn&&mgensIn.has(queryElem.id)&&mgensIn.get(queryElem.id)!==fnType.id){return false}return true}else{if(queryElem.id===this.typeNameIdOfArrayOrSlice&&(fnType.id===this.typeNameIdOfSlice||fnType.id===this.typeNameIdOfArray)){}else if(queryElem.id===this.typeNameIdOfTupleOrUnit&&(fnType.id===this.typeNameIdOfTuple||fnType.id===this.typeNameIdOfUnit)){}else if(queryElem.id===this.typeNameIdOfHof&&(fnType.id===this.typeNameIdOfFn||fnType.id===this.typeNameIdOfFnMut||fnType.id===this.typeNameIdOfFnOnce)){}else if(fnType.id!==queryElem.id||queryElem.id===null){return false}if((fnType.generics.length+fnType.bindings.size)===0&&queryElem.generics.length!==0){return false}if(fnType.bindings.size0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i0){let mgensSolutionSet=[mgensIn];for(const[name,constraints]of queryElem.bindings.entries()){if(mgensSolutionSet.length===0){return false}if(!fnType.bindings.has(name)){return false}const fnTypeBindings=fnType.bindings.get(name);mgensSolutionSet=mgensSolutionSet.flatMap(mgens=>{const newSolutions=[];unifyFunctionTypes(fnTypeBindings,constraints,whereClause,mgens,newMgens=>{newSolutions.push(newMgens);return false},unboxingDepth,);return newSolutions})}if(mgensSolutionSet.length===0){return false}const binds=Array.from(fnType.bindings.entries()).flatMap(entry=>{const[name,constraints]=entry;if(queryElem.bindings.has(name)){return[]}else{return constraints}});if(simplifiedGenerics.length>0){simplifiedGenerics=[...binds,...simplifiedGenerics]}else{simplifiedGenerics=binds}return{simplifiedGenerics,mgens:mgensSolutionSet}}return{simplifiedGenerics,mgens:[mgensIn]}}function unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(fnType.id<0){if(!whereClause){return false}return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause,mgens,unboxingDepth,)}else if(fnType.unboxFlag&&(fnType.generics.length>0||fnType.bindings.size>0)){const simplifiedGenerics=[...fnType.generics,...Array.from(fnType.bindings.values()).flat(),];return checkIfInList(simplifiedGenerics,queryElem,whereClause,mgens,unboxingDepth,)}return false}function checkIfInList(list,elem,whereClause,mgens,unboxingDepth){for(const entry of list){if(checkType(entry,elem,whereClause,mgens,unboxingDepth)){return true}}return false}const checkType=(row,elem,whereClause,mgens,unboxingDepth)=>{if(unboxingDepth>=UNBOXING_LIMIT){return false}if(row.id>0&&elem.id>0&&elem.pathWithoutLast.length===0&&row.generics.length===0&&elem.generics.length===0&&row.bindings.size===0&&elem.bindings.size===0&&elem.id!==this.typeNameIdOfArrayOrSlice&&elem.id!==this.typeNameIdOfHof&&elem.id!==this.typeNameIdOfTupleOrUnit){return row.id===elem.id&&typePassesFilter(elem.typeFilter,row.ty)}else{return unifyFunctionTypes([row],[elem],whereClause,mgens,()=>true,unboxingDepth,)}};const checkTypeMgensForConflict=mgens=>{if(!mgens){return true}const fnTypes=new Set();for(const[_qid,fid]of mgens){if(fnTypes.has(fid)){return false}fnTypes.add(fid)}return true};function checkPath(contains,ty){if(contains.length===0){return 0}const maxPathEditDistance=Math.floor(contains.reduce((acc,next)=>acc+next.length,0)/3,);let ret_dist=maxPathEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;pathiter:for(let i=length-clength;i>=0;i-=1){let dist_total=0;for(let x=0;xmaxPathEditDistance){continue pathiter}dist_total+=dist}}ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}return ret_dist>maxPathEditDistance?null:ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,descShard:item.descShard,descIndex:item.descIndex,exactPath:item.exactPath,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,bitIndex:item.bitIndex,implDisambiguator:item.implDisambiguator,}}const handleAliases=async(ret,query,filterCrates,currentCrate)=>{const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(this.ALIASES.has(filterCrates)&&this.ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=this.ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(this.searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of this.ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(this.searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{return this.searchIndexEmptyDesc.get(alias.crate).contains(alias.bitIndex)?"":this.searchState.loadDesc(alias)};const[crateDescs,descs]=await Promise.all([Promise.all(crateAliases.map(fetchDesc)),Promise.all(aliases.map(fetchDesc)),]);const pushFunc=alias=>{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach((alias,i)=>{alias.desc=descs[i]});aliases.forEach(pushFunc);crateAliases.forEach((alias,i)=>{alias.desc=crateDescs[i]});crateAliases.forEach(pushFunc)};function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){if(dist<=maxEditDistance||index!==-1){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}const tfpDist=compareTypeFingerprints(row.id,parsedQuery.typeFingerprint,);if(tfpDist===null){return}if(results.size>=MAX_RESULTS&&tfpDist>results.max_dist){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens,checkTypeMgensForConflict,0,)},0,)){return}results.max_dist=Math.max(results.max_dist||0,tfpDist);addIntoResults(results,row.id,pos,0,tfpDist,0,Number.MAX_VALUE)}const compareTypeFingerprints=(fullId,queryFingerprint)=>{const fh0=this.functionTypeFingerprint[fullId*4];const fh1=this.functionTypeFingerprint[(fullId*4)+1];const fh2=this.functionTypeFingerprint[(fullId*4)+2];const[qh0,qh1,qh2]=queryFingerprint;const[in0,in1,in2]=[fh0&qh0,fh1&qh1,fh2&qh2];if((in0 ^ qh0)||(in1 ^ qh1)||(in2 ^ qh2)){return null}return this.functionTypeFingerprint[(fullId*4)+3]};const innerRunQuery=()=>{const queryLen=parsedQuery.elems.reduce((acc,next)=>acc+next.pathLast.length,0)+parsedQuery.returned.reduce((acc,next)=>acc+next.pathLast.length,0);const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();const convertNameToId=(elem,isAssocType)=>{const loweredName=elem.pathLast.toLowerCase();if(this.typeNameIdMap.has(loweredName)&&(isAssocType||!this.typeNameIdMap.get(loweredName).assocOnly)){elem.id=this.typeNameIdMap.get(loweredName).id}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,{id,assocOnly}]of this.typeNameIdMap){const dist=Math.min(editDistance(name,loweredName,maxEditDistance),editDistance(name,elem.normalizedPathLast,maxEditDistance),);if(dist<=matchDist&&dist<=maxEditDistance&&(isAssocType||!assocOnly)){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0&&elem.bindings.size===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.normalizedPathLast)){elem.id=genericSymbols.get(elem.normalizedPathLast)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.normalizedPathLast,elem.id)}if(elem.typeFilter===-1&&elem.normalizedPathLast.length>=3){const maxPartDistance=Math.floor(elem.normalizedPathLast.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of this.typeNameIdMap.keys()){const dist=editDistance(name,elem.normalizedPathLast,maxPartDistance,);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}elem.bindings=new Map(Array.from(elem.bindings.entries()).map(entry=>{const[name,constraints]=entry;if(!this.typeNameIdMap.has(name)){parsedQuery.error=["Type parameter ",name," does not exist",];return[null,[]]}for(const elem2 of constraints){convertNameToId(elem2)}return[this.typeNameIdMap.get(name).id,constraints]}),)};for(const elem of parsedQuery.elems){convertNameToId(elem);this.buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint)}for(const elem of parsedQuery.returned){convertNameToId(elem);this.buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint)}if(parsedQuery.foundElems===1&&!parsedQuery.hasReturnArrow){const elem=parsedQuery.elems[0];for(const id of this.nameTrie.search(elem.normalizedPathLast,this.tailTable)){const row=this.searchIndex[id];if(!typePassesFilter(elem.typeFilter,row.ty)||(filterCrates!==null&&row.crate!==filterCrates)){continue}let pathDist=0;if(elem.fullPath.length>1){pathDist=checkPath(elem.pathWithoutLast,row);if(pathDist===null){continue}}if(parsedQuery.literalSearch){if(row.word===elem.pathLast){addIntoResults(results_others,row.id,id,0,0,pathDist)}}else{addIntoResults(results_others,row.id,id,row.normalizedName.indexOf(elem.normalizedPathLast),editDistance(row.normalizedName,elem.normalizedPathLast,maxEditDistance,),pathDist,maxEditDistance,)}}const length=this.searchIndex.length;for(let i=0,nSearchIndex=length;i0){const sortQ=(a,b)=>{const ag=a.generics.length===0&&a.bindings.size===0;const bg=b.generics.length===0&&b.bindings.size===0;if(ag!==bg){return ag-bg}const ai=a.id>0;const bi=b.id>0;return ai-bi};parsedQuery.elems.sort(sortQ);parsedQuery.returned.sort(sortQ);for(let i=0,nSearchIndex=this.searchIndex.length;i{const descs=await Promise.all(list.map(result=>{return this.searchIndexEmptyDesc.get(result.crate).contains(result.bitIndex)?"":this.searchState.loadDesc(result)}));for(const[i,result]of list.entries()){result.desc=descs[i]}}));if(parsedQuery.error!==null&&ret.others.length!==0){ret.query.error=null}return ret}}let rawSearchIndex;let docSearch;const longItemTypes=["keyword","primitive type","module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","assoc type","constant","assoc const","union","foreign type","existential type","attribute macro","derive macro","trait alias",];let currentResults;function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||iter===1);iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&window.searchIndex.has(elem.value)){return elem.value}return null}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}async function addTab(array,query,display){const extraClass=display?" active":"";const output=document.createElement(array.length===0&&query.error===null?"div":"ul",);if(array.length>0){output.className="search-results "+extraClass;const lis=Promise.all(array.map(async item=>{const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("span");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=` 
    \ +${item.alias} - see \ +
    `}resultName.insertAdjacentHTML("beforeend",`
    ${alias}\ +${item.displayPath}${name}\ +
    `);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);if(item.displayTypeSignature){const{type,mappedNames,whereClause}=await item.displayTypeSignature;const displayType=document.createElement("div");type.forEach((value,index)=>{if(index%2!==0){const highlight=document.createElement("strong");highlight.appendChild(document.createTextNode(value));displayType.appendChild(highlight)}else{displayType.appendChild(document.createTextNode(value))}});if(mappedNames.size>0||whereClause.size>0){let addWhereLineFn=()=>{const line=document.createElement("div");line.className="where";line.appendChild(document.createTextNode("where"));displayType.appendChild(line);addWhereLineFn=()=>{}};for(const[qname,name]of mappedNames){if(name===qname){continue}addWhereLineFn();const line=document.createElement("div");line.className="where";line.appendChild(document.createTextNode(` ${qname} matches `));const lineStrong=document.createElement("strong");lineStrong.appendChild(document.createTextNode(name));line.appendChild(lineStrong);displayType.appendChild(line)}for(const[name,innerType]of whereClause){if(innerType.length<=1){continue}addWhereLineFn();const line=document.createElement("div");line.className="where";line.appendChild(document.createTextNode(` ${name}: `));innerType.forEach((value,index)=>{if(index%2!==0){const highlight=document.createElement("strong");highlight.appendChild(document.createTextNode(value));line.appendChild(highlight)}else{line.appendChild(document.createTextNode(value))}});displayType.appendChild(line)}}displayType.className="type-signature";link.appendChild(displayType)}link.appendChild(description);return link}));lis.then(lis=>{for(const li of lis){output.appendChild(li)}})}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return output}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return""}return""}async function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=DocSearch.parseQuery(searchState.input.value)}currentResults=results.query.userQuery;let currentTab=searchState.currentTab;if((currentTab===0&&results.others.length===0)||(currentTab===1&&results.in_args.length===0)||(currentTab===2&&results.returned.length===0)){if(results.others.length!==0){currentTab=0}else if(results.in_args.length){currentTab=1}else if(results.returned.length){currentTab=2}}let crates="";if(rawSearchIndex.size>1){crates="
    in 
    "+"
    "}let output=`
    \ +

    Results

    ${crates}
    `;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

    Query parser error: "${error.join("")}".

    `;output+="
    "+makeTabHeader(0,"In Names",results.others.length)+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",results.others.length)+makeTabHeader(1,"In Parameters",results.in_args.length)+makeTabHeader(2,"In Return Types",results.returned.length)+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,results.others.length)+"
    ";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

    "+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

    `}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="

    "+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.

    `}const[ret_others,ret_in_args,ret_returned]=await Promise.all([addTab(results.others,results.query,currentTab===0),addTab(results.in_args,results.query,currentTab===1),addTab(results.returned,results.query,currentTab===2),]);const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others);resultsElem.appendChild(ret_in_args);resultsElem.appendChild(ret_returned);search.innerHTML=output;if(searchState.rustdocToolbar){search.querySelector(".main-heading").appendChild(searchState.rustdocToolbar)}const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}async function search(forced){const query=DocSearch.parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="\""+query.userQuery+"\" Search - Rust";updateSearchHistory(buildUrl(query.userQuery,filterCrates));await showResults(await docSearch.execQuery(query,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;e.preventDefault();search()}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(true)}function initSearch(searchIndx){rawSearchIndex=searchIndx;if(typeof window!=="undefined"){docSearch=new DocSearch(rawSearchIndex,ROOT_PATH,searchState);registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}else if(typeof exports!=="undefined"){docSearch=new DocSearch(rawSearchIndex,ROOT_PATH,searchState);exports.docSearch=docSearch;exports.parseQuery=DocSearch.parseQuery}}if(typeof exports!=="undefined"){exports.initSearch=initSearch}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch(new Map())}class ParametricDescription{constructor(w,n,minErrors){this.w=w;this.n=n;this.minErrors=minErrors}isAccept(absState){const state=Math.floor(absState/(this.w+1));const offset=absState%(this.w+1);return this.w-offset+this.minErrors[state]<=this.n}getPosition(absState){return absState%(this.w+1)}getVector(name,charCode,pos,end){let vector=0;for(let i=pos;i>5;const bitStart=bitLoc&31;if(bitStart+bitsPerValue<=32){return((data[dataLoc]>>bitStart)&this.MASKS[bitsPerValue-1])}else{const part=32-bitStart;return ~~(((data[dataLoc]>>bitStart)&this.MASKS[part-1])+((data[1+dataLoc]&this.MASKS[bitsPerValue-part-1])<limit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost,);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1,)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function isEndCharacter(c){return"=,>-])".indexOf(c)!==-1}function isSeparatorCharacter(c){return c===","||c==="="}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function skipWhitespace(parserState){while(parserState.pos0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(c!==" "){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function getFilteredNextElem(query,parserState,elems,isInGenerics){const start=parserState.pos;if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){throw["Expected type filter before ",":"]}getNextElem(query,parserState,elems,isInGenerics);if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}if(elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.normalizedPathLast;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;getNextElem(query,parserState,elems,isInGenerics)}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let foundSeparator=false;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;const oldIsInBinding=parserState.isInBinding;parserState.isInBinding=null;let hofParameters=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===")"){extra="("}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"," after ","="]}hofParameters=[...elems];elems.length=0;parserState.pos+=2;foundStopChar=true;foundSeparator=false;continue}else if(c===" "){parserState.pos+=1;continue}else if(isSeparatorCharacter(c)){parserState.pos+=1;foundStopChar=true;foundSeparator=true;continue}else if(c===":"&&isPathStart(parserState)){throw["Unexpected ","::",": paths cannot start with ","::"]}else if(isEndCharacter(c)){throw["Unexpected ",c," after ",extra]}if(!foundStopChar){let extra=[];if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",",",", ","=",", or ",endChar,...extra,", found ",c,]}throw["Expected ",","," or ","=",...extra,", found ",c,]}const posBefore=parserState.pos;getFilteredNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;if(hofParameters){foundSeparator=false;if([...elems,...hofParameters].some(x=>x.bindingName)||parserState.isInBinding){throw["Unexpected ","="," within ","->"]}const hofElem=makePrimitiveElement("->",{generics:hofParameters,bindings:new Map([["output",[...elems]]]),typeFilter:null,});elems.length=0;elems[0]=hofElem}parserState.typeFilter=oldTypeFilter;parserState.isInBinding=oldIsInBinding;return{foundSeparator}}function getNextElem(query,parserState,elems,isInGenerics){const generics=[];skipWhitespace(parserState);let start=parserState.pos;let end;if("[(".indexOf(parserState.userQuery[parserState.pos])!==-1){let endChar=")";let name="()";let friendlyName="tuple";if(parserState.userQuery[parserState.pos]==="["){endChar="]";name="[]";friendlyName="slice"}parserState.pos+=1;const{foundSeparator}=getItemsBefore(query,parserState,generics,endChar);const typeFilter=parserState.typeFilter;const bindingName=parserState.isInBinding;parserState.typeFilter=null;parserState.isInBinding=null;for(const gen of generics){if(gen.bindingName!==null){throw["Type parameter ","=",` cannot be within ${friendlyName} `,name]}}if(name==="()"&&!foundSeparator&&generics.length===1&&typeFilter===null){elems.push(generics[0])}else if(name==="()"&&generics.length===1&&generics[0].name==="->"){generics[0].typeFilter=typeFilter;elems.push(generics[0])}else{if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive ",name," and ",typeFilter," both specified",]}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}elems.push(makePrimitiveElement(name,{bindingName,generics}))}}else if(parserState.userQuery[parserState.pos]==="&"){if(parserState.typeFilter!==null&&parserState.typeFilter!=="primitive"){throw["Invalid search type: primitive ","&"," and ",parserState.typeFilter," both specified",]}parserState.typeFilter=null;parserState.pos+=1;let c=parserState.userQuery[parserState.pos];while(c===" "&&parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}else if(parserState.pos=end){throw["Found generics without a path"]}if(parserState.isInBinding){throw["Unexpected ","("," after ","="]}parserState.pos+=1;const typeFilter=parserState.typeFilter;parserState.typeFilter=null;getItemsBefore(query,parserState,generics,")");skipWhitespace(parserState);if(isReturnArrow(parserState)){parserState.pos+=2;skipWhitespace(parserState);getFilteredNextElem(query,parserState,generics,isInGenerics);generics[generics.length-1].bindingName=makePrimitiveElement("output")}else{generics.push(makePrimitiveElement(null,{bindingName:makePrimitiveElement("output"),typeFilter:null,}))}parserState.typeFilter=typeFilter}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}if(parserState.userQuery[parserState.pos]==="="){if(parserState.isInBinding){throw["Cannot write ","="," twice in a binding"]}if(!isInGenerics){throw["Type parameter ","="," must be within generics list"]}const name=parserState.userQuery.slice(start,end).trim();if(name==="!"){throw["Type parameter ","="," key cannot be ","!"," never type"]}if(name.includes("!")){throw["Type parameter ","="," key cannot be ","!"," macro"]}if(name.includes("::")){throw["Type parameter ","="," key cannot contain ","::"," path"]}if(name.includes(":")){throw["Type parameter ","="," key cannot contain ",":"," type"]}parserState.isInBinding={name,generics}}else{elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics,),)}}}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();const match=query.match(REGEX_INVALID_TYPE_FILTER);if(match){throw["Unexpected ",match[0]," in type filter (before ",":",")",]}}function createQueryElement(query,parserState,name,generics,isInGenerics){const path=name.trim();if(path.length===0&&generics.length===0){throw["Unexpected ",parserState.userQuery[parserState.pos]]}if(query.literalSearch&&parserState.totalElems-parserState.genericsElems>0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name.trim()==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}const bindingName=parserState.isInBinding;parserState.isInBinding=null;return makePrimitiveElement("never",{bindingName})}const quadcolon=/::\s*::/.exec(path);if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(quadcolon!==null){throw["Unexpected ",quadcolon[0]]}const pathSegments=path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/).map(x=>x.toLowerCase());if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}const bindingName=parserState.isInBinding;parserState.isInBinding=null;const bindings=new Map();const pathLast=pathSegments[pathSegments.length-1];return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast,normalizedPathLast:pathLast.replace(/_/g,""),generics:generics.filter(gen=>{if(gen.bindingName!==null){if(gen.name!==null){gen.bindingName.generics.unshift(gen)}bindings.set(gen.bindingName.name.toLowerCase().replace(/_/g,""),gen.bindingName.generics,);return false}return true}),bindings,typeFilter,bindingName,}}function makePrimitiveElement(name,extra){return Object.assign({name,id:null,fullPath:[name],pathWithoutLast:[],pathLast:name,normalizedPathLast:name,generics:[],bindings:new Map(),typeFilter:"primitive",bindingName:null,},extra)}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function getIdentEndPosition(parserState){let afterIdent=consumeIdent(parserState);let end=parserState.pos;let macroExclamation=-1;while(parserState.pos0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]," (not a valid identifier)"]}else{throw["Unexpected ",c," (not a valid identifier)"]}parserState.pos+=1;afterIdent=consumeIdent(parserState);end=parserState.pos}if(macroExclamation!==-1){if(parserState.typeFilter===null){parserState.typeFilter="macro"}else if(parserState.typeFilter!=="macro"){throw["Invalid search type: macro ","!"," and ",parserState.typeFilter," both specified",]}end=macroExclamation}return end}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function consumeIdent(parserState){REGEX_IDENT.lastIndex=parserState.pos;const match=parserState.userQuery.match(REGEX_IDENT);if(match){parserState.pos+=match[0].length;return true}return false}function isPathSeparator(c){return c===":"||c===" "}class VlqHexDecoder{constructor(string,cons){this.string=string;this.cons=cons;this.offset=0;this.backrefQueue=[]}decodeList(){let c=this.string.charCodeAt(this.offset);const ret=[];while(c!==125){ret.push(this.decode());c=this.string.charCodeAt(this.offset)}this.offset+=1;return ret}decode(){let n=0;let c=this.string.charCodeAt(this.offset);if(c===123){this.offset+=1;return this.decodeList()}while(c<96){n=(n<<4)|(c&0xF);this.offset+=1;c=this.string.charCodeAt(this.offset)}n=(n<<4)|(c&0xF);const[sign,value]=[n&1,n>>1];this.offset+=1;return sign?-value:value}next(){const c=this.string.charCodeAt(this.offset);if(c>=48&&c<64){this.offset+=1;return this.backrefQueue[c-48]}if(c===96){this.offset+=1;return this.cons(0)}const result=this.cons(this.decode());this.backrefQueue.unshift(result);if(this.backrefQueue.length>16){this.backrefQueue.pop()}return result}}class RoaringBitmap{constructor(str){const strdecoded=atob(str);const u8array=new Uint8Array(strdecoded.length);for(let j=0;j=4){offsets=[];for(let j=0;j>3]&(1<<(j&0x7))){const runcount=(u8array[i]|(u8array[i+1]<<8));i+=2;this.containers.push(new RoaringBitmapRun(runcount,u8array.slice(i,i+(runcount*4)),));i+=runcount*4}else if(this.cardinalities[j]>=4096){this.containers.push(new RoaringBitmapBits(u8array.slice(i,i+8192)));i+=8192}else{const end=this.cardinalities[j]*2;this.containers.push(new RoaringBitmapArray(this.cardinalities[j],u8array.slice(i,i+end),));i+=end}}}contains(keyvalue){const key=keyvalue>>16;const value=keyvalue&0xFFFF;for(let i=0;i=start&&value<=(start+lenm1)){return true}}return false}}class RoaringBitmapArray{constructor(cardinality,array){this.cardinality=cardinality;this.array=array}contains(value){const l=this.cardinality*2;for(let i=0;i>3]&(1<<(value&7)))}}class DocSearch{constructor(rawSearchIndex,rootPath,searchState){this.searchIndexDeprecated=new Map();this.searchIndexEmptyDesc=new Map();this.functionTypeFingerprint=null;this.typeNameIdMap=new Map();this.assocTypeIdNameMap=new Map();this.ALIASES=new Map();this.rootPath=rootPath;this.searchState=searchState;this.typeNameIdOfArray=this.buildTypeMapIndex("array");this.typeNameIdOfSlice=this.buildTypeMapIndex("slice");this.typeNameIdOfArrayOrSlice=this.buildTypeMapIndex("[]");this.typeNameIdOfTuple=this.buildTypeMapIndex("tuple");this.typeNameIdOfUnit=this.buildTypeMapIndex("unit");this.typeNameIdOfTupleOrUnit=this.buildTypeMapIndex("()");this.typeNameIdOfFn=this.buildTypeMapIndex("fn");this.typeNameIdOfFnMut=this.buildTypeMapIndex("fnmut");this.typeNameIdOfFnOnce=this.buildTypeMapIndex("fnonce");this.typeNameIdOfHof=this.buildTypeMapIndex("->");this.typeNameIdOfOutput=this.buildTypeMapIndex("output",true);this.typeNameIdOfReference=this.buildTypeMapIndex("reference");this.EMPTY_BINDINGS_MAP=new Map();this.EMPTY_GENERICS_ARRAY=[];this.TYPES_POOL=new Map();this.searchIndex=this.buildIndex(rawSearchIndex)}buildTypeMapIndex(name,isAssocType){if(name===""||name===null){return null}if(this.typeNameIdMap.has(name)){const obj=this.typeNameIdMap.get(name);obj.assocOnly=isAssocType&&obj.assocOnly;return obj.id}else{const id=this.typeNameIdMap.size;this.typeNameIdMap.set(name,{id,assocOnly:isAssocType});return id}}buildItemSearchTypeAll(types,paths,lowercasePaths){return types.length>0?types.map(type=>this.buildItemSearchType(type,paths,lowercasePaths)):this.EMPTY_GENERICS_ARRAY}buildItemSearchType(type,paths,lowercasePaths,isAssocType){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;const BINDINGS_DATA=2;let pathIndex,generics,bindings;if(typeof type==="number"){pathIndex=type;generics=this.EMPTY_GENERICS_ARRAY;bindings=this.EMPTY_BINDINGS_MAP}else{pathIndex=type[PATH_INDEX_DATA];generics=this.buildItemSearchTypeAll(type[GENERICS_DATA],paths,lowercasePaths,);if(type.length>BINDINGS_DATA&&type[BINDINGS_DATA].length>0){bindings=new Map(type[BINDINGS_DATA].map(binding=>{const[assocType,constraints]=binding;return[this.buildItemSearchType(assocType,paths,lowercasePaths,true).id,this.buildItemSearchTypeAll(constraints,paths,lowercasePaths),]}))}else{bindings=this.EMPTY_BINDINGS_MAP}}let result;if(pathIndex<0){result={id:pathIndex,name:"",ty:TY_GENERIC,path:null,exactPath:null,generics,bindings,unboxFlag:true,}}else if(pathIndex===0){result={id:null,name:"",ty:null,path:null,exactPath:null,generics,bindings,unboxFlag:true,}}else{const item=lowercasePaths[pathIndex-1];const id=this.buildTypeMapIndex(item.name,isAssocType);if(isAssocType){this.assocTypeIdNameMap.set(id,paths[pathIndex-1].name)}result={id,name:paths[pathIndex-1].name,ty:item.ty,path:item.path,exactPath:item.exactPath,generics,bindings,unboxFlag:item.unboxFlag,}}const cr=this.TYPES_POOL.get(result.id);if(cr){if(cr.generics.length===result.generics.length&&cr.generics!==result.generics&&cr.generics.every((x,i)=>result.generics[i]===x)){result.generics=cr.generics}if(cr.bindings.size===result.bindings.size&&cr.bindings!==result.bindings){let ok=true;for(const[k,v]of cr.bindings.entries()){const v2=result.bindings.get(v);if(!v2){ok=false;break}if(v!==v2&&v.length===v2.length&&v.every((x,i)=>v2[i]===x)){result.bindings.set(k,v)}else if(v!==v2){ok=false;break}}if(ok){result.bindings=cr.bindings}}if(cr.ty===result.ty&&cr.path===result.path&&cr.bindings===result.bindings&&cr.generics===result.generics&&cr.ty===result.ty&&cr.name===result.name&&cr.unboxFlag===result.unboxFlag){return cr}}this.TYPES_POOL.set(result.id,result);return result}buildFunctionTypeFingerprint(type,output){let input=type.id;if(input===this.typeNameIdOfArray||input===this.typeNameIdOfSlice){input=this.typeNameIdOfArrayOrSlice}if(input===this.typeNameIdOfTuple||input===this.typeNameIdOfUnit){input=this.typeNameIdOfTupleOrUnit}if(input===this.typeNameIdOfFn||input===this.typeNameIdOfFnMut||input===this.typeNameIdOfFnOnce){input=this.typeNameIdOfHof}const hashint1=k=>{k=(~~k+0x7ed55d16)+(k<<12);k=(k ^ 0xc761c23c)^(k>>>19);k=(~~k+0x165667b1)+(k<<5);k=(~~k+0xd3a2646c)^(k<<9);k=(~~k+0xfd7046c5)+(k<<3);return(k ^ 0xb55a4f09)^(k>>>16)};const hashint2=k=>{k=~k+(k<<15);k ^=k>>>12;k+=k<<2;k ^=k>>>4;k=Math.imul(k,2057);return k ^(k>>16)};if(input!==null){const h0a=hashint1(input);const h0b=hashint2(input);const h1a=~~(h0a+Math.imul(h0b,2));const h1b=~~(h0a+Math.imul(h0b,3));const h2a=~~(h0a+Math.imul(h0b,4));const h2b=~~(h0a+Math.imul(h0b,5));output[0]|=(1<<(h0a%32))|(1<<(h1b%32));output[1]|=(1<<(h1a%32))|(1<<(h2b%32));output[2]|=(1<<(h2a%32))|(1<<(h0b%32));output[3]+=1}for(const g of type.generics){this.buildFunctionTypeFingerprint(g,output)}const fb={id:null,ty:0,generics:this.EMPTY_GENERICS_ARRAY,bindings:this.EMPTY_BINDINGS_MAP,};for(const[k,v]of type.bindings.entries()){fb.id=k;fb.generics=v;this.buildFunctionTypeFingerprint(fb,output)}}buildIndex(rawSearchIndex){const buildFunctionSearchTypeCallback=(paths,lowercasePaths)=>{return functionSearchType=>{if(functionSearchType===0){return null}const INPUTS_DATA=0;const OUTPUT_DATA=1;let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[this.buildItemSearchType(functionSearchType[INPUTS_DATA],paths,lowercasePaths,),]}else{inputs=this.buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],paths,lowercasePaths,)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[this.buildItemSearchType(functionSearchType[OUTPUT_DATA],paths,lowercasePaths,),]}else{output=this.buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],paths,lowercasePaths,)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;inoop);let descShard={crate,shard:0,start:0,len:itemDescShardDecoder.next(),promise:null,resolve:null,};const descShardList=[descShard];this.searchIndexDeprecated.set(crate,new RoaringBitmap(crateCorpus.c));this.searchIndexEmptyDesc.set(crate,new RoaringBitmap(crateCorpus.e));let descIndex=0;let lastParamNames=[];const crateRow={crate,ty:3,name:crate,path:"",descShard,descIndex,exactPath:"",desc:crateCorpus.doc,parent:undefined,type:null,paramNames:lastParamNames,id,word:crate,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),bitIndex:0,implDisambiguator:null,};id+=1;searchIndex.push(crateRow);currentIndex+=1;if(!this.searchIndexEmptyDesc.get(crate).contains(0)){descIndex+=1}const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemReexports=new Map(crateCorpus.r);const itemParentIdxDecoder=new VlqHexDecoder(crateCorpus.i,noop=>noop);const implDisambiguator=new Map(crateCorpus.b);const paths=crateCorpus.p;const aliases=crateCorpus.a;const itemParamNames=new Map(crateCorpus.P);const lowercasePaths=[];const itemFunctionDecoder=new VlqHexDecoder(crateCorpus.f,buildFunctionSearchTypeCallback(paths,lowercasePaths),);let len=paths.length;let lastPath=itemPaths.get(0);for(let i=0;i2&&elem[2]!==null){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}const exactPath=elem.length>3&&elem[3]!==null?itemPaths.get(elem[3]):path;const unboxFlag=elem.length>4&&!!elem[4];lowercasePaths.push({ty,name:name.toLowerCase(),path,exactPath,unboxFlag});paths[i]={ty,name,path,exactPath,unboxFlag}}lastPath="";len=itemTypes.length;let lastName="";let lastWord="";for(let i=0;i=descShard.len&&!this.searchIndexEmptyDesc.get(crate).contains(bitIndex)){descShard={crate,shard:descShard.shard+1,start:descShard.start+descShard.len,len:itemDescShardDecoder.next(),promise:null,resolve:null,};descIndex=0;descShardList.push(descShard)}const name=itemNames[i]===""?lastName:itemNames[i];const word=itemNames[i]===""?lastWord:itemNames[i].toLowerCase();const path=itemPaths.has(i)?itemPaths.get(i):lastPath;const paramNames=itemParamNames.has(i)?itemParamNames.get(i).split(","):lastParamNames;const type=itemFunctionDecoder.next();if(type!==null){if(type){const fp=this.functionTypeFingerprint.subarray(id*4,(id+1)*4);for(const t of type.inputs){this.buildFunctionTypeFingerprint(t,fp)}for(const t of type.output){this.buildFunctionTypeFingerprint(t,fp)}for(const w of type.where_clause){for(const t of w){this.buildFunctionTypeFingerprint(t,fp)}}}}const itemParentIdx=itemParentIdxDecoder.next();const row={crate,ty:itemTypes.charCodeAt(i)-65,name,path,descShard,descIndex,exactPath:itemReexports.has(i)?itemPaths.get(itemReexports.get(i)):path,parent:itemParentIdx>0?paths[itemParentIdx-1]:undefined,type,paramNames,id,word,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),bitIndex,implDisambiguator:implDisambiguator.has(i)?implDisambiguator.get(i):null,};id+=1;searchIndex.push(row);lastPath=row.path;lastParamNames=row.paramNames;if(!this.searchIndexEmptyDesc.get(crate).contains(bitIndex)){descIndex+=1}lastName=name;lastWord=word}if(aliases){const currentCrateAliases=new Map();this.ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!Object.prototype.hasOwnProperty.call(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=itemTypes.length;this.searchState.descShards.set(crate,descShardList)}this.TYPES_POOL=new Map();return searchIndex}static parseQuery(userQuery){function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}for(const constraints of elem.bindings.values()){for(const constraint of constraints){convertTypeFilterOnElem(constraint)}}}function newParsedQuery(userQuery){return{userQuery,elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,hasReturnArrow:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,typeFingerprint:new Uint32Array(4),}}function parseInput(query,parserState){let foundStopChar=true;while(parserState.pos"){if(isReturnArrow(parserState)){query.hasReturnArrow=true;break}throw["Unexpected ",c," (did you mean ","->","?)"]}else if(parserState.pos>0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}throw["Unexpected ",c]}else if(c===" "){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;getFilteredNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}async execQuery(parsedQuery,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}const buildHrefAndPath=item=>{let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;let exactPath=item.exactPath;if(type==="mod"){displayPath=path+"::";href=this.rootPath+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=this.rootPath+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=this.rootPath+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=this.rootPath+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor=type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;exactPath=`${myparent.exactPath}::${myparent.name}`;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}if(item.implDisambiguator!==null){anchor=item.implDisambiguator+"/"+anchor}href=this.rootPath+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html#"+anchor}else{displayPath=item.path+"::";href=this.rootPath+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href,`${exactPath}::${name}`]};function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}const transformResults=(results,typeInfo)=>{const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const res=buildHrefAndPath(this.searchIndex[result.id]);const obj=Object.assign({dist:result.dist,displayPath:pathSplitter(res[0]),},this.searchIndex[result.id]);obj.fullPath=res[2]+"|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}if(obj.ty===TY_IMPORT&&duplicates.has(res[2])){continue}if(duplicates.has(res[2]+"|"+TY_IMPORT)){continue}duplicates.add(obj.fullPath);duplicates.add(res[2]);if(typeInfo!==null){obj.displayTypeSignature=this.formatDisplayTypeSignature(obj,typeInfo)}obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out};this.formatDisplayTypeSignature=async(obj,typeInfo)=>{let fnInputs=null;let fnOutput=null;let mgens=null;if(typeInfo!=="elems"&&typeInfo!=="returned"){fnInputs=unifyFunctionTypes(obj.type.inputs,parsedQuery.elems,obj.type.where_clause,null,mgensScratch=>{fnOutput=unifyFunctionTypes(obj.type.output,parsedQuery.returned,obj.type.where_clause,mgensScratch,mgensOut=>{mgens=mgensOut;return true},0,);return!!fnOutput},0,)}else{const arr=typeInfo==="elems"?obj.type.inputs:obj.type.output;const highlighted=unifyFunctionTypes(arr,parsedQuery.elems,obj.type.where_clause,null,mgensOut=>{mgens=mgensOut;return true},0,);if(typeInfo==="elems"){fnInputs=highlighted}else{fnOutput=highlighted}}if(!fnInputs){fnInputs=obj.type.inputs}if(!fnOutput){fnOutput=obj.type.output}const mappedNames=new Map();const whereClause=new Map();const fnParamNames=obj.paramNames;const queryParamNames=[];const remapQuery=queryElem=>{if(queryElem.id<0){queryParamNames[-1-queryElem.id]=queryElem.name}if(queryElem.generics.length>0){queryElem.generics.forEach(remapQuery)}if(queryElem.bindings.size>0){[...queryElem.bindings.values()].flat().forEach(remapQuery)}};parsedQuery.elems.forEach(remapQuery);parsedQuery.returned.forEach(remapQuery);const pushText=(fnType,result)=>{if(!!(result.length%2)===!!fnType.highlighted){result.push("")}else if(result.length===0&&!!fnType.highlighted){result.push("");result.push("")}result[result.length-1]+=fnType.name};const writeHof=(fnType,result)=>{const hofOutput=fnType.bindings.get(this.typeNameIdOfOutput)||[];const hofInputs=fnType.generics;pushText(fnType,result);pushText({name:" (",highlighted:false},result);let needsComma=false;for(const fnType of hofInputs){if(needsComma){pushText({name:", ",highlighted:false},result)}needsComma=true;writeFn(fnType,result)}pushText({name:hofOutput.length===0?")":") -> ",highlighted:false,},result);if(hofOutput.length>1){pushText({name:"(",highlighted:false},result)}needsComma=false;for(const fnType of hofOutput){if(needsComma){pushText({name:", ",highlighted:false},result)}needsComma=true;writeFn(fnType,result)}if(hofOutput.length>1){pushText({name:")",highlighted:false},result)}};const writeSpecialPrimitive=(fnType,result)=>{if(fnType.id===this.typeNameIdOfArray||fnType.id===this.typeNameIdOfSlice||fnType.id===this.typeNameIdOfTuple||fnType.id===this.typeNameIdOfUnit){const[ob,sb]=fnType.id===this.typeNameIdOfArray||fnType.id===this.typeNameIdOfSlice?["[","]"]:["(",")"];pushText({name:ob,highlighted:fnType.highlighted},result);onEachBtwn(fnType.generics,nested=>writeFn(nested,result),()=>pushText({name:", ",highlighted:false},result),);pushText({name:sb,highlighted:fnType.highlighted},result);return true}else if(fnType.id===this.typeNameIdOfReference){pushText({name:"&",highlighted:fnType.highlighted},result);let prevHighlighted=false;onEachBtwn(fnType.generics,value=>{prevHighlighted=value.highlighted;writeFn(value,result)},value=>pushText({name:" ",highlighted:prevHighlighted&&value.highlighted,},result),);return true}else if(fnType.id===this.typeNameIdOfFn){writeHof(fnType,result);return true}return false};const writeFn=(fnType,result)=>{if(fnType.id<0){if(fnParamNames[-1-fnType.id]===""){for(const nested of fnType.generics){writeFn(nested,result)}return}else if(mgens){for(const[queryId,fnId]of mgens){if(fnId===fnType.id){mappedNames.set(queryParamNames[-1-queryId],fnParamNames[-1-fnType.id],)}}}pushText({name:fnParamNames[-1-fnType.id],highlighted:!!fnType.highlighted,},result);const where=[];onEachBtwn(fnType.generics,nested=>writeFn(nested,where),()=>pushText({name:" + ",highlighted:false},where),);if(where.length>0){whereClause.set(fnParamNames[-1-fnType.id],where)}}else{if(fnType.ty===TY_PRIMITIVE){if(writeSpecialPrimitive(fnType,result)){return}}else if(fnType.ty===TY_TRAIT&&(fnType.id===this.typeNameIdOfFn||fnType.id===this.typeNameIdOfFnMut||fnType.id===this.typeNameIdOfFnOnce)){writeHof(fnType,result);return}pushText(fnType,result);let hasBindings=false;if(fnType.bindings.size>0){onEachBtwn(fnType.bindings,([key,values])=>{const name=this.assocTypeIdNameMap.get(key);if(values.length===1&&values[0].id<0&&`${fnType.name}::${name}`===fnParamNames[-1-values[0].id]){for(const value of values){writeFn(value,[])}return true}if(!hasBindings){hasBindings=true;pushText({name:"<",highlighted:false},result)}pushText({name,highlighted:false},result);pushText({name:values.length!==1?"=(":"=",highlighted:false,},result);onEachBtwn(values||[],value=>writeFn(value,result),()=>pushText({name:" + ",highlighted:false},result),);if(values.length!==1){pushText({name:")",highlighted:false},result)}},()=>pushText({name:", ",highlighted:false},result),)}if(fnType.generics.length>0){pushText({name:hasBindings?", ":"<",highlighted:false},result)}onEachBtwn(fnType.generics,value=>writeFn(value,result),()=>pushText({name:", ",highlighted:false},result),);if(hasBindings||fnType.generics.length>0){pushText({name:">",highlighted:false},result)}}};const type=[];onEachBtwn(fnInputs,fnType=>writeFn(fnType,type),()=>pushText({name:", ",highlighted:false},type),);pushText({name:" -> ",highlighted:false},type);onEachBtwn(fnOutput,fnType=>writeFn(fnType,type),()=>pushText({name:", ",highlighted:false},type),);return{type,mappedNames,whereClause}};const sortResults=async(results,typeInfo,preferredCrate)=>{const userQuery=parsedQuery.userQuery;const normalizedUserQuery=parsedQuery.userQuery.toLowerCase();const result_list=[];for(const result of results.values()){result.item=this.searchIndex[result.id];result.word=this.searchIndex[result.id].word;result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.item.name!==userQuery);b=(bbb.item.name!==userQuery);if(a!==b){return a-b}a=(aaa.word!==normalizedUserQuery);b=(bbb.word!==normalizedUserQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=this.searchIndexDeprecated.get(aaa.item.crate).contains(aaa.item.bitIndex);b=this.searchIndexDeprecated.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=this.searchIndexEmptyDesc.get(aaa.item.crate).contains(aaa.item.bitIndex);b=this.searchIndexEmptyDesc.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});return transformResults(result_list,typeInfo)};function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return null}const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return solutionCb(mgens)?fnTypesIn:null}if(!fnTypesIn||fnTypesIn.length===0){return null}const ql=queryElems.length;const fl=fnTypesIn.length;if(ql===1&&queryElems[0].generics.length===0&&queryElems[0].bindings.size===0){const queryElem=queryElems[0];for(const[i,fnType]of fnTypesIn.entries()){if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}if(fnType.id<0&&queryElem.id<0){if(mgens&&mgens.has(queryElem.id)&&mgens.get(queryElem.id)!==fnType.id){continue}const mgensScratch=new Map(mgens);mgensScratch.set(queryElem.id,fnType.id);if(!solutionCb||solutionCb(mgensScratch)){const highlighted=[...fnTypesIn];highlighted[i]=Object.assign({highlighted:true,},fnType,{generics:whereClause[-1-fnType.id],});return highlighted}}else if(solutionCb(mgens?new Map(mgens):null)){const highlighted=[...fnTypesIn];highlighted[i]=Object.assign({highlighted:true,},fnType,{generics:unifyGenericTypes(fnType.generics,queryElem.generics,whereClause,mgens?new Map(mgens):null,solutionCb,unboxingDepth,)||fnType.generics,});return highlighted}}for(const[i,fnType]of fnTypesIn.entries()){if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}if(fnType.id<0){const highlightedGenerics=unifyFunctionTypes(whereClause[(-fnType.id)-1],queryElems,whereClause,mgens,solutionCb,unboxingDepth+1,);if(highlightedGenerics){const highlighted=[...fnTypesIn];highlighted[i]=Object.assign({highlighted:true,},fnType,{generics:highlightedGenerics,});return highlighted}}else{const highlightedGenerics=unifyFunctionTypes([...Array.from(fnType.bindings.values()).flat(),...fnType.generics],queryElems,whereClause,mgens?new Map(mgens):null,solutionCb,unboxingDepth+1,);if(highlightedGenerics){const highlighted=[...fnTypesIn];highlighted[i]=Object.assign({},fnType,{generics:highlightedGenerics,bindings:new Map([...fnType.bindings.entries()].map(([k,v])=>{return[k,highlightedGenerics.splice(0,v.length)]})),});return highlighted}}}return false}const fnTypes=fnTypesIn.slice();const flast=fl-1;const qlast=ql-1;const queryElem=queryElems[qlast];let queryElemsTmp=null;for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(queryElem.id)&&mgensScratch.get(queryElem.id)!==fnType.id){continue}mgensScratch.set(queryElem.id,fnType.id)}else{mgensScratch=mgens}fnTypes[i]=fnTypes[flast];fnTypes.length=flast;if(!queryElemsTmp){queryElemsTmp=queryElems.slice(0,qlast)}let unifiedGenerics=[];let unifiedGenericsMgens=null;const passesUnification=unifyFunctionTypes(fnTypes,queryElemsTmp,whereClause,mgensScratch,mgensScratch=>{if(fnType.generics.length===0&&queryElem.generics.length===0&&fnType.bindings.size===0&&queryElem.bindings.size===0){return solutionCb(mgensScratch)}const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch,unboxingDepth,);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){unifiedGenerics=unifyGenericTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb,unboxingDepth,);if(unifiedGenerics!==null){unifiedGenericsMgens=simplifiedMgens;return true}}return false},unboxingDepth,);if(passesUnification){passesUnification.length=fl;passesUnification[flast]=passesUnification[i];passesUnification[i]=Object.assign({},fnType,{highlighted:true,generics:unifiedGenerics,bindings:new Map([...fnType.bindings.entries()].map(([k,v])=>{return[k,queryElem.bindings.has(k)?unifyFunctionTypes(v,queryElem.bindings.get(k),whereClause,unifiedGenericsMgens,solutionCb,unboxingDepth,):unifiedGenerics.splice(0,v.length)]})),});return passesUnification}fnTypes[flast]=fnTypes[i];fnTypes[i]=fnType;fnTypes.length=fl}for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;const bindings=fnType.bindings?Array.from(fnType.bindings.values()).flat():[];const passesUnification=unifyFunctionTypes(fnTypes.toSpliced(i,1,...bindings,...generics),queryElems,whereClause,mgens,solutionCb,unboxingDepth+1,);if(passesUnification){const highlightedGenerics=passesUnification.slice(i,i+generics.length+bindings.length,);const highlightedFnType=Object.assign({},fnType,{generics:highlightedGenerics,bindings:new Map([...fnType.bindings.entries()].map(([k,v])=>{return[k,highlightedGenerics.splice(0,v.length)]})),});return passesUnification.toSpliced(i,generics.length+bindings.length,highlightedFnType,)}}return null}function unifyGenericTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return null}const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return solutionCb(mgens)?fnTypesIn:null}if(!fnTypesIn||fnTypesIn.length===0){return null}const fnType=fnTypesIn[0];const queryElem=queryElems[0];if(unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){if(fnType.id<0&&queryElem.id<0){if(!mgens||!mgens.has(queryElem.id)||mgens.get(queryElem.id)===fnType.id){const mgensScratch=new Map(mgens);mgensScratch.set(queryElem.id,fnType.id);const fnTypesRemaining=unifyGenericTypes(fnTypesIn.slice(1),queryElems.slice(1),whereClause,mgensScratch,solutionCb,unboxingDepth,);if(fnTypesRemaining){const highlighted=[fnType,...fnTypesRemaining];highlighted[0]=Object.assign({highlighted:true,},fnType,{generics:whereClause[-1-fnType.id],});return highlighted}}}else{let unifiedGenerics;const fnTypesRemaining=unifyGenericTypes(fnTypesIn.slice(1),queryElems.slice(1),whereClause,mgens,mgensScratch=>{const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch,unboxingDepth,);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){unifiedGenerics=unifyGenericTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb,unboxingDepth,);if(unifiedGenerics!==null){return true}}},unboxingDepth,);if(fnTypesRemaining){const highlighted=[fnType,...fnTypesRemaining];highlighted[0]=Object.assign({highlighted:true,},fnType,{generics:unifiedGenerics||fnType.generics,});return highlighted}}}if(unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){let highlightedRemaining;if(fnType.id<0){const highlightedGenerics=unifyFunctionTypes(whereClause[(-fnType.id)-1],[queryElem],whereClause,mgens,mgensScratch=>{const hl=unifyGenericTypes(fnTypesIn.slice(1),queryElems.slice(1),whereClause,mgensScratch,solutionCb,unboxingDepth,);if(hl){highlightedRemaining=hl}return hl},unboxingDepth+1,);if(highlightedGenerics){return[Object.assign({highlighted:true,},fnType,{generics:highlightedGenerics,}),...highlightedRemaining]}}else{const highlightedGenerics=unifyGenericTypes([...Array.from(fnType.bindings.values()).flat(),...fnType.generics,],[queryElem],whereClause,mgens,mgensScratch=>{const hl=unifyGenericTypes(fnTypesIn.slice(1),queryElems.slice(1),whereClause,mgensScratch,solutionCb,unboxingDepth,);if(hl){highlightedRemaining=hl}return hl},unboxingDepth+1,);if(highlightedGenerics){return[Object.assign({},fnType,{generics:highlightedGenerics,bindings:new Map([...fnType.bindings.entries()].map(([k,v])=>{return[k,highlightedGenerics.splice(0,v.length)]})),}),...highlightedRemaining]}}}return null}const unifyFunctionTypeIsMatchCandidate=(fnType,queryElem,mgensIn)=>{if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgensIn&&mgensIn.has(queryElem.id)&&mgensIn.get(queryElem.id)!==fnType.id){return false}return true}else{if(queryElem.id===this.typeNameIdOfArrayOrSlice&&(fnType.id===this.typeNameIdOfSlice||fnType.id===this.typeNameIdOfArray)){}else if(queryElem.id===this.typeNameIdOfTupleOrUnit&&(fnType.id===this.typeNameIdOfTuple||fnType.id===this.typeNameIdOfUnit)){}else if(queryElem.id===this.typeNameIdOfHof&&(fnType.id===this.typeNameIdOfFn||fnType.id===this.typeNameIdOfFnMut||fnType.id===this.typeNameIdOfFnOnce)){}else if(fnType.id!==queryElem.id||queryElem.id===null){return false}if((fnType.generics.length+fnType.bindings.size)===0&&queryElem.generics.length!==0){return false}if(fnType.bindings.size0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i0){let mgensSolutionSet=[mgensIn];for(const[name,constraints]of queryElem.bindings.entries()){if(mgensSolutionSet.length===0){return false}if(!fnType.bindings.has(name)){return false}const fnTypeBindings=fnType.bindings.get(name);mgensSolutionSet=mgensSolutionSet.flatMap(mgens=>{const newSolutions=[];unifyFunctionTypes(fnTypeBindings,constraints,whereClause,mgens,newMgens=>{newSolutions.push(newMgens);return false},unboxingDepth,);return newSolutions})}if(mgensSolutionSet.length===0){return false}const binds=Array.from(fnType.bindings.entries()).flatMap(entry=>{const[name,constraints]=entry;if(queryElem.bindings.has(name)){return[]}else{return constraints}});if(simplifiedGenerics.length>0){simplifiedGenerics=[...binds,...simplifiedGenerics]}else{simplifiedGenerics=binds}return{simplifiedGenerics,mgens:mgensSolutionSet}}return{simplifiedGenerics,mgens:[mgensIn]}}function unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(fnType.id<0){if(!whereClause){return false}return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause,mgens,unboxingDepth,)}else if(fnType.unboxFlag&&(fnType.generics.length>0||fnType.bindings.size>0)){const simplifiedGenerics=[...fnType.generics,...Array.from(fnType.bindings.values()).flat(),];return checkIfInList(simplifiedGenerics,queryElem,whereClause,mgens,unboxingDepth,)}return false}function checkIfInList(list,elem,whereClause,mgens,unboxingDepth){for(const entry of list){if(checkType(entry,elem,whereClause,mgens,unboxingDepth)){return true}}return false}const checkType=(row,elem,whereClause,mgens,unboxingDepth)=>{if(unboxingDepth>=UNBOXING_LIMIT){return false}if(row.id>0&&elem.id>0&&elem.pathWithoutLast.length===0&&row.generics.length===0&&elem.generics.length===0&&row.bindings.size===0&&elem.bindings.size===0&&elem.id!==this.typeNameIdOfArrayOrSlice&&elem.id!==this.typeNameIdOfHof&&elem.id!==this.typeNameIdOfTupleOrUnit){return row.id===elem.id&&typePassesFilter(elem.typeFilter,row.ty)}else{return unifyFunctionTypes([row],[elem],whereClause,mgens,()=>true,unboxingDepth,)}};const checkTypeMgensForConflict=mgens=>{if(!mgens){return true}const fnTypes=new Set();for(const[_qid,fid]of mgens){if(fnTypes.has(fid)){return false}fnTypes.add(fid)}return true};function checkPath(contains,ty){if(contains.length===0){return 0}const maxPathEditDistance=Math.floor(contains.reduce((acc,next)=>acc+next.length,0)/3,);let ret_dist=maxPathEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;pathiter:for(let i=length-clength;i>=0;i-=1){let dist_total=0;for(let x=0;xmaxPathEditDistance){continue pathiter}dist_total+=dist}}ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}return ret_dist>maxPathEditDistance?null:ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,descShard:item.descShard,descIndex:item.descIndex,exactPath:item.exactPath,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,bitIndex:item.bitIndex,implDisambiguator:item.implDisambiguator,}}const handleAliases=async(ret,query,filterCrates,currentCrate)=>{const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(this.ALIASES.has(filterCrates)&&this.ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=this.ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(this.searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of this.ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(this.searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{return this.searchIndexEmptyDesc.get(alias.crate).contains(alias.bitIndex)?"":this.searchState.loadDesc(alias)};const[crateDescs,descs]=await Promise.all([Promise.all(crateAliases.map(fetchDesc)),Promise.all(aliases.map(fetchDesc)),]);const pushFunc=alias=>{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach((alias,i)=>{alias.desc=descs[i]});aliases.forEach(pushFunc);crateAliases.forEach((alias,i)=>{alias.desc=crateDescs[i]});crateAliases.forEach(pushFunc)};function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){if(dist<=maxEditDistance||index!==-1){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance,){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let path_dist=0;const fullId=row.id;const tfpDist=compareTypeFingerprints(fullId,parsedQuery.typeFingerprint,);if(tfpDist!==null){const in_args=row.type&&row.type.inputs&&checkIfInList(row.type.inputs,elem,row.type.where_clause,null,0);const returned=row.type&&row.type.output&&checkIfInList(row.type.output,elem,row.type.where_clause,null,0);if(in_args){results_in_args.max_dist=Math.max(results_in_args.max_dist||0,tfpDist);const maxDist=results_in_args.sizenormalizedIndex&&normalizedIndex!==-1)){index=normalizedIndex}if(elem.fullPath.length>1){path_dist=checkPath(elem.pathWithoutLast,row);if(path_dist===null){return}}if(parsedQuery.literalSearch){if(row.word===elem.pathLast){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}const dist=editDistance(row.normalizedName,elem.normalizedPathLast,maxEditDistance);if(index===-1&&dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}const tfpDist=compareTypeFingerprints(row.id,parsedQuery.typeFingerprint,);if(tfpDist===null){return}if(results.size>=MAX_RESULTS&&tfpDist>results.max_dist){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens,checkTypeMgensForConflict,0,)},0,)){return}results.max_dist=Math.max(results.max_dist||0,tfpDist);addIntoResults(results,row.id,pos,0,tfpDist,0,Number.MAX_VALUE)}const compareTypeFingerprints=(fullId,queryFingerprint)=>{const fh0=this.functionTypeFingerprint[fullId*4];const fh1=this.functionTypeFingerprint[(fullId*4)+1];const fh2=this.functionTypeFingerprint[(fullId*4)+2];const[qh0,qh1,qh2]=queryFingerprint;const[in0,in1,in2]=[fh0&qh0,fh1&qh1,fh2&qh2];if((in0 ^ qh0)||(in1 ^ qh1)||(in2 ^ qh2)){return null}return this.functionTypeFingerprint[(fullId*4)+3]};const innerRunQuery=()=>{const queryLen=parsedQuery.elems.reduce((acc,next)=>acc+next.pathLast.length,0)+parsedQuery.returned.reduce((acc,next)=>acc+next.pathLast.length,0);const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();const convertNameToId=(elem,isAssocType)=>{const loweredName=elem.pathLast.toLowerCase();if(this.typeNameIdMap.has(loweredName)&&(isAssocType||!this.typeNameIdMap.get(loweredName).assocOnly)){elem.id=this.typeNameIdMap.get(loweredName).id}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,{id,assocOnly}]of this.typeNameIdMap){const dist=Math.min(editDistance(name,loweredName,maxEditDistance),editDistance(name,elem.normalizedPathLast,maxEditDistance),);if(dist<=matchDist&&dist<=maxEditDistance&&(isAssocType||!assocOnly)){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0&&elem.bindings.size===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.normalizedPathLast)){elem.id=genericSymbols.get(elem.normalizedPathLast)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.normalizedPathLast,elem.id)}if(elem.typeFilter===-1&&elem.normalizedPathLast.length>=3){const maxPartDistance=Math.floor(elem.normalizedPathLast.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of this.typeNameIdMap.keys()){const dist=editDistance(name,elem.normalizedPathLast,maxPartDistance,);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}elem.bindings=new Map(Array.from(elem.bindings.entries()).map(entry=>{const[name,constraints]=entry;if(!this.typeNameIdMap.has(name)){parsedQuery.error=["Type parameter ",name," does not exist",];return[null,[]]}for(const elem2 of constraints){convertNameToId(elem2)}return[this.typeNameIdMap.get(name).id,constraints]}),)};for(const elem of parsedQuery.elems){convertNameToId(elem);this.buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint)}for(const elem of parsedQuery.returned){convertNameToId(elem);this.buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint)}if(parsedQuery.foundElems===1&&!parsedQuery.hasReturnArrow){if(parsedQuery.elems.length===1){const elem=parsedQuery.elems[0];const length=this.searchIndex.length;for(let i=0,nSearchIndex=length;i0){const sortQ=(a,b)=>{const ag=a.generics.length===0&&a.bindings.size===0;const bg=b.generics.length===0&&b.bindings.size===0;if(ag!==bg){return ag-bg}const ai=a.id>0;const bi=b.id>0;return ai-bi};parsedQuery.elems.sort(sortQ);parsedQuery.returned.sort(sortQ);for(let i=0,nSearchIndex=this.searchIndex.length;i{const descs=await Promise.all(list.map(result=>{return this.searchIndexEmptyDesc.get(result.crate).contains(result.bitIndex)?"":this.searchState.loadDesc(result)}));for(const[i,result]of list.entries()){result.desc=descs[i]}}));if(parsedQuery.error!==null&&ret.others.length!==0){ret.query.error=null}return ret}}let rawSearchIndex;let docSearch;const longItemTypes=["keyword","primitive type","module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","assoc type","constant","assoc const","union","foreign type","existential type","attribute macro","derive macro","trait alias",];let currentResults;function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||iter===1);iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&window.searchIndex.has(elem.value)){return elem.value}return null}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}async function addTab(array,query,display){const extraClass=display?" active":"";const output=document.createElement(array.length===0&&query.error===null?"div":"ul",);if(array.length>0){output.className="search-results "+extraClass;const lis=Promise.all(array.map(async item=>{const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("span");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=`
    \ -${item.alias} - see \ -
    `}resultName.insertAdjacentHTML("beforeend",`
    ${alias}\ -${item.displayPath}${name}\ -
    `);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);if(item.displayTypeSignature){const{type,mappedNames,whereClause}=await item.displayTypeSignature;const displayType=document.createElement("div");type.forEach((value,index)=>{if(index%2!==0){const highlight=document.createElement("strong");highlight.appendChild(document.createTextNode(value));displayType.appendChild(highlight)}else{displayType.appendChild(document.createTextNode(value))}});if(mappedNames.size>0||whereClause.size>0){let addWhereLineFn=()=>{const line=document.createElement("div");line.className="where";line.appendChild(document.createTextNode("where"));displayType.appendChild(line);addWhereLineFn=()=>{}};for(const[qname,name]of mappedNames){if(name===qname){continue}addWhereLineFn();const line=document.createElement("div");line.className="where";line.appendChild(document.createTextNode(` ${qname} matches `));const lineStrong=document.createElement("strong");lineStrong.appendChild(document.createTextNode(name));line.appendChild(lineStrong);displayType.appendChild(line)}for(const[name,innerType]of whereClause){if(innerType.length<=1){continue}addWhereLineFn();const line=document.createElement("div");line.className="where";line.appendChild(document.createTextNode(` ${name}: `));innerType.forEach((value,index)=>{if(index%2!==0){const highlight=document.createElement("strong");highlight.appendChild(document.createTextNode(value));line.appendChild(highlight)}else{line.appendChild(document.createTextNode(value))}});displayType.appendChild(line)}}displayType.className="type-signature";link.appendChild(displayType)}link.appendChild(description);return link}));lis.then(lis=>{for(const li of lis){output.appendChild(li)}})}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return output}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return""}return""}async function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=DocSearch.parseQuery(searchState.input.value)}currentResults=results.query.userQuery;let currentTab=searchState.currentTab;if((currentTab===0&&results.others.length===0)||(currentTab===1&&results.in_args.length===0)||(currentTab===2&&results.returned.length===0)){if(results.others.length!==0){currentTab=0}else if(results.in_args.length){currentTab=1}else if(results.returned.length){currentTab=2}}let crates="";if(rawSearchIndex.size>1){crates="
    in 
    "+"
    "}let output=`
    \ -

    Results

    ${crates}
    `;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

    Query parser error: "${error.join("")}".

    `;output+="
    "+makeTabHeader(0,"In Names",results.others.length)+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",results.others.length)+makeTabHeader(1,"In Parameters",results.in_args.length)+makeTabHeader(2,"In Return Types",results.returned.length)+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,results.others.length)+"
    ";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

    "+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

    `}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="

    "+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.

    `}const[ret_others,ret_in_args,ret_returned]=await Promise.all([addTab(results.others,results.query,currentTab===0),addTab(results.in_args,results.query,currentTab===1),addTab(results.returned,results.query,currentTab===2),]);const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others);resultsElem.appendChild(ret_in_args);resultsElem.appendChild(ret_returned);search.innerHTML=output;if(searchState.rustdocToolbar){search.querySelector(".main-heading").appendChild(searchState.rustdocToolbar)}const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}async function search(forced){const query=DocSearch.parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="\""+query.userQuery+"\" Search - Rust";updateSearchHistory(buildUrl(query.userQuery,filterCrates));await showResults(await docSearch.execQuery(query,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;e.preventDefault();search()}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(true)}function initSearch(searchIndx){rawSearchIndex=searchIndx;if(typeof window!=="undefined"){docSearch=new DocSearch(rawSearchIndex,ROOT_PATH,searchState);registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}else if(typeof exports!=="undefined"){docSearch=new DocSearch(rawSearchIndex,ROOT_PATH,searchState);exports.docSearch=docSearch;exports.parseQuery=DocSearch.parseQuery}}if(typeof exports!=="undefined"){exports.initSearch=initSearch}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch(new Map())} \ No newline at end of file