diff --git a/calculator/steenrod_calculator_wasm_bg.wasm b/calculator/steenrod_calculator_wasm_bg.wasm index 76bee743d..8a78c179f 100644 Binary files a/calculator/steenrod_calculator_wasm_bg.wasm and b/calculator/steenrod_calculator_wasm_bg.wasm differ diff --git a/docs/algebra/algebra/milnor_algebra/struct.MilnorProfile.html b/docs/algebra/algebra/milnor_algebra/struct.MilnorProfile.html index e16888c9a..7952e97a4 100644 --- a/docs/algebra/algebra/milnor_algebra/struct.MilnorProfile.html +++ b/docs/algebra/algebra/milnor_algebra/struct.MilnorProfile.html @@ -34,10 +34,10 @@

Implementations§

source§

impl MilnorProfile

source

pub fn is_trivial(&self) -> bool

source

pub fn get_p_part(&self, i: usize) -> PPartEntry

source

pub fn is_valid(&self) -> bool

Checks whether the profile function is valid

source

pub fn is_an(&self, generic: bool) -> bool

Whether the profile is that of A(n). This is relevant since A(n) is generated by P(p^n) and β but a general subalgebra is not.

-

Trait Implementations§

source§

impl Debug for MilnorProfile

source§

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

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

impl Default for MilnorProfile

source§

fn default() -> Self

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

impl<'de> Deserialize<'de> for MilnorProfile

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 PartialEq for MilnorProfile

source§

fn eq(&self, other: &MilnorProfile) -> 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 MilnorProfile

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
source§

impl Eq for MilnorProfile

source§

impl StructuralPartialEq for MilnorProfile

Auto Trait Implementations§

§

impl Freeze for MilnorProfile

§

impl RefUnwindSafe for MilnorProfile

§

impl Send for MilnorProfile

§

impl Sync for MilnorProfile

§

impl Unpin for MilnorProfile

§

impl UnwindSafe for MilnorProfile

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Debug for MilnorProfile

source§

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

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

impl Default for MilnorProfile

source§

fn default() -> Self

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

impl<'de> Deserialize<'de> for MilnorProfile

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 PartialEq for MilnorProfile

source§

fn eq(&self, other: &MilnorProfile) -> 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 MilnorProfile

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
source§

impl Eq for MilnorProfile

source§

impl StructuralPartialEq for MilnorProfile

Auto Trait Implementations§

§

impl Freeze for MilnorProfile

§

impl RefUnwindSafe for MilnorProfile

§

impl Send for MilnorProfile

§

impl Sync for MilnorProfile

§

impl Unpin for MilnorProfile

§

impl UnwindSafe for MilnorProfile

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
§

impl<Q, K> Equivalent<K> for Q
where @@ -61,5 +61,5 @@ otherwise. Read more

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

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

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file + V: MultiLane<T>,
§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/algebra/algebra/steenrod_algebra/struct.AlgebraSpec.html b/docs/algebra/algebra/steenrod_algebra/struct.AlgebraSpec.html index 279b0d335..823567b1e 100644 --- a/docs/algebra/algebra/steenrod_algebra/struct.AlgebraSpec.html +++ b/docs/algebra/algebra/steenrod_algebra/struct.AlgebraSpec.html @@ -27,8 +27,8 @@ p: ValidPrime, algebra: Option<Vec<String>>, profile: Option<MilnorProfile>, -}

Fields§

§p: ValidPrime§algebra: Option<Vec<String>>§profile: Option<MilnorProfile>

Trait Implementations§

source§

impl Debug for AlgebraSpec

source§

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

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

impl<'de> Deserialize<'de> for AlgebraSpec

source§

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

Deserialize this value from the given Serde deserializer. Read more

Auto Trait Implementations§

§

impl Freeze for AlgebraSpec

§

impl RefUnwindSafe for AlgebraSpec

§

impl Send for AlgebraSpec

§

impl Sync for AlgebraSpec

§

impl Unpin for AlgebraSpec

§

impl UnwindSafe for AlgebraSpec

Blanket Implementations§

source§

impl<T> Any for T
where +}

Fields§

§p: ValidPrime§algebra: Option<Vec<String>>§profile: Option<MilnorProfile>

Trait Implementations§

source§

impl Debug for AlgebraSpec

source§

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

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

impl<'de> Deserialize<'de> for AlgebraSpec

source§

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

Deserialize this value from the given Serde deserializer. 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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

@@ -46,5 +46,5 @@ otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

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

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file + V: MultiLane<T>,
§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/algebra/milnor_algebra/struct.MilnorProfile.html b/docs/algebra/milnor_algebra/struct.MilnorProfile.html index 93f9707c0..446e02e45 100644 --- a/docs/algebra/milnor_algebra/struct.MilnorProfile.html +++ b/docs/algebra/milnor_algebra/struct.MilnorProfile.html @@ -34,10 +34,10 @@

Implementations§

source§

impl MilnorProfile

source

pub fn is_trivial(&self) -> bool

source

pub fn get_p_part(&self, i: usize) -> PPartEntry

source

pub fn is_valid(&self) -> bool

Checks whether the profile function is valid

source

pub fn is_an(&self, generic: bool) -> bool

Whether the profile is that of A(n). This is relevant since A(n) is generated by P(p^n) and β but a general subalgebra is not.

-

Trait Implementations§

source§

impl Debug for MilnorProfile

source§

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

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

impl Default for MilnorProfile

source§

fn default() -> Self

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

impl<'de> Deserialize<'de> for MilnorProfile

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 PartialEq for MilnorProfile

source§

fn eq(&self, other: &MilnorProfile) -> 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 MilnorProfile

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
source§

impl Eq for MilnorProfile

source§

impl StructuralPartialEq for MilnorProfile

Auto Trait Implementations§

§

impl Freeze for MilnorProfile

§

impl RefUnwindSafe for MilnorProfile

§

impl Send for MilnorProfile

§

impl Sync for MilnorProfile

§

impl Unpin for MilnorProfile

§

impl UnwindSafe for MilnorProfile

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Debug for MilnorProfile

source§

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

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

impl Default for MilnorProfile

source§

fn default() -> Self

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

impl<'de> Deserialize<'de> for MilnorProfile

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 PartialEq for MilnorProfile

source§

fn eq(&self, other: &MilnorProfile) -> 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 MilnorProfile

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
source§

impl Eq for MilnorProfile

source§

impl StructuralPartialEq for MilnorProfile

Auto Trait Implementations§

§

impl Freeze for MilnorProfile

§

impl RefUnwindSafe for MilnorProfile

§

impl Send for MilnorProfile

§

impl Sync for MilnorProfile

§

impl Unpin for MilnorProfile

§

impl UnwindSafe for MilnorProfile

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
§

impl<Q, K> Equivalent<K> for Q
where @@ -61,5 +61,5 @@ otherwise. Read more

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

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

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file + V: MultiLane<T>,
§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/algebra/module/rpn/struct.RPSpec.html b/docs/algebra/module/rpn/struct.RPSpec.html index f152cdbaf..fee90de0c 100644 --- a/docs/algebra/module/rpn/struct.RPSpec.html +++ b/docs/algebra/module/rpn/struct.RPSpec.html @@ -27,8 +27,8 @@ min: i32, clear_bottom: Option<bool>, max: Option<i32>, -}

Fields§

§min: i32§clear_bottom: Option<bool>§max: Option<i32>

Trait Implementations§

source§

impl Debug for RPSpec

source§

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

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

impl<'de> Deserialize<'de> for RPSpec

source§

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

Deserialize this value from the given Serde deserializer. Read more

Auto Trait Implementations§

§

impl Freeze for RPSpec

§

impl RefUnwindSafe for RPSpec

§

impl Send for RPSpec

§

impl Sync for RPSpec

§

impl Unpin for RPSpec

§

impl UnwindSafe for RPSpec

Blanket Implementations§

source§

impl<T> Any for T
where +}

Fields§

§min: i32§clear_bottom: Option<bool>§max: Option<i32>

Trait Implementations§

source§

impl Debug for RPSpec

source§

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

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

impl<'de> Deserialize<'de> for RPSpec

source§

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

Deserialize this value from the given Serde deserializer. Read more

Auto Trait Implementations§

§

impl Freeze for RPSpec

§

impl RefUnwindSafe for RPSpec

§

impl Send for RPSpec

§

impl Sync for RPSpec

§

impl Unpin for RPSpec

§

impl UnwindSafe for RPSpec

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

@@ -46,5 +46,5 @@ otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

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

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file + V: MultiLane<T>,
§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/bivec/struct.BiVec.html b/docs/bivec/struct.BiVec.html index 6d71bd2c4..1d99f4603 100644 --- a/docs/bivec/struct.BiVec.html +++ b/docs/bivec/struct.BiVec.html @@ -65,11 +65,11 @@
§Example
let (x, y) = v.split_borrow_mut(3, 2); assert_eq!(*x, 2); assert_eq!(*y, 5); -
source

pub fn range(&self) -> Range<i32>

Trait Implementations§

source§

impl<T: Clone> Clone for BiVec<T>

source§

fn clone(&self) -> BiVec<T>

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<T: Debug> Debug for BiVec<T>

source§

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

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

impl<T> Default for BiVec<T>

source§

fn default() -> Self

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

impl<'de, T: Deserialize<'de>> Deserialize<'de> for BiVec<T>

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<A> Extend<A> for BiVec<A>

source§

fn extend<T>(&mut self, iter: T)
where +

source

pub fn range(&self) -> Range<i32>

Trait Implementations§

source§

impl<T: Clone> Clone for BiVec<T>

source§

fn clone(&self) -> BiVec<T>

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<T: Debug> Debug for BiVec<T>

source§

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

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

impl<T> Default for BiVec<T>

source§

fn default() -> Self

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

impl<'de, T: Deserialize<'de>> Deserialize<'de> for BiVec<T>

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<A> Extend<A> for BiVec<A>

source§

fn extend<T>(&mut self, iter: T)
where T: IntoIterator<Item = A>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl<T> Index<i32> for BiVec<T>

source§

type Output = T

The returned type after indexing.
source§

fn index(&self, i: i32) -> &T

Performs the indexing (container[index]) operation. Read more
source§

impl<T> IndexMut<i32> for BiVec<T>

source§

fn index_mut(&mut self, i: i32) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<'a, T> IntoIterator for &'a BiVec<T>

source§

type IntoIter = Iter<'a, T>

Which kind of iterator are we turning this into?
source§

type Item = &'a T

The type of the elements being iterated over.
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<'a, T> IntoIterator for &'a mut BiVec<T>

source§

type IntoIter = IterMut<'a, T>

Which kind of iterator are we turning this into?
source§

type Item = &'a mut T

The type of the elements being iterated over.
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<T> IntoIterator for BiVec<T>

source§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
source§

type Item = T

The type of the elements being iterated over.
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<T: PartialEq> PartialEq for BiVec<T>

source§

fn eq(&self, other: &BiVec<T>) -> 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<T: Serialize> Serialize for BiVec<T>

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
source§

impl<T: Eq> Eq for BiVec<T>

source§

impl<T> StructuralPartialEq for BiVec<T>

Auto Trait Implementations§

§

impl<T> Freeze for BiVec<T>

§

impl<T> RefUnwindSafe for BiVec<T>
where +and should not be overridden without very good reason.

source§

impl<T: Serialize> Serialize for BiVec<T>

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
source§

impl<T: Eq> Eq for BiVec<T>

source§

impl<T> StructuralPartialEq for BiVec<T>

Auto Trait Implementations§

§

impl<T> Freeze for BiVec<T>

§

impl<T> RefUnwindSafe for BiVec<T>
where T: RefUnwindSafe,

§

impl<T> Send for BiVec<T>
where T: Send,

§

impl<T> Sync for BiVec<T>
where T: Sync,

§

impl<T> Unpin for BiVec<T>
where @@ -86,5 +86,5 @@
§Example

source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

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

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file + U: TryFrom<T>,
source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/ext/all.html b/docs/ext/all.html index 0177fad83..8d1018b28 100644 --- a/docs/ext/all.html +++ b/docs/ext/all.html @@ -23,4 +23,4 @@ }); -

List of all items

Structs

Enums

Traits

Functions

Type Aliases

Statics

Constants

\ No newline at end of file +

List of all items

Structs

Enums

Traits

Functions

Type Aliases

Statics

Constants

\ No newline at end of file diff --git a/docs/ext/index.html b/docs/ext/index.html index 5307299c0..8a80aa41f 100644 --- a/docs/ext/index.html +++ b/docs/ext/index.html @@ -129,8 +129,8 @@

§L resolve_through_stemResolve a module to a fixed $(s, n)$ and potentially save the resolution. save_brunerSave the resolution in the format used by Bruner’s ext. secondaryCompute $d_2$ differentials using the secondary Steenrod algebra. -secondary_productCompute products in $\Mod_{C\tau^2}$ using the secondary Stennrod algebra. -secondary_masseyCompute Massey products in $\Mod_{C\tau^2}$ using the secondary Stennrod algebra. +secondary_productCompute products in $\Mod_{C\lambda^2}$ using the secondary Steenrod algebra. +secondary_masseyCompute Massey products in $\Mod_{C\lambda^2}$ using the secondary Steenrod algebra. steenrodCompute Steenrod operations in Ext. tensorCompute the tensor product of two modules. yonedaCompute a Yoneda representative of an Ext class. diff --git a/docs/ext/secondary/index.html b/docs/ext/secondary/index.html index 9123b92ff..0ad2ad552 100644 --- a/docs/ext/secondary/index.html +++ b/docs/ext/secondary/index.html @@ -23,4 +23,4 @@ }); -

Module ext::secondary

source ·

Structs§

Statics§

Traits§

Type Aliases§

\ No newline at end of file +

Module ext::secondary

source ·

Structs§

Statics§

Traits§

Type Aliases§

\ No newline at end of file diff --git a/docs/ext/secondary/sidebar-items.js b/docs/ext/secondary/sidebar-items.js index 51799e040..d1d4e0010 100644 --- a/docs/ext/secondary/sidebar-items.js +++ b/docs/ext/secondary/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"static":["TAU_BIDEGREE"],"struct":["SecondaryComposite","SecondaryHomotopy","SecondaryResolution"],"trait":["SecondaryLift"],"type":["CompositeData"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"static":["LAMBDA_BIDEGREE"],"struct":["SecondaryComposite","SecondaryHomotopy","SecondaryResolution"],"trait":["SecondaryLift"],"type":["CompositeData"]}; \ No newline at end of file diff --git a/docs/ext/secondary/static.LAMBDA_BIDEGREE.html b/docs/ext/secondary/static.LAMBDA_BIDEGREE.html new file mode 100644 index 000000000..257127b36 --- /dev/null +++ b/docs/ext/secondary/static.LAMBDA_BIDEGREE.html @@ -0,0 +1,26 @@ +LAMBDA_BIDEGREE in ext::secondary - Rust + + + + + + +

Static ext::secondary::LAMBDA_BIDEGREE

source ·
pub static LAMBDA_BIDEGREE: Bidegree
\ No newline at end of file diff --git a/docs/ext/secondary/static.TAU_BIDEGREE.html b/docs/ext/secondary/static.TAU_BIDEGREE.html deleted file mode 100644 index 2a155055e..000000000 --- a/docs/ext/secondary/static.TAU_BIDEGREE.html +++ /dev/null @@ -1,26 +0,0 @@ -TAU_BIDEGREE in ext::secondary - Rust - - - - - - -

Static ext::secondary::TAU_BIDEGREE

source ·
pub static TAU_BIDEGREE: Bidegree
\ No newline at end of file diff --git a/docs/ext/secondary/trait.SecondaryLift.html b/docs/ext/secondary/trait.SecondaryLift.html index af2a6c6da..8bb5d5bbe 100644 --- a/docs/ext/secondary/trait.SecondaryLift.html +++ b/docs/ext/secondary/trait.SecondaryLift.html @@ -64,10 +64,10 @@

$$ \sum_i c_i f_i g_i = 0, $$

where $f_i$ and $g_i$ are free module homomorphisms and $c_i$ are constants. This is specified by SecondaryLift::composite.

-

The next is a compatibility equation, which restricts the τ part of the null-homotopy, and is +

The next is a compatibility equation, which restricts the λ part of the null-homotopy, and is usually of the form

$$ dh = hd + \mathrm{stuff} $$

-

The τ part of $hd + \mathrm{stuff}$ is known as the intermediate data, and is what +

The λ part of $hd + \mathrm{stuff}$ is known as the intermediate data, and is what SecondaryLift::compute_intermediate returns.

Required Associated Types§

source

type Algebra: PairAlgebra

source

type Source: FreeChainComplex<Algebra = Self::Algebra>

source

type Target: FreeChainComplex<Algebra = Self::Algebra>

source

type Underlying

Provided Associated Constants§

source

const HIT_GENERATOR: bool = false

Whether the composite can hit generators. This is true for SecondaryChainHomotopy and false for the rest. This is important because for SecondaryResolution, we don’t diff --git a/docs/fp/prime/primes_generic/struct.P2.html b/docs/fp/prime/primes_generic/struct.P2.html index e21cc9803..7ed394d00 100644 --- a/docs/fp/prime/primes_generic/struct.P2.html +++ b/docs/fp/prime/primes_generic/struct.P2.html @@ -27,16 +27,16 @@ of the generated Strategy. Parameters must implement Default.

source§

type Strategy = Just<P2>

The type of Strategy used to generate values of type Self.
source§

fn arbitrary_with(_max: Self::Parameters) -> Self::Strategy

Generates a Strategy for producing arbitrary values of type the implementing type (Self). The strategy is passed the arguments given in args. Read more
§

fn arbitrary() -> Self::Strategy

Generates a Strategy for producing arbitrary values -of type the implementing type (Self). Read more
source§

impl Clone for P2

source§

fn clone(&self) -> P2

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 P2

source§

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

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

impl<'de> Deserialize<'de> for P2

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 P2

source§

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

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

impl Div<P2> for u32

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P2) -> Self::Output

Performs the / operation. Read more
source§

impl Div<u32> for P2

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: u32) -> Self::Output

Performs the / operation. Read more
source§

impl Div for P2

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P2) -> Self::Output

Performs the / operation. Read more
source§

impl DivAssign<P2> for u32

source§

fn div_assign(&mut self, other: P2)

Performs the /= operation. Read more
source§

impl From<P2> for u32

source§

fn from(value: P2) -> u32

Converts to this type from the input type.
source§

impl Hash for P2

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +of type the implementing type (Self). Read more

source§

impl Clone for P2

source§

fn clone(&self) -> P2

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 P2

source§

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

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

impl<'de> Deserialize<'de> for P2

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 P2

source§

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

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

impl Div<P2> for u32

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P2) -> Self::Output

Performs the / operation. Read more
source§

impl Div<u32> for P2

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: u32) -> Self::Output

Performs the / operation. Read more
source§

impl Div for P2

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P2) -> Self::Output

Performs the / operation. Read more
source§

impl DivAssign<P2> for u32

source§

fn div_assign(&mut self, other: P2)

Performs the /= operation. Read more
source§

impl From<P2> for u32

source§

fn from(value: P2) -> u32

Converts to this type from the input type.
source§

impl Hash for P2

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

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

impl Mul<P2> for u32

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: P2) -> Self::Output

Performs the * operation. Read more
source§

impl Mul<u32> for P2

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: u32) -> Self::Output

Performs the * operation. Read more
source§

impl Mul for P2

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: P2) -> Self::Output

Performs the * operation. Read more
source§

impl MulAssign<P2> for u32

source§

fn mul_assign(&mut self, other: P2)

Performs the *= operation. Read more
source§

impl PartialEq<u32> for P2

source§

fn eq(&self, other: &u32) -> 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 PartialEq for P2

source§

fn eq(&self, other: &P2) -> 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 PartialOrd<u32> for P2

source§

fn partial_cmp(&self, other: &u32) -> Option<Ordering>

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

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
source§

impl Prime for P2

source§

fn as_i32(self) -> i32

source§

fn to_dyn(self) -> ValidPrime

source§

fn as_u32(self) -> u32

source§

fn as_usize(self) -> usize

source§

fn sum(self, n1: u32, n2: u32) -> u32

Computes the sum mod p. This takes care of overflow.
source§

fn product(self, n1: u32, n2: u32) -> u32

Computes the product mod p. This takes care of overflow.
source§

fn inverse(self, k: u32) -> u32

source§

fn pow(self, exp: u32) -> u32

source§

fn pow_mod(self, b: u32, e: u32) -> u32

source§

impl Rem<P2> for u32

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P2) -> Self::Output

Performs the % operation. Read more
source§

impl Rem<u32> for P2

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: u32) -> Self::Output

Performs the % operation. Read more
source§

impl Rem for P2

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P2) -> Self::Output

Performs the % operation. Read more
source§

impl RemAssign<P2> for u32

source§

fn rem_assign(&mut self, other: P2)

Performs the %= operation. Read more
source§

impl Serialize for P2

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
source§

impl Shl<P2> for u32

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P2) -> Self::Output

Performs the << operation. Read more
source§

impl Shl<u32> for P2

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: u32) -> Self::Output

Performs the << operation. Read more
source§

impl Shl for P2

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P2) -> Self::Output

Performs the << operation. Read more
source§

impl ShlAssign<P2> for u32

source§

fn shl_assign(&mut self, other: P2)

Performs the <<= operation. Read more
source§

impl Shr<P2> for u32

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P2) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr<u32> for P2

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: u32) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr for P2

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P2) -> Self::Output

Performs the >> operation. Read more
source§

impl ShrAssign<P2> for u32

source§

fn shr_assign(&mut self, other: P2)

Performs the >>= operation. Read more
source§

impl Sub<P2> for u32

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P2) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<u32> for P2

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: u32) -> Self::Output

Performs the - operation. Read more
source§

impl Sub for P2

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P2) -> Self::Output

Performs the - operation. Read more
source§

impl SubAssign<P2> for u32

source§

fn sub_assign(&mut self, other: P2)

Performs the -= operation. Read more
source§

impl TryFrom<u32> for P2

source§

type Error = PrimeError

The type returned in the event of a conversion error.
source§

fn try_from(p: u32) -> Result<Self, PrimeError>

Performs the conversion.
source§

impl Copy for P2

source§

impl Eq for P2

source§

impl MaybeArbitrary<Option<NonZero<u32>>> for P2

source§

impl StructuralPartialEq for P2

Auto Trait Implementations§

§

impl Freeze for P2

§

impl RefUnwindSafe for P2

§

impl Send for P2

§

impl Sync for P2

§

impl Unpin for P2

§

impl UnwindSafe for P2

Blanket Implementations§

source§

impl<T> Any for T
where +the >= operator. Read more

source§

impl Prime for P2

source§

fn as_i32(self) -> i32

source§

fn to_dyn(self) -> ValidPrime

source§

fn as_u32(self) -> u32

source§

fn as_usize(self) -> usize

source§

fn sum(self, n1: u32, n2: u32) -> u32

Computes the sum mod p. This takes care of overflow.
source§

fn product(self, n1: u32, n2: u32) -> u32

Computes the product mod p. This takes care of overflow.
source§

fn inverse(self, k: u32) -> u32

source§

fn pow(self, exp: u32) -> u32

source§

fn pow_mod(self, b: u32, e: u32) -> u32

source§

impl Rem<P2> for u32

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P2) -> Self::Output

Performs the % operation. Read more
source§

impl Rem<u32> for P2

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: u32) -> Self::Output

Performs the % operation. Read more
source§

impl Rem for P2

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P2) -> Self::Output

Performs the % operation. Read more
source§

impl RemAssign<P2> for u32

source§

fn rem_assign(&mut self, other: P2)

Performs the %= operation. Read more
source§

impl Serialize for P2

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
source§

impl Shl<P2> for u32

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P2) -> Self::Output

Performs the << operation. Read more
source§

impl Shl<u32> for P2

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: u32) -> Self::Output

Performs the << operation. Read more
source§

impl Shl for P2

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P2) -> Self::Output

Performs the << operation. Read more
source§

impl ShlAssign<P2> for u32

source§

fn shl_assign(&mut self, other: P2)

Performs the <<= operation. Read more
source§

impl Shr<P2> for u32

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P2) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr<u32> for P2

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: u32) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr for P2

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P2) -> Self::Output

Performs the >> operation. Read more
source§

impl ShrAssign<P2> for u32

source§

fn shr_assign(&mut self, other: P2)

Performs the >>= operation. Read more
source§

impl Sub<P2> for u32

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P2) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<u32> for P2

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: u32) -> Self::Output

Performs the - operation. Read more
source§

impl Sub for P2

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P2) -> Self::Output

Performs the - operation. Read more
source§

impl SubAssign<P2> for u32

source§

fn sub_assign(&mut self, other: P2)

Performs the -= operation. Read more
source§

impl TryFrom<u32> for P2

source§

type Error = PrimeError

The type returned in the event of a conversion error.
source§

fn try_from(p: u32) -> Result<Self, PrimeError>

Performs the conversion.
source§

impl Copy for P2

source§

impl Eq for P2

source§

impl MaybeArbitrary<Option<NonZero<u32>>> for P2

source§

impl StructuralPartialEq for P2

Auto Trait Implementations§

§

impl Freeze for P2

§

impl RefUnwindSafe for P2

§

impl Send for P2

§

impl Sync for P2

§

impl Unpin for P2

§

impl UnwindSafe for P2

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 @@ -59,5 +59,5 @@ T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file + V: MultiLane<T>,
§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/fp/prime/primes_generic/struct.P3.html b/docs/fp/prime/primes_generic/struct.P3.html index 3e2379cfc..9b6cb2fa3 100644 --- a/docs/fp/prime/primes_generic/struct.P3.html +++ b/docs/fp/prime/primes_generic/struct.P3.html @@ -27,16 +27,16 @@ of the generated Strategy. Parameters must implement Default.
source§

type Strategy = Just<P3>

The type of Strategy used to generate values of type Self.
source§

fn arbitrary_with(_max: Self::Parameters) -> Self::Strategy

Generates a Strategy for producing arbitrary values of type the implementing type (Self). The strategy is passed the arguments given in args. Read more
§

fn arbitrary() -> Self::Strategy

Generates a Strategy for producing arbitrary values -of type the implementing type (Self). Read more
source§

impl Clone for P3

source§

fn clone(&self) -> P3

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 P3

source§

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

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

impl<'de> Deserialize<'de> for P3

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 P3

source§

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

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

impl Div<P3> for u32

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P3) -> Self::Output

Performs the / operation. Read more
source§

impl Div<u32> for P3

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: u32) -> Self::Output

Performs the / operation. Read more
source§

impl Div for P3

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P3) -> Self::Output

Performs the / operation. Read more
source§

impl DivAssign<P3> for u32

source§

fn div_assign(&mut self, other: P3)

Performs the /= operation. Read more
source§

impl From<P3> for u32

source§

fn from(value: P3) -> u32

Converts to this type from the input type.
source§

impl Hash for P3

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +of type the implementing type (Self). Read more

source§

impl Clone for P3

source§

fn clone(&self) -> P3

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 P3

source§

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

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

impl<'de> Deserialize<'de> for P3

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 P3

source§

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

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

impl Div<P3> for u32

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P3) -> Self::Output

Performs the / operation. Read more
source§

impl Div<u32> for P3

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: u32) -> Self::Output

Performs the / operation. Read more
source§

impl Div for P3

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P3) -> Self::Output

Performs the / operation. Read more
source§

impl DivAssign<P3> for u32

source§

fn div_assign(&mut self, other: P3)

Performs the /= operation. Read more
source§

impl From<P3> for u32

source§

fn from(value: P3) -> u32

Converts to this type from the input type.
source§

impl Hash for P3

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

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

impl Mul<P3> for u32

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: P3) -> Self::Output

Performs the * operation. Read more
source§

impl Mul<u32> for P3

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: u32) -> Self::Output

Performs the * operation. Read more
source§

impl Mul for P3

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: P3) -> Self::Output

Performs the * operation. Read more
source§

impl MulAssign<P3> for u32

source§

fn mul_assign(&mut self, other: P3)

Performs the *= operation. Read more
source§

impl PartialEq<u32> for P3

source§

fn eq(&self, other: &u32) -> 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 PartialEq for P3

source§

fn eq(&self, other: &P3) -> 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 PartialOrd<u32> for P3

source§

fn partial_cmp(&self, other: &u32) -> Option<Ordering>

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

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
source§

impl Prime for P3

source§

fn as_i32(self) -> i32

source§

fn to_dyn(self) -> ValidPrime

source§

fn as_u32(self) -> u32

source§

fn as_usize(self) -> usize

source§

fn sum(self, n1: u32, n2: u32) -> u32

Computes the sum mod p. This takes care of overflow.
source§

fn product(self, n1: u32, n2: u32) -> u32

Computes the product mod p. This takes care of overflow.
source§

fn inverse(self, k: u32) -> u32

source§

fn pow(self, exp: u32) -> u32

source§

fn pow_mod(self, b: u32, e: u32) -> u32

source§

impl Rem<P3> for u32

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P3) -> Self::Output

Performs the % operation. Read more
source§

impl Rem<u32> for P3

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: u32) -> Self::Output

Performs the % operation. Read more
source§

impl Rem for P3

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P3) -> Self::Output

Performs the % operation. Read more
source§

impl RemAssign<P3> for u32

source§

fn rem_assign(&mut self, other: P3)

Performs the %= operation. Read more
source§

impl Serialize for P3

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
source§

impl Shl<P3> for u32

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P3) -> Self::Output

Performs the << operation. Read more
source§

impl Shl<u32> for P3

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: u32) -> Self::Output

Performs the << operation. Read more
source§

impl Shl for P3

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P3) -> Self::Output

Performs the << operation. Read more
source§

impl ShlAssign<P3> for u32

source§

fn shl_assign(&mut self, other: P3)

Performs the <<= operation. Read more
source§

impl Shr<P3> for u32

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P3) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr<u32> for P3

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: u32) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr for P3

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P3) -> Self::Output

Performs the >> operation. Read more
source§

impl ShrAssign<P3> for u32

source§

fn shr_assign(&mut self, other: P3)

Performs the >>= operation. Read more
source§

impl Sub<P3> for u32

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P3) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<u32> for P3

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: u32) -> Self::Output

Performs the - operation. Read more
source§

impl Sub for P3

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P3) -> Self::Output

Performs the - operation. Read more
source§

impl SubAssign<P3> for u32

source§

fn sub_assign(&mut self, other: P3)

Performs the -= operation. Read more
source§

impl TryFrom<u32> for P3

source§

type Error = PrimeError

The type returned in the event of a conversion error.
source§

fn try_from(p: u32) -> Result<Self, PrimeError>

Performs the conversion.
source§

impl Copy for P3

source§

impl Eq for P3

source§

impl MaybeArbitrary<Option<NonZero<u32>>> for P3

source§

impl StructuralPartialEq for P3

Auto Trait Implementations§

§

impl Freeze for P3

§

impl RefUnwindSafe for P3

§

impl Send for P3

§

impl Sync for P3

§

impl Unpin for P3

§

impl UnwindSafe for P3

Blanket Implementations§

source§

impl<T> Any for T
where +the >= operator. Read more

source§

impl Prime for P3

source§

fn as_i32(self) -> i32

source§

fn to_dyn(self) -> ValidPrime

source§

fn as_u32(self) -> u32

source§

fn as_usize(self) -> usize

source§

fn sum(self, n1: u32, n2: u32) -> u32

Computes the sum mod p. This takes care of overflow.
source§

fn product(self, n1: u32, n2: u32) -> u32

Computes the product mod p. This takes care of overflow.
source§

fn inverse(self, k: u32) -> u32

source§

fn pow(self, exp: u32) -> u32

source§

fn pow_mod(self, b: u32, e: u32) -> u32

source§

impl Rem<P3> for u32

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P3) -> Self::Output

Performs the % operation. Read more
source§

impl Rem<u32> for P3

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: u32) -> Self::Output

Performs the % operation. Read more
source§

impl Rem for P3

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P3) -> Self::Output

Performs the % operation. Read more
source§

impl RemAssign<P3> for u32

source§

fn rem_assign(&mut self, other: P3)

Performs the %= operation. Read more
source§

impl Serialize for P3

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
source§

impl Shl<P3> for u32

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P3) -> Self::Output

Performs the << operation. Read more
source§

impl Shl<u32> for P3

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: u32) -> Self::Output

Performs the << operation. Read more
source§

impl Shl for P3

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P3) -> Self::Output

Performs the << operation. Read more
source§

impl ShlAssign<P3> for u32

source§

fn shl_assign(&mut self, other: P3)

Performs the <<= operation. Read more
source§

impl Shr<P3> for u32

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P3) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr<u32> for P3

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: u32) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr for P3

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P3) -> Self::Output

Performs the >> operation. Read more
source§

impl ShrAssign<P3> for u32

source§

fn shr_assign(&mut self, other: P3)

Performs the >>= operation. Read more
source§

impl Sub<P3> for u32

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P3) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<u32> for P3

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: u32) -> Self::Output

Performs the - operation. Read more
source§

impl Sub for P3

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P3) -> Self::Output

Performs the - operation. Read more
source§

impl SubAssign<P3> for u32

source§

fn sub_assign(&mut self, other: P3)

Performs the -= operation. Read more
source§

impl TryFrom<u32> for P3

source§

type Error = PrimeError

The type returned in the event of a conversion error.
source§

fn try_from(p: u32) -> Result<Self, PrimeError>

Performs the conversion.
source§

impl Copy for P3

source§

impl Eq for P3

source§

impl MaybeArbitrary<Option<NonZero<u32>>> for P3

source§

impl StructuralPartialEq for P3

Auto Trait Implementations§

§

impl Freeze for P3

§

impl RefUnwindSafe for P3

§

impl Send for P3

§

impl Sync for P3

§

impl Unpin for P3

§

impl UnwindSafe for P3

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 @@ -59,5 +59,5 @@ T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file + V: MultiLane<T>,
§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/fp/prime/primes_generic/struct.P5.html b/docs/fp/prime/primes_generic/struct.P5.html index cd037fa0a..ee4abda7d 100644 --- a/docs/fp/prime/primes_generic/struct.P5.html +++ b/docs/fp/prime/primes_generic/struct.P5.html @@ -27,16 +27,16 @@ of the generated Strategy. Parameters must implement Default.
source§

type Strategy = Just<P5>

The type of Strategy used to generate values of type Self.
source§

fn arbitrary_with(_max: Self::Parameters) -> Self::Strategy

Generates a Strategy for producing arbitrary values of type the implementing type (Self). The strategy is passed the arguments given in args. Read more
§

fn arbitrary() -> Self::Strategy

Generates a Strategy for producing arbitrary values -of type the implementing type (Self). Read more
source§

impl Clone for P5

source§

fn clone(&self) -> P5

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 P5

source§

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

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

impl<'de> Deserialize<'de> for P5

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 P5

source§

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

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

impl Div<P5> for u32

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P5) -> Self::Output

Performs the / operation. Read more
source§

impl Div<u32> for P5

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: u32) -> Self::Output

Performs the / operation. Read more
source§

impl Div for P5

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P5) -> Self::Output

Performs the / operation. Read more
source§

impl DivAssign<P5> for u32

source§

fn div_assign(&mut self, other: P5)

Performs the /= operation. Read more
source§

impl From<P5> for u32

source§

fn from(value: P5) -> u32

Converts to this type from the input type.
source§

impl Hash for P5

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +of type the implementing type (Self). Read more

source§

impl Clone for P5

source§

fn clone(&self) -> P5

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 P5

source§

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

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

impl<'de> Deserialize<'de> for P5

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 P5

source§

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

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

impl Div<P5> for u32

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P5) -> Self::Output

Performs the / operation. Read more
source§

impl Div<u32> for P5

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: u32) -> Self::Output

Performs the / operation. Read more
source§

impl Div for P5

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P5) -> Self::Output

Performs the / operation. Read more
source§

impl DivAssign<P5> for u32

source§

fn div_assign(&mut self, other: P5)

Performs the /= operation. Read more
source§

impl From<P5> for u32

source§

fn from(value: P5) -> u32

Converts to this type from the input type.
source§

impl Hash for P5

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

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

impl Mul<P5> for u32

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: P5) -> Self::Output

Performs the * operation. Read more
source§

impl Mul<u32> for P5

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: u32) -> Self::Output

Performs the * operation. Read more
source§

impl Mul for P5

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: P5) -> Self::Output

Performs the * operation. Read more
source§

impl MulAssign<P5> for u32

source§

fn mul_assign(&mut self, other: P5)

Performs the *= operation. Read more
source§

impl PartialEq<u32> for P5

source§

fn eq(&self, other: &u32) -> 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 PartialEq for P5

source§

fn eq(&self, other: &P5) -> 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 PartialOrd<u32> for P5

source§

fn partial_cmp(&self, other: &u32) -> Option<Ordering>

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

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
source§

impl Prime for P5

source§

fn as_i32(self) -> i32

source§

fn to_dyn(self) -> ValidPrime

source§

fn as_u32(self) -> u32

source§

fn as_usize(self) -> usize

source§

fn sum(self, n1: u32, n2: u32) -> u32

Computes the sum mod p. This takes care of overflow.
source§

fn product(self, n1: u32, n2: u32) -> u32

Computes the product mod p. This takes care of overflow.
source§

fn inverse(self, k: u32) -> u32

source§

fn pow(self, exp: u32) -> u32

source§

fn pow_mod(self, b: u32, e: u32) -> u32

source§

impl Rem<P5> for u32

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P5) -> Self::Output

Performs the % operation. Read more
source§

impl Rem<u32> for P5

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: u32) -> Self::Output

Performs the % operation. Read more
source§

impl Rem for P5

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P5) -> Self::Output

Performs the % operation. Read more
source§

impl RemAssign<P5> for u32

source§

fn rem_assign(&mut self, other: P5)

Performs the %= operation. Read more
source§

impl Serialize for P5

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
source§

impl Shl<P5> for u32

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P5) -> Self::Output

Performs the << operation. Read more
source§

impl Shl<u32> for P5

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: u32) -> Self::Output

Performs the << operation. Read more
source§

impl Shl for P5

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P5) -> Self::Output

Performs the << operation. Read more
source§

impl ShlAssign<P5> for u32

source§

fn shl_assign(&mut self, other: P5)

Performs the <<= operation. Read more
source§

impl Shr<P5> for u32

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P5) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr<u32> for P5

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: u32) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr for P5

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P5) -> Self::Output

Performs the >> operation. Read more
source§

impl ShrAssign<P5> for u32

source§

fn shr_assign(&mut self, other: P5)

Performs the >>= operation. Read more
source§

impl Sub<P5> for u32

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P5) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<u32> for P5

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: u32) -> Self::Output

Performs the - operation. Read more
source§

impl Sub for P5

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P5) -> Self::Output

Performs the - operation. Read more
source§

impl SubAssign<P5> for u32

source§

fn sub_assign(&mut self, other: P5)

Performs the -= operation. Read more
source§

impl TryFrom<u32> for P5

source§

type Error = PrimeError

The type returned in the event of a conversion error.
source§

fn try_from(p: u32) -> Result<Self, PrimeError>

Performs the conversion.
source§

impl Copy for P5

source§

impl Eq for P5

source§

impl MaybeArbitrary<Option<NonZero<u32>>> for P5

source§

impl StructuralPartialEq for P5

Auto Trait Implementations§

§

impl Freeze for P5

§

impl RefUnwindSafe for P5

§

impl Send for P5

§

impl Sync for P5

§

impl Unpin for P5

§

impl UnwindSafe for P5

Blanket Implementations§

source§

impl<T> Any for T
where +the >= operator. Read more

source§

impl Prime for P5

source§

fn as_i32(self) -> i32

source§

fn to_dyn(self) -> ValidPrime

source§

fn as_u32(self) -> u32

source§

fn as_usize(self) -> usize

source§

fn sum(self, n1: u32, n2: u32) -> u32

Computes the sum mod p. This takes care of overflow.
source§

fn product(self, n1: u32, n2: u32) -> u32

Computes the product mod p. This takes care of overflow.
source§

fn inverse(self, k: u32) -> u32

source§

fn pow(self, exp: u32) -> u32

source§

fn pow_mod(self, b: u32, e: u32) -> u32

source§

impl Rem<P5> for u32

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P5) -> Self::Output

Performs the % operation. Read more
source§

impl Rem<u32> for P5

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: u32) -> Self::Output

Performs the % operation. Read more
source§

impl Rem for P5

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P5) -> Self::Output

Performs the % operation. Read more
source§

impl RemAssign<P5> for u32

source§

fn rem_assign(&mut self, other: P5)

Performs the %= operation. Read more
source§

impl Serialize for P5

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
source§

impl Shl<P5> for u32

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P5) -> Self::Output

Performs the << operation. Read more
source§

impl Shl<u32> for P5

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: u32) -> Self::Output

Performs the << operation. Read more
source§

impl Shl for P5

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P5) -> Self::Output

Performs the << operation. Read more
source§

impl ShlAssign<P5> for u32

source§

fn shl_assign(&mut self, other: P5)

Performs the <<= operation. Read more
source§

impl Shr<P5> for u32

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P5) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr<u32> for P5

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: u32) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr for P5

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P5) -> Self::Output

Performs the >> operation. Read more
source§

impl ShrAssign<P5> for u32

source§

fn shr_assign(&mut self, other: P5)

Performs the >>= operation. Read more
source§

impl Sub<P5> for u32

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P5) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<u32> for P5

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: u32) -> Self::Output

Performs the - operation. Read more
source§

impl Sub for P5

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P5) -> Self::Output

Performs the - operation. Read more
source§

impl SubAssign<P5> for u32

source§

fn sub_assign(&mut self, other: P5)

Performs the -= operation. Read more
source§

impl TryFrom<u32> for P5

source§

type Error = PrimeError

The type returned in the event of a conversion error.
source§

fn try_from(p: u32) -> Result<Self, PrimeError>

Performs the conversion.
source§

impl Copy for P5

source§

impl Eq for P5

source§

impl MaybeArbitrary<Option<NonZero<u32>>> for P5

source§

impl StructuralPartialEq for P5

Auto Trait Implementations§

§

impl Freeze for P5

§

impl RefUnwindSafe for P5

§

impl Send for P5

§

impl Sync for P5

§

impl Unpin for P5

§

impl UnwindSafe for P5

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 @@ -59,5 +59,5 @@ T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file + V: MultiLane<T>,
§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/fp/prime/primes_generic/struct.P7.html b/docs/fp/prime/primes_generic/struct.P7.html index 52c351329..953d4842d 100644 --- a/docs/fp/prime/primes_generic/struct.P7.html +++ b/docs/fp/prime/primes_generic/struct.P7.html @@ -27,16 +27,16 @@ of the generated Strategy. Parameters must implement Default.
source§

type Strategy = Just<P7>

The type of Strategy used to generate values of type Self.
source§

fn arbitrary_with(_max: Self::Parameters) -> Self::Strategy

Generates a Strategy for producing arbitrary values of type the implementing type (Self). The strategy is passed the arguments given in args. Read more
§

fn arbitrary() -> Self::Strategy

Generates a Strategy for producing arbitrary values -of type the implementing type (Self). Read more
source§

impl Clone for P7

source§

fn clone(&self) -> P7

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 P7

source§

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

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

impl<'de> Deserialize<'de> for P7

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 P7

source§

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

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

impl Div<P7> for u32

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P7) -> Self::Output

Performs the / operation. Read more
source§

impl Div<u32> for P7

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: u32) -> Self::Output

Performs the / operation. Read more
source§

impl Div for P7

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P7) -> Self::Output

Performs the / operation. Read more
source§

impl DivAssign<P7> for u32

source§

fn div_assign(&mut self, other: P7)

Performs the /= operation. Read more
source§

impl From<P7> for u32

source§

fn from(value: P7) -> u32

Converts to this type from the input type.
source§

impl Hash for P7

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +of type the implementing type (Self). Read more

source§

impl Clone for P7

source§

fn clone(&self) -> P7

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 P7

source§

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

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

impl<'de> Deserialize<'de> for P7

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 P7

source§

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

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

impl Div<P7> for u32

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P7) -> Self::Output

Performs the / operation. Read more
source§

impl Div<u32> for P7

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: u32) -> Self::Output

Performs the / operation. Read more
source§

impl Div for P7

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: P7) -> Self::Output

Performs the / operation. Read more
source§

impl DivAssign<P7> for u32

source§

fn div_assign(&mut self, other: P7)

Performs the /= operation. Read more
source§

impl From<P7> for u32

source§

fn from(value: P7) -> u32

Converts to this type from the input type.
source§

impl Hash for P7

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

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

impl Mul<P7> for u32

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: P7) -> Self::Output

Performs the * operation. Read more
source§

impl Mul<u32> for P7

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: u32) -> Self::Output

Performs the * operation. Read more
source§

impl Mul for P7

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: P7) -> Self::Output

Performs the * operation. Read more
source§

impl MulAssign<P7> for u32

source§

fn mul_assign(&mut self, other: P7)

Performs the *= operation. Read more
source§

impl PartialEq<u32> for P7

source§

fn eq(&self, other: &u32) -> 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 PartialEq for P7

source§

fn eq(&self, other: &P7) -> 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 PartialOrd<u32> for P7

source§

fn partial_cmp(&self, other: &u32) -> Option<Ordering>

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

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
source§

impl Prime for P7

source§

fn as_i32(self) -> i32

source§

fn to_dyn(self) -> ValidPrime

source§

fn as_u32(self) -> u32

source§

fn as_usize(self) -> usize

source§

fn sum(self, n1: u32, n2: u32) -> u32

Computes the sum mod p. This takes care of overflow.
source§

fn product(self, n1: u32, n2: u32) -> u32

Computes the product mod p. This takes care of overflow.
source§

fn inverse(self, k: u32) -> u32

source§

fn pow(self, exp: u32) -> u32

source§

fn pow_mod(self, b: u32, e: u32) -> u32

source§

impl Rem<P7> for u32

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P7) -> Self::Output

Performs the % operation. Read more
source§

impl Rem<u32> for P7

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: u32) -> Self::Output

Performs the % operation. Read more
source§

impl Rem for P7

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P7) -> Self::Output

Performs the % operation. Read more
source§

impl RemAssign<P7> for u32

source§

fn rem_assign(&mut self, other: P7)

Performs the %= operation. Read more
source§

impl Serialize for P7

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
source§

impl Shl<P7> for u32

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P7) -> Self::Output

Performs the << operation. Read more
source§

impl Shl<u32> for P7

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: u32) -> Self::Output

Performs the << operation. Read more
source§

impl Shl for P7

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P7) -> Self::Output

Performs the << operation. Read more
source§

impl ShlAssign<P7> for u32

source§

fn shl_assign(&mut self, other: P7)

Performs the <<= operation. Read more
source§

impl Shr<P7> for u32

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P7) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr<u32> for P7

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: u32) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr for P7

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P7) -> Self::Output

Performs the >> operation. Read more
source§

impl ShrAssign<P7> for u32

source§

fn shr_assign(&mut self, other: P7)

Performs the >>= operation. Read more
source§

impl Sub<P7> for u32

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P7) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<u32> for P7

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: u32) -> Self::Output

Performs the - operation. Read more
source§

impl Sub for P7

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P7) -> Self::Output

Performs the - operation. Read more
source§

impl SubAssign<P7> for u32

source§

fn sub_assign(&mut self, other: P7)

Performs the -= operation. Read more
source§

impl TryFrom<u32> for P7

source§

type Error = PrimeError

The type returned in the event of a conversion error.
source§

fn try_from(p: u32) -> Result<Self, PrimeError>

Performs the conversion.
source§

impl Copy for P7

source§

impl Eq for P7

source§

impl MaybeArbitrary<Option<NonZero<u32>>> for P7

source§

impl StructuralPartialEq for P7

Auto Trait Implementations§

§

impl Freeze for P7

§

impl RefUnwindSafe for P7

§

impl Send for P7

§

impl Sync for P7

§

impl Unpin for P7

§

impl UnwindSafe for P7

Blanket Implementations§

source§

impl<T> Any for T
where +the >= operator. Read more

source§

impl Prime for P7

source§

fn as_i32(self) -> i32

source§

fn to_dyn(self) -> ValidPrime

source§

fn as_u32(self) -> u32

source§

fn as_usize(self) -> usize

source§

fn sum(self, n1: u32, n2: u32) -> u32

Computes the sum mod p. This takes care of overflow.
source§

fn product(self, n1: u32, n2: u32) -> u32

Computes the product mod p. This takes care of overflow.
source§

fn inverse(self, k: u32) -> u32

source§

fn pow(self, exp: u32) -> u32

source§

fn pow_mod(self, b: u32, e: u32) -> u32

source§

impl Rem<P7> for u32

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P7) -> Self::Output

Performs the % operation. Read more
source§

impl Rem<u32> for P7

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: u32) -> Self::Output

Performs the % operation. Read more
source§

impl Rem for P7

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: P7) -> Self::Output

Performs the % operation. Read more
source§

impl RemAssign<P7> for u32

source§

fn rem_assign(&mut self, other: P7)

Performs the %= operation. Read more
source§

impl Serialize for P7

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
source§

impl Shl<P7> for u32

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P7) -> Self::Output

Performs the << operation. Read more
source§

impl Shl<u32> for P7

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: u32) -> Self::Output

Performs the << operation. Read more
source§

impl Shl for P7

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: P7) -> Self::Output

Performs the << operation. Read more
source§

impl ShlAssign<P7> for u32

source§

fn shl_assign(&mut self, other: P7)

Performs the <<= operation. Read more
source§

impl Shr<P7> for u32

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P7) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr<u32> for P7

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: u32) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr for P7

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: P7) -> Self::Output

Performs the >> operation. Read more
source§

impl ShrAssign<P7> for u32

source§

fn shr_assign(&mut self, other: P7)

Performs the >>= operation. Read more
source§

impl Sub<P7> for u32

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P7) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<u32> for P7

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: u32) -> Self::Output

Performs the - operation. Read more
source§

impl Sub for P7

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: P7) -> Self::Output

Performs the - operation. Read more
source§

impl SubAssign<P7> for u32

source§

fn sub_assign(&mut self, other: P7)

Performs the -= operation. Read more
source§

impl TryFrom<u32> for P7

source§

type Error = PrimeError

The type returned in the event of a conversion error.
source§

fn try_from(p: u32) -> Result<Self, PrimeError>

Performs the conversion.
source§

impl Copy for P7

source§

impl Eq for P7

source§

impl MaybeArbitrary<Option<NonZero<u32>>> for P7

source§

impl StructuralPartialEq for P7

Auto Trait Implementations§

§

impl Freeze for P7

§

impl RefUnwindSafe for P7

§

impl Send for P7

§

impl Sync for P7

§

impl Unpin for P7

§

impl UnwindSafe for P7

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 @@ -59,5 +59,5 @@ T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file + V: MultiLane<T>,
§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/fp/prime/primes_generic/struct.ValidPrime.html b/docs/fp/prime/primes_generic/struct.ValidPrime.html index f779e2f32..b00624317 100644 --- a/docs/fp/prime/primes_generic/struct.ValidPrime.html +++ b/docs/fp/prime/primes_generic/struct.ValidPrime.html @@ -29,16 +29,16 @@ support. If max is specified, the primes are restricted to be less than max.

source§

type Parameters = Option<NonZero<u32>>

The type of parameters that arbitrary_with accepts for configuration of the generated Strategy. Parameters must implement Default.
source§

type Strategy = Select<ValidPrime>

The type of Strategy used to generate values of type Self.
§

fn arbitrary() -> Self::Strategy

Generates a Strategy for producing arbitrary values -of type the implementing type (Self). Read more
source§

impl Clone for ValidPrime

source§

fn clone(&self) -> ValidPrime

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 ValidPrime

source§

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

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

impl<'de> Deserialize<'de> for ValidPrime

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 ValidPrime

source§

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

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

impl Div<ValidPrime> for u32

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: ValidPrime) -> Self::Output

Performs the / operation. Read more
source§

impl Div<u32> for ValidPrime

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: u32) -> Self::Output

Performs the / operation. Read more
source§

impl Div for ValidPrime

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: ValidPrime) -> Self::Output

Performs the / operation. Read more
source§

impl DivAssign<ValidPrime> for u32

source§

fn div_assign(&mut self, other: ValidPrime)

Performs the /= operation. Read more
source§

impl From<ValidPrime> for u32

source§

fn from(value: ValidPrime) -> u32

Converts to this type from the input type.
source§

impl FromStr for ValidPrime

source§

type Err = PrimeError

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for ValidPrime

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +of type the implementing type (Self). Read more

source§

impl Clone for ValidPrime

source§

fn clone(&self) -> ValidPrime

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 ValidPrime

source§

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

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

impl<'de> Deserialize<'de> for ValidPrime

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 ValidPrime

source§

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

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

impl Div<ValidPrime> for u32

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: ValidPrime) -> Self::Output

Performs the / operation. Read more
source§

impl Div<u32> for ValidPrime

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: u32) -> Self::Output

Performs the / operation. Read more
source§

impl Div for ValidPrime

source§

type Output = u32

The resulting type after applying the / operator.
source§

fn div(self, other: ValidPrime) -> Self::Output

Performs the / operation. Read more
source§

impl DivAssign<ValidPrime> for u32

source§

fn div_assign(&mut self, other: ValidPrime)

Performs the /= operation. Read more
source§

impl From<ValidPrime> for u32

source§

fn from(value: ValidPrime) -> u32

Converts to this type from the input type.
source§

impl FromStr for ValidPrime

source§

type Err = PrimeError

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for ValidPrime

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

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

impl Mul<ValidPrime> for u32

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: ValidPrime) -> Self::Output

Performs the * operation. Read more
source§

impl Mul<u32> for ValidPrime

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: u32) -> Self::Output

Performs the * operation. Read more
source§

impl Mul for ValidPrime

source§

type Output = u32

The resulting type after applying the * operator.
source§

fn mul(self, other: ValidPrime) -> Self::Output

Performs the * operation. Read more
source§

impl MulAssign<ValidPrime> for u32

source§

fn mul_assign(&mut self, other: ValidPrime)

Performs the *= operation. Read more
source§

impl PartialEq<u32> for ValidPrime

source§

fn eq(&self, other: &u32) -> 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 PartialEq for ValidPrime

source§

fn eq(&self, other: &ValidPrime) -> 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 PartialOrd<u32> for ValidPrime

source§

fn partial_cmp(&self, other: &u32) -> Option<Ordering>

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

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
source§

impl Prime for ValidPrime

source§

fn as_i32(self) -> i32

source§

fn to_dyn(self) -> Self

source§

fn as_u32(self) -> u32

source§

fn as_usize(self) -> usize

source§

fn sum(self, n1: u32, n2: u32) -> u32

Computes the sum mod p. This takes care of overflow.
source§

fn product(self, n1: u32, n2: u32) -> u32

Computes the product mod p. This takes care of overflow.
source§

fn inverse(self, k: u32) -> u32

source§

fn pow(self, exp: u32) -> u32

source§

fn pow_mod(self, b: u32, e: u32) -> u32

source§

impl Rem<ValidPrime> for u32

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: ValidPrime) -> Self::Output

Performs the % operation. Read more
source§

impl Rem<u32> for ValidPrime

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: u32) -> Self::Output

Performs the % operation. Read more
source§

impl Rem for ValidPrime

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: ValidPrime) -> Self::Output

Performs the % operation. Read more
source§

impl RemAssign<ValidPrime> for u32

source§

fn rem_assign(&mut self, other: ValidPrime)

Performs the %= operation. Read more
source§

impl Serialize for ValidPrime

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
source§

impl Shl<ValidPrime> for u32

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: ValidPrime) -> Self::Output

Performs the << operation. Read more
source§

impl Shl<u32> for ValidPrime

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: u32) -> Self::Output

Performs the << operation. Read more
source§

impl Shl for ValidPrime

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: ValidPrime) -> Self::Output

Performs the << operation. Read more
source§

impl ShlAssign<ValidPrime> for u32

source§

fn shl_assign(&mut self, other: ValidPrime)

Performs the <<= operation. Read more
source§

impl Shr<ValidPrime> for u32

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: ValidPrime) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr<u32> for ValidPrime

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: u32) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr for ValidPrime

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: ValidPrime) -> Self::Output

Performs the >> operation. Read more
source§

impl ShrAssign<ValidPrime> for u32

source§

fn shr_assign(&mut self, other: ValidPrime)

Performs the >>= operation. Read more
source§

impl Sub<ValidPrime> for u32

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: ValidPrime) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<u32> for ValidPrime

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: u32) -> Self::Output

Performs the - operation. Read more
source§

impl Sub for ValidPrime

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: ValidPrime) -> Self::Output

Performs the - operation. Read more
source§

impl SubAssign<ValidPrime> for u32

source§

fn sub_assign(&mut self, other: ValidPrime)

Performs the -= operation. Read more
source§

impl TryFrom<u32> for ValidPrime

source§

type Error = PrimeError

The type returned in the event of a conversion error.
source§

fn try_from(p: u32) -> Result<Self, PrimeError>

Performs the conversion.
source§

impl Copy for ValidPrime

source§

impl Eq for ValidPrime

source§

impl MaybeArbitrary<Option<NonZero<u32>>> for ValidPrime

source§

impl StructuralPartialEq for ValidPrime

Auto Trait Implementations§

§

impl Freeze for ValidPrime

§

impl RefUnwindSafe for ValidPrime

§

impl Send for ValidPrime

§

impl Sync for ValidPrime

§

impl Unpin for ValidPrime

§

impl UnwindSafe for ValidPrime

Blanket Implementations§

source§

impl<T> Any for T
where +the >= operator. Read more

source§

impl Prime for ValidPrime

source§

fn as_i32(self) -> i32

source§

fn to_dyn(self) -> Self

source§

fn as_u32(self) -> u32

source§

fn as_usize(self) -> usize

source§

fn sum(self, n1: u32, n2: u32) -> u32

Computes the sum mod p. This takes care of overflow.
source§

fn product(self, n1: u32, n2: u32) -> u32

Computes the product mod p. This takes care of overflow.
source§

fn inverse(self, k: u32) -> u32

source§

fn pow(self, exp: u32) -> u32

source§

fn pow_mod(self, b: u32, e: u32) -> u32

source§

impl Rem<ValidPrime> for u32

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: ValidPrime) -> Self::Output

Performs the % operation. Read more
source§

impl Rem<u32> for ValidPrime

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: u32) -> Self::Output

Performs the % operation. Read more
source§

impl Rem for ValidPrime

source§

type Output = u32

The resulting type after applying the % operator.
source§

fn rem(self, other: ValidPrime) -> Self::Output

Performs the % operation. Read more
source§

impl RemAssign<ValidPrime> for u32

source§

fn rem_assign(&mut self, other: ValidPrime)

Performs the %= operation. Read more
source§

impl Serialize for ValidPrime

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
source§

impl Shl<ValidPrime> for u32

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: ValidPrime) -> Self::Output

Performs the << operation. Read more
source§

impl Shl<u32> for ValidPrime

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: u32) -> Self::Output

Performs the << operation. Read more
source§

impl Shl for ValidPrime

source§

type Output = u32

The resulting type after applying the << operator.
source§

fn shl(self, other: ValidPrime) -> Self::Output

Performs the << operation. Read more
source§

impl ShlAssign<ValidPrime> for u32

source§

fn shl_assign(&mut self, other: ValidPrime)

Performs the <<= operation. Read more
source§

impl Shr<ValidPrime> for u32

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: ValidPrime) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr<u32> for ValidPrime

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: u32) -> Self::Output

Performs the >> operation. Read more
source§

impl Shr for ValidPrime

source§

type Output = u32

The resulting type after applying the >> operator.
source§

fn shr(self, other: ValidPrime) -> Self::Output

Performs the >> operation. Read more
source§

impl ShrAssign<ValidPrime> for u32

source§

fn shr_assign(&mut self, other: ValidPrime)

Performs the >>= operation. Read more
source§

impl Sub<ValidPrime> for u32

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: ValidPrime) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<u32> for ValidPrime

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: u32) -> Self::Output

Performs the - operation. Read more
source§

impl Sub for ValidPrime

source§

type Output = u32

The resulting type after applying the - operator.
source§

fn sub(self, other: ValidPrime) -> Self::Output

Performs the - operation. Read more
source§

impl SubAssign<ValidPrime> for u32

source§

fn sub_assign(&mut self, other: ValidPrime)

Performs the -= operation. Read more
source§

impl TryFrom<u32> for ValidPrime

source§

type Error = PrimeError

The type returned in the event of a conversion error.
source§

fn try_from(p: u32) -> Result<Self, PrimeError>

Performs the conversion.
source§

impl Copy for ValidPrime

source§

impl Eq for ValidPrime

source§

impl MaybeArbitrary<Option<NonZero<u32>>> for ValidPrime

source§

impl StructuralPartialEq for ValidPrime

Auto Trait Implementations§

§

impl Freeze for ValidPrime

§

impl RefUnwindSafe for ValidPrime

§

impl Send for ValidPrime

§

impl Sync for ValidPrime

§

impl Unpin for ValidPrime

§

impl UnwindSafe for ValidPrime

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 @@ -61,5 +61,5 @@ T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file + V: MultiLane<T>,
§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/fp/prime/trait.Prime.html b/docs/fp/prime/trait.Prime.html index d5eeece47..8e71ec198 100644 --- a/docs/fp/prime/trait.Prime.html +++ b/docs/fp/prime/trait.Prime.html @@ -40,8 +40,8 @@ + Rem<u32, Output = u32> + Shl<u32, Output = u32> + Shr<u32, Output = u32> - + Serialize - + for<'de> Deserialize<'de> + + Serialize + + for<'de> Deserialize<'de> + MaybeArbitrary<Option<NonZeroU32>> + 'static { // Required methods diff --git a/docs/fp/vector/enum.FpVector.html b/docs/fp/vector/enum.FpVector.html index 43dfd6766..e566b7e7d 100644 --- a/docs/fp/vector/enum.FpVector.html +++ b/docs/fp/vector/enum.FpVector.html @@ -33,12 +33,12 @@ p: P, len: usize, data: &mut impl Read, -) -> Result<Self>
source

pub fn to_bytes(&self, buffer: &mut impl Write) -> Result<()>

source

pub fn from_slice<P: Prime>(p: P, slice: &[u32]) -> Self

source

pub(crate) fn num_limbs(p: ValidPrime, len: usize) -> usize

source

pub(crate) fn padded_len(p: ValidPrime, len: usize) -> usize

Trait Implementations§

source§

impl AddAssign<&FpVector> for FpVector

source§

fn add_assign(&mut self, other: &Self)

Performs the += operation. Read more
source§

impl Clone for FpVector

source§

fn clone(&self) -> FpVector

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 FpVector

source§

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

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

impl<'de> Deserialize<'de> for FpVector

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 FpVector

source§

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

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

impl<'a> From<&'a FpVector> for FpSlice<'a>

source§

fn from(v: &'a FpVector) -> Self

Converts to this type from the input type.
source§

impl From<&FpVector> for Vec<u32>

source§

fn from(v: &FpVector) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut FpVector> for FpSliceMut<'a>

source§

fn from(v: &'a mut FpVector) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P2>>> for FpVector

source§

fn from(x: FqVector<Fp<P2>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P3>>> for FpVector

source§

fn from(x: FqVector<Fp<P3>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P5>>> for FpVector

source§

fn from(x: FqVector<Fp<P5>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P7>>> for FpVector

source§

fn from(x: FqVector<Fp<P7>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<ValidPrime>>> for FpVector

source§

fn from(x: FqVector<Fp<ValidPrime>>) -> Self

Converts to this type from the input type.
source§

impl Hash for FpVector

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +) -> Result<Self>

source

pub fn to_bytes(&self, buffer: &mut impl Write) -> Result<()>

source

pub fn from_slice<P: Prime>(p: P, slice: &[u32]) -> Self

source

pub(crate) fn num_limbs(p: ValidPrime, len: usize) -> usize

source

pub(crate) fn padded_len(p: ValidPrime, len: usize) -> usize

Trait Implementations§

source§

impl AddAssign<&FpVector> for FpVector

source§

fn add_assign(&mut self, other: &Self)

Performs the += operation. Read more
source§

impl Clone for FpVector

source§

fn clone(&self) -> FpVector

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 FpVector

source§

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

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

impl<'de> Deserialize<'de> for FpVector

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 FpVector

source§

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

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

impl<'a> From<&'a FpVector> for FpSlice<'a>

source§

fn from(v: &'a FpVector) -> Self

Converts to this type from the input type.
source§

impl From<&FpVector> for Vec<u32>

source§

fn from(v: &FpVector) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut FpVector> for FpSliceMut<'a>

source§

fn from(v: &'a mut FpVector) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P2>>> for FpVector

source§

fn from(x: FqVector<Fp<P2>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P3>>> for FpVector

source§

fn from(x: FqVector<Fp<P3>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P5>>> for FpVector

source§

fn from(x: FqVector<Fp<P5>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P7>>> for FpVector

source§

fn from(x: FqVector<Fp<P7>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<ValidPrime>>> for FpVector

source§

fn from(x: FqVector<Fp<ValidPrime>>) -> Self

Converts to this type from the input type.
source§

impl Hash for FpVector

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

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

impl<'a> IntoIterator for &'a FpVector

source§

type IntoIter = FpVectorIterator<'a>

Which kind of iterator are we turning this into?
source§

type Item = u32

The type of the elements being iterated over.
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl PartialEq for FpVector

source§

fn eq(&self, other: &FpVector) -> 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 FpVector

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
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P2>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P2>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P3>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P3>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P5>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P5>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P7>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P7>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<ValidPrime>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<ValidPrime>>, Self::Error>

Performs the conversion.
source§

impl Eq for FpVector

source§

impl StructuralPartialEq for FpVector

Auto Trait Implementations§

§

impl Freeze for FpVector

§

impl RefUnwindSafe for FpVector

§

impl Send for FpVector

§

impl Sync for FpVector

§

impl Unpin for FpVector

§

impl UnwindSafe for FpVector

Blanket Implementations§

source§

impl<T> Any for T
where +and should not be overridden without very good reason.

source§

impl Serialize for FpVector

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
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P2>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P2>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P3>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P3>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P5>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P5>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P7>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P7>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<ValidPrime>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<ValidPrime>>, Self::Error>

Performs the conversion.
source§

impl Eq for FpVector

source§

impl StructuralPartialEq for FpVector

Auto Trait Implementations§

§

impl Freeze for FpVector

§

impl RefUnwindSafe for FpVector

§

impl Send for FpVector

§

impl Sync for FpVector

§

impl Unpin for FpVector

§

impl UnwindSafe for FpVector

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 @@ -61,5 +61,5 @@ T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file + V: MultiLane<T>,
§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/fp/vector/fp_wrapper/enum.FpVector.html b/docs/fp/vector/fp_wrapper/enum.FpVector.html index 24179f60a..c8b69caa0 100644 --- a/docs/fp/vector/fp_wrapper/enum.FpVector.html +++ b/docs/fp/vector/fp_wrapper/enum.FpVector.html @@ -33,12 +33,12 @@ p: P, len: usize, data: &mut impl Read, -) -> Result<Self>
source

pub fn to_bytes(&self, buffer: &mut impl Write) -> Result<()>

source

pub fn from_slice<P: Prime>(p: P, slice: &[u32]) -> Self

source

pub(crate) fn num_limbs(p: ValidPrime, len: usize) -> usize

source

pub(crate) fn padded_len(p: ValidPrime, len: usize) -> usize

Trait Implementations§

source§

impl AddAssign<&FpVector> for FpVector

source§

fn add_assign(&mut self, other: &Self)

Performs the += operation. Read more
source§

impl Clone for FpVector

source§

fn clone(&self) -> FpVector

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 FpVector

source§

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

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

impl<'de> Deserialize<'de> for FpVector

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 FpVector

source§

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

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

impl<'a> From<&'a FpVector> for FpSlice<'a>

source§

fn from(v: &'a FpVector) -> Self

Converts to this type from the input type.
source§

impl From<&FpVector> for Vec<u32>

source§

fn from(v: &FpVector) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut FpVector> for FpSliceMut<'a>

source§

fn from(v: &'a mut FpVector) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P2>>> for FpVector

source§

fn from(x: FqVector<Fp<P2>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P3>>> for FpVector

source§

fn from(x: FqVector<Fp<P3>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P5>>> for FpVector

source§

fn from(x: FqVector<Fp<P5>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P7>>> for FpVector

source§

fn from(x: FqVector<Fp<P7>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<ValidPrime>>> for FpVector

source§

fn from(x: FqVector<Fp<ValidPrime>>) -> Self

Converts to this type from the input type.
source§

impl Hash for FpVector

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +) -> Result<Self>

source

pub fn to_bytes(&self, buffer: &mut impl Write) -> Result<()>

source

pub fn from_slice<P: Prime>(p: P, slice: &[u32]) -> Self

source

pub(crate) fn num_limbs(p: ValidPrime, len: usize) -> usize

source

pub(crate) fn padded_len(p: ValidPrime, len: usize) -> usize

Trait Implementations§

source§

impl AddAssign<&FpVector> for FpVector

source§

fn add_assign(&mut self, other: &Self)

Performs the += operation. Read more
source§

impl Clone for FpVector

source§

fn clone(&self) -> FpVector

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 FpVector

source§

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

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

impl<'de> Deserialize<'de> for FpVector

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 FpVector

source§

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

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

impl<'a> From<&'a FpVector> for FpSlice<'a>

source§

fn from(v: &'a FpVector) -> Self

Converts to this type from the input type.
source§

impl From<&FpVector> for Vec<u32>

source§

fn from(v: &FpVector) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a mut FpVector> for FpSliceMut<'a>

source§

fn from(v: &'a mut FpVector) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P2>>> for FpVector

source§

fn from(x: FqVector<Fp<P2>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P3>>> for FpVector

source§

fn from(x: FqVector<Fp<P3>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P5>>> for FpVector

source§

fn from(x: FqVector<Fp<P5>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<P7>>> for FpVector

source§

fn from(x: FqVector<Fp<P7>>) -> Self

Converts to this type from the input type.
source§

impl<'a> From<FqVector<Fp<ValidPrime>>> for FpVector

source§

fn from(x: FqVector<Fp<ValidPrime>>) -> Self

Converts to this type from the input type.
source§

impl Hash for FpVector

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

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

impl<'a> IntoIterator for &'a FpVector

source§

type IntoIter = FpVectorIterator<'a>

Which kind of iterator are we turning this into?
source§

type Item = u32

The type of the elements being iterated over.
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl PartialEq for FpVector

source§

fn eq(&self, other: &FpVector) -> 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 FpVector

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
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P2>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P2>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P3>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P3>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P5>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P5>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P7>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P7>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<ValidPrime>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<ValidPrime>>, Self::Error>

Performs the conversion.
source§

impl Eq for FpVector

source§

impl StructuralPartialEq for FpVector

Auto Trait Implementations§

§

impl Freeze for FpVector

§

impl RefUnwindSafe for FpVector

§

impl Send for FpVector

§

impl Sync for FpVector

§

impl Unpin for FpVector

§

impl UnwindSafe for FpVector

Blanket Implementations§

source§

impl<T> Any for T
where +and should not be overridden without very good reason.

source§

impl Serialize for FpVector

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
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P2>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P2>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P3>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P3>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P5>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P5>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<P7>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<P7>>, Self::Error>

Performs the conversion.
source§

impl<'a> TryInto<&'a mut FqVector<Fp<ValidPrime>>> for &'a mut FpVector

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<&'a mut FqVector<Fp<ValidPrime>>, Self::Error>

Performs the conversion.
source§

impl Eq for FpVector

source§

impl StructuralPartialEq for FpVector

Auto Trait Implementations§

§

impl Freeze for FpVector

§

impl RefUnwindSafe for FpVector

§

impl Send for FpVector

§

impl Sync for FpVector

§

impl Unpin for FpVector

§

impl UnwindSafe for FpVector

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 @@ -61,5 +61,5 @@ T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where - V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file + V: MultiLane<T>,
§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/search-index.js b/docs/search-index.js index 0b0eee8c6..6ec75df88 100644 --- a/docs/search-index.js +++ b/docs/search-index.js @@ -1,4 +1,4 @@ -var searchIndex = new Map(JSON.parse('[["algebra",{"t":"PFPKKGKPPFKPFPKKKFFGGKKCMCMOOMMOOCMMMMMOMMMQOOOOMMCMMMOOOCMCHOOOMMMMMMOOCOMMOMMOOMMMCCOOOFKFPPGMOOOOOOOOOOOOEEEEEEEEEEEEEEEEECCCCCCCCCFKFPPGNMNNNNONONONNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNONONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNONNNNNNNNNNNNNOONNNONHNNNNNNNNNNNNNNNONNNKKKKMMMMNNMMMNNMNNMNNNNMNNMMMNNMNNNNMNNNNMKMMSFSFSNHNNNNNNNNNNNNNONNOHNNONNNNNNNNNOONOOOONHNNNNNNNNHFNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNSOFFKFIFIFIFNONNNONONNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNONNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNOONNNNNNNNNNNONMNONNNNNNNNNNNNNNNNNNNNNNNOOOOONNONNNNONOOHONONNNNNNONNNNNNNNNNNNNNNNNNNNONNNNNNNNNNSRIFKMHHNNONNNMMMNNNNNMOMNNMQNNONQNOKFFMNNNNNNNNNMNONNNNNNNNNNNOMMNNNNMNNNNNONNNNNNNNNNONNNNNNNNNNOMMMMMNNNNNNNNNNONNPPFGPPPPGGKNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNONNMNNNNNNNNNNNNNNNNNNNNNNNSFFHOOHOOOOOOOHHFOOFKFFIFIFOOOOOOOOOOOOMOOOOOOOOOOOOOORFFIFFKFFFFFEFFIKMOMOOOOOOOOOMOCOOOMOCCCOOOOOOOOOOOOOOOCCOOOOOMOMOOOOOCOOOOOOOOOOCOOOCOOOCOCOCOOCMFFNOOONNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNFNNNONNNONNNNNNNNNNNNNNNNNNNNNNNOONNNNNONNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNONNNNONOONNNNONNNOONONNNNNNNNNNIFFFFINNNNOOOOOONNNNNNNNNNNNNONNNNNNNNNNNNNONNNNNNNOOOOONOOOOONOOONNNNNNNNNNNNNNNNNOOOOOOONNOOONOONONONNNNNNNNNNNNNNNNNNNFNNONONNNNNNNNNNNNNNNONONNNNNIFFFKKFFFRRIKNNMNNMOOOOOOOCCCNNCMNOOOOONOOOOOOONOOOOOONNOOOOOCOOMOOOOOOOMOOOOOOMIFINNNNNNNNNNNOOONNNNNNNNOOONNNOOONOOONNNNOOONOOONNNNOOONOOONNNNNFNNNNNNNNONNNNNNNNONNNOONNONNNONONNNNNNFNNNNONNNNNNNNONONNNNNFNNNNNNNNNNONNNOONNNONONONNNNFFNNNNNNNNNNNNNNOONNNNNNNNOONNONNNNNNNNNNRKFNNNNNNMMMNNNNNNMNNNNNNNNNNMNNNNMNNONNNNNNONFNNNNONNNNNNNNNNNNNNONNNNNNNONONNNNNFFNNONNNNNOOHHNNNNNNNNNNNNNNNNNNNNNNOONNOONNNNNNNNNNNNNIHCNHFNNNNNNNNNNNNNNNNNONNNNNNNNONNNNNNNFNNNNNONNNNNNNNNNNONNNNNONNNNNNNKMRFKMOMMMMOMMOOFONNNNNNNNNNNNNNNNNNNONNNNNNNNNNPGGPPGPIIPPPPPPPPHHHHNNNNNNHNNNNNNNNNHNNNNNNHNNNNNNHNNNNNNNNNHHHHHHHHNNNNNNNNNNNNNNNN","n":["Adem","AdemAlgebra","","AdemAlgebraT","Algebra","AlgebraType","Bialgebra","BorrowAdem","BorrowMilnor","Field","GeneratedAlgebra","Milnor","MilnorAlgebra","","MilnorAlgebraT","MuAlgebra","PolynomialAlgebra","PolynomialAlgebraMonomial","PolynomialAlgebraTableEntry","SteenrodAlgebra","SteenrodAlgebraBorrow","SteenrodAlgebraT","UnstableAlgebra","adem_algebra","","algebra","basis_element_from_string","basis_element_to_index_map","","basis_element_to_string","basis_table","","","combinatorics","compute_basis","compute_generating_set","coproduct","decompose","decompose_basis_element","degree","dimension","dimension_unstable","","dispatch_algebra","even_basis_table","excess_table","","ext","exterior_generators_in_degree","exterior_monomials","field","frobenius_on_generator","generating_relations","generators","generic","","index_to_monomial","milnor_algebra","","module","module_gens_from_json","monomial_to_index","multiplication_table","","multiply_basis_element_by_element_unstable","multiply_basis_elements","multiply_basis_elements_unstable","","multiply_element_by_basis_element_unstable","multiply_element_by_element_unstable","p","","pair_algebra","poly","polynomial_generators_in_degree","polynomial_monomials","ppart_table","prime","","","profile","repr_ext_generator","repr_poly_generator","steenrod_algebra","steenrod_evaluator","steenrod_parser","unstable_enabled","","valid","AdemAlgebra","AdemAlgebraT","AdemBasisElement","Bockstein","P","PorBockstein","adem_algebra","basis_element_to_index_map","basis_table","bocksteins","degree","even_basis_table","excess_table","generic","multiplication_table","p","p_or_sq","ps","unstable_enabled","AdemAlgebra","AdemAlgebraT","Algebra","AlgebraType","Bialgebra","Field","GeneratedAlgebra","MilnorAlgebra","MilnorAlgebraT","MuAlgebra","PolynomialAlgebra","PolynomialAlgebraMonomial","PolynomialAlgebraTableEntry","SteenrodAlgebra","SteenrodAlgebraBorrow","SteenrodAlgebraT","UnstableAlgebra","adem_algebra","algebra_trait","bialgebra_trait","combinatorics","field","milnor_algebra","pair_algebra","polynomial_algebra","steenrod_algebra","AdemAlgebra","AdemAlgebraT","AdemBasisElement","Bockstein","P","PorBockstein","a_multiply","adem_algebra","","basis_element_from_index","basis_element_from_string","basis_element_to_index","basis_element_to_index_map","basis_element_to_string","basis_table","beps_pn","bocksteins","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","compute_basis","coproduct","decompose","decompose_basis_element","decompose_basis_element_2","decompose_basis_element_generic","default_filtration_one_products","degree","deref","","","deref_mut","","","dimension","dimension_unstable","","","drop","","","element_from_bytes","element_is_zero","element_to_bytes","eq","equivalent","","","","even_basis_table","excess","excess_table","finalize_element","fmt","","","","from","","","generate_basis2","generate_basis_element_to_index_map","generate_basis_even","generate_basis_generic","generate_excess_table","generate_multiplication_table_2","generate_multiplication_table_2_step","generate_multiplication_table_generic","generate_multiplication_table_generic_step","generating_relations","generator_to_string","generators","generic","","hash","init","","","into","","","iter_filtered","magic","make_mono_admissible","make_mono_admissible_2","make_mono_admissible_generic","multiplication_table","multiply_basis_element_by_element_unstable","","multiply_basis_elements","multiply_basis_elements_unstable","","","multiply_element_by_basis_element_unstable","","multiply_element_by_element_unstable","","multiply_inner","new","new_pair_element","p","p_or_sq","p_tilde","prefix","prime","ps","q","shift_vec","sigma_multiply_basis","tail_of_basis_element_to_index","to_owned","to_string","","try_basis_element_to_index","try_from","","","try_into","","","type_id","","","unstable_enabled","vzip","","","Algebra","GeneratedAlgebra","MuAlgebra","UnstableAlgebra","basis_element_from_string","basis_element_to_string","compute_basis","decompose_basis_element","default_filtration_one_products","","dimension","dimension_unstable","","element_to_string","","generating_relations","generator_to_string","","generators","magic","","multiply_basis_element_by_element","","multiply_basis_element_by_element_unstable","","","multiply_basis_elements","multiply_basis_elements_unstable","","multiply_element_by_basis_element","","multiply_element_by_basis_element_unstable","","","multiply_element_by_element","","multiply_element_by_element_unstable","","","prefix","","prime","Bialgebra","coproduct","decompose","MAX_XI_TAU","PartitionIterator","TAU_DEGREES","TruncatedPolynomialMonomialBasis","XI_DEGREES","add_gens_and_calculate_parts","adem_relation_coefficient","borrow","","borrow_mut","","deref","","deref_mut","","drop","","from","","gen_deg_idx_to_internal_idx","gen_degrees","generators","generators_up_to_degree","gens","inadmissible_pairs","init","","initial","internal_idx_to_gen_deg","into","","into_iter","multiunzip","","new","","next","p","partition","parts","","","parts_by_max","remaining","search","tau_degrees","try_from","","try_into","","type_id","","vzip","","xi_degrees","Field","basis_element_from_string","basis_element_to_string","borrow","borrow_mut","compute_basis","coproduct","decompose","default_filtration_one_products","deref","deref_mut","dimension","dimension_unstable","drop","element_to_string","fmt","from","init","into","multiply_basis_element_by_element_unstable","multiply_basis_elements","multiply_basis_elements_unstable","multiply_element_by_basis_element_unstable","multiply_element_by_element_unstable","new","prime","","to_string","try_from","try_into","type_id","vzip","ALLOCATION","M","Matrix2D","MilnorAlgebra","MilnorAlgebraT","MilnorBasisElement","MilnorHashMap","MilnorProfile","PPart","PPartAllocation","PPartEntry","PPartMultiplier","a_multiply","ans","basis_element_from_index","basis_element_from_string","basis_element_to_index","basis_element_to_index_map","basis_element_to_string","basis_table","beps_pn","borrow","","","","","","borrow_mut","","","","","","clone","clone_into","","clone_to_uninit","cols","","compute_basis","compute_degree","compute_ppart","coproduct","decompose","decompose_basis_element","decompose_basis_element_ppart","decompose_basis_element_qpart","default","","","","default_filtration_one_products","degree","deref","","","","","","deref_mut","","","","","","deserialize","diag_num","diagonal","","dimension","dimension_unstable","","","drop","","","","","","element_from_bytes","element_is_zero","element_to_bytes","eq","","equivalent","","","","","","","","excess","excess_table","finalize_element","fmt","","","","","","from","","","","","","from_p","generate_basis_2","generate_basis_generic","generate_excess_table","generating_relations","generator_to_string","generators","generic","","get_p_part","hash","increment_p_part","index","index_mut","init","","","","","","","inner","into","","","","","","into_allocation","into_iter","is_an","is_trivial","is_valid","m","magic","milnor_algebra","","multiplication_table","multiply","multiply_basis_by_element","multiply_basis_by_element_with_allocation","multiply_basis_element_by_element","multiply_basis_element_by_element_unstable","","multiply_basis_elements","multiply_basis_elements_unstable","","","multiply_element_by_basis_element_unstable","","multiply_element_by_element","multiply_element_by_element_unstable","","multiply_qpart","multiply_with_allocation","new","new_from_allocation","new_pair_element","new_with_profile","next","next_val","p","","p_part","","","p_tilde","ppart_table","","prefix","prime","","profile","","q","q_part","","q_part_default","r","reset","rows","serialize","sigma_multiply_basis","to_owned","to_string","","","truncated","try_basis_element_to_index","try_beps_pn","try_from","","","","","","try_into","","","","","","type_id","","","","","","unstable_enabled","update","vzip","","","","","","with_capacity","","with_local","AY_CACHE","Element","HashMap","MilnorPairElement","PairAlgebra","a_multiply","a_y_cached","a_y_inner","borrow","borrow_mut","degree","deref","deref_mut","drop","element_from_bytes","element_is_zero","element_to_bytes","finalize_element","","from","init","into","new_pair_element","ones","p_tilde","sigma_multiply","","sigma_multiply_basis","sub","try_from","try_into","twos","type_id","unsub","vzip","ys","PolynomialAlgebra","PolynomialAlgebraMonomial","PolynomialAlgebraTableEntry","basis_table","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","compute_basis_step","","compute_generating_set","default","degree","deref","","deref_mut","","drop","","eq","equivalent","","","","ext","exterior_generators_in_degree","exterior_monomials","fmt","","frobenius_monomial","","frobenius_on_generator","from","","hash","index_to_monomial","","","init","","into","","max_computed_degree","","min_degree","","monomial_to_index","","","multiply_monomial_by_polynomial","","multiply_monomials","","multiply_polynomial_by_monomial","","multiply_polynomials","","new","","poly","polynomial_generators_in_degree","polynomial_monomials","prime","repr_ext_generator","repr_poly_generator","set_monomial_degree","","to_owned","to_string","try_from","","try_into","","type_id","","valid","vzip","","Adem","AdemAlgebra","AlgebraSpec","AlgebraType","BorrowAdem","BorrowMilnor","Milnor","MilnorAlgebra","SteenrodAlgebra","SteenrodAlgebraBorrow","SteenrodAlgebraT","a_multiply","adem_algebra","algebra","basis_element_from_string","basis_element_to_string","borrow","","","","borrow_mut","","","","clone","clone_into","clone_to_uninit","compute_basis","coproduct","decompose","decompose_basis_element","default_filtration_one_products","deref","","","","deref_mut","","","","deserialize","dimension","dimension_unstable","","","dispatch_steenrod","drop","","","","element_from_bytes","element_is_zero","element_to_bytes","element_to_string","eq","equivalent","","","","finalize_element","fmt","","","","from","","","","from_json","from_str","generating_relations","generator_to_string","generators","init","","","","into","","","","magic","milnor_algebra","multiply_basis_element_by_element","multiply_basis_element_by_element_unstable","","","multiply_basis_elements","multiply_basis_elements_unstable","","","multiply_element_by_basis_element","multiply_element_by_basis_element_unstable","","","multiply_element_by_element","multiply_element_by_element_unstable","","","new_pair_element","p","p_tilde","prefix","prime","profile","sigma_multiply","sigma_multiply_basis","steenrod_algebra","","to_owned","to_string","","try_from","","","","","try_into","","","","","","type_id","","","","vzip","","","","MAX_XI_TAU","PartitionIterator","TruncatedPolynomialMonomialBasis","adem_relation_coefficient","gen_degrees","gens","inadmissible_pairs","initial","p","partition","parts","","parts_by_max","remaining","tau_degrees","xi_degrees","Field","prime","M","MilnorAlgebra","MilnorAlgebraT","MilnorBasisElement","MilnorProfile","PPart","PPartAllocation","PPartEntry","PPartMultiplier","ans","basis_element_to_index_map","basis_table","cols","degree","diag_num","diagonal","","excess_table","generic","init","m","milnor_algebra","multiplication_table","p","","p_part","","","ppart_table","profile","q_part","","r","rows","truncated","unstable_enabled","Algebra","FDModule","FPModule","FreeModule","GeneratorData","HomModule","Module","ModuleFailedRelationError","MuFreeModule","OperationGeneratorPair","QuotientModule","RealProjectiveSpace","SteenrodModule","SuspensionModule","TensorModule","UnstableFreeModule","ZeroModule","act_on_basis","actions","algebra","","","","","","","basis_element_to_opgen","","","basis_element_to_string","basis_list","block_structure","block_structures","","clear_bottom","dimension","end","finite_dimensional_module","finitely_presented_module","free_module","gen_deg","gen_deg_idx_to_internal_idx","","","gen_names","","","","generator_degree","generator_index","generator_to_index","","","generators","graded_dimension","hom_module","homomorphism","index_table","inner","left","map","max","max_computed_degree","min","min_degree","","","","","module","module_trait","name","","","","","num_gens","","","operation_degree","operation_index","quotient_module","relation","relations","right","rpn","shift","source","start","steenrod_module","subspaces","suspension_module","target","tensor_module","truncation","value","zero_module","","BlockStructure","GeneratorBasisEltPair","add_block","basis_element_to_block_idx","basis_index","blocks","borrow","","borrow_mut","","deref","","deref_mut","","drop","","fmt","","from","","generator_basis_elt_to_index","generator_degree","generator_index","generator_to_block","index_to_generator_basis_elt","init","","into","","new","total_dimension","try_from","","try_into","","type_id","","vzip","","FiniteDimensionalModule","act_on_basis","action","action_mut","actions","actions_to_json","add_generator","algebra","","allocate_actions","basis_element_to_string","borrow","borrow_mut","check_validity","clone","clone_into","clone_to_uninit","compute_basis","deref","deref_mut","dimension","drop","eq","equivalent","","","","extend_actions","fmt","from","","from_json","gen_names","graded_dimension","init","into","max_computed_degree","max_degree","min_degree","name","new","parse_action","set_action","set_basis_element_name","string_to_basis_element","test_equal","to_json","to_owned","to_string","try_from","try_into","type_id","vzip","zero_module","FPMIndexTable","FinitelyPresentedModule","act_on_basis","add_generators","add_relations","algebra","basis_element_to_string","borrow","","borrow_mut","","compute_basis","deref","","deref_mut","","dimension","drop","","eq","equivalent","","","","fmt","fp_idx_to_gen_idx","","from","","from_json","gen_idx_to_fp_idx","","generators","","index_table","init","","into","","map","max_computed_degree","max_generator_degree","min_degree","","name","new","relations","to_string","try_from","","try_into","","type_id","","vzip","","zero_module","FreeModule","GeneratorData","MuFreeModule","OffsetIterator","OperationGeneratorPair","UnstableFreeModule","act","act_on_basis","add_generators","algebra","","","","basis_element_to_opgen","","","basis_element_to_string","borrow","","","","borrow_mut","","","","clone","clone_into","clone_to_uninit","compute_basis","degree","deref","","","","deref_mut","","","","dimension","drop","","","","end","extend_by_zero","fmt","","from","","","","gen_deg","","gen_deg_idx_to_internal_idx","","","gen_names","","","","generator_degree","generator_index","generator_offset","generator_to_index","","","index_to_op_gen","init","","","","internal_generator_offset","into","","","","into_iter","iter_gen_offsets","iter_gens","iter_slices","max_computed_degree","max_generator_degree","min_degree","","","","module","name","","","new","next","num_gens","","","number_of_gens_in_degree","offset","operation_degree","operation_generator_to_index","operation_index","slice_vector","start","to_owned","to_string","try_from","","","","try_into","","","","type_id","","","","vzip","","","","zero_module","HomModule","act_on_basis","algebra","","basis_element_to_string","block_structures","borrow","borrow_mut","compute_basis","deref","deref_mut","dimension","drop","fmt","from","init","into","max_computed_degree","min_degree","new","source","","target","","to_string","try_from","try_into","type_id","vzip","FreeModuleHomomorphism","FullModuleHomomorphism","GenericZeroHomomorphism","HomPullback","IdentityHomomorphism","ModuleHomomorphism","MuFreeModuleHomomorphism","QuotientHomomorphism","QuotientHomomorphismSource","Source","Target","UnstableFreeModuleHomomorphism","ZeroHomomorphism","apply","apply_quasi_inverse","apply_to_basis_element","auxiliary_data","compute_auxiliary_data_through_degree","degree_shift","","","","","","f","","free_module_homomorphism","full_module_homomorphism","generic_zero_homomorphism","get_matrix","get_partial_matrix","hom_pullback","identity_homomorphism","image","images","","","","","kernel","kernels","","","","","map","matrices","min_degree","","","","outputs","","","prime","quasi_inverse","quasi_inverses","","","","","quotient_homomorphism","s","","source","","","","","","","t","target","","","","","","","zero_homomorphism","FreeModuleHomomorphism","MuFreeModuleHomomorphism","UnstableFreeModuleHomomorphism","add_generators_from_big_vector","add_generators_from_matrix_rows","add_generators_from_rows","add_generators_from_rows_ooo","apply_to_basis_element","apply_to_generator","borrow","borrow_mut","compute_auxiliary_data_through_degree","degree_shift","","","","","deref","deref_mut","differential_density","drop","extend_by_zero","from","hom_k","image","images","","","init","into","kernel","kernels","","","min_degree","","","","new","next_degree","ooo_outputs","output","outputs","","","quasi_inverse","quasi_inverses","","","set_image","set_kernel","set_quasi_inverse","source","","","","target","","","","try_from","try_into","type_id","vzip","zero_homomorphism","FullModuleHomomorphism","apply_to_basis_element","borrow","borrow_mut","clone","clone_into","clone_to_uninit","compute_auxiliary_data_through_degree","degree_shift","","deref","deref_mut","drop","from","","from_matrices","identity_homomorphism","image","images","init","into","kernel","kernels","matrices","new","quasi_inverse","quasi_inverses","replace_source","replace_target","source","","target","","to_owned","try_from","try_into","type_id","vzip","zero_homomorphism","GenericZeroHomomorphism","apply_to_basis_element","borrow","borrow_mut","degree_shift","","deref","deref_mut","drop","from","init","into","new","source","","target","","try_from","try_into","type_id","vzip","zero_homomorphism","HomPullback","apply_to_basis_element","borrow","borrow_mut","compute_auxiliary_data_through_degree","degree_shift","deref","deref_mut","drop","from","image","images","init","into","kernel","kernels","map","min_degree","new","quasi_inverse","quasi_inverses","source","","target","","try_from","try_into","type_id","vzip","QuotientHomomorphism","QuotientHomomorphismSource","apply_to_basis_element","","borrow","","borrow_mut","","degree_shift","","deref","","deref_mut","","drop","","f","","from","","init","","into","","new","","s","","source","","t","target","","try_from","","try_into","","type_id","","vzip","","Algebra","Module","ModuleFailedRelationError","act","","act_by_element","","act_by_element_on_basis","","act_on_basis","algebra","basis_element_to_string","borrow","borrow_mut","compute_basis","","deref","deref_mut","dimension","drop","element_to_string","","fmt","","from","init","into","is_unit","","max_computed_degree","max_degree","","max_generator_degree","","min_degree","prime","","relation","to_string","total_dimension","","try_from","try_into","type_id","value","vzip","QuotientModule","act_on_basis","act_on_original_basis","algebra","basis_element_to_string","basis_list","borrow","borrow_mut","deref","deref_mut","dimension","drop","flush","fmt","from","init","into","max_computed_degree","max_degree","min_degree","module","new","old_basis_to_new","quotient","quotient_all","quotient_basis_elements","quotient_vectors","reduce","subspaces","to_string","truncation","try_from","try_into","type_id","vzip","zero_module","RPSpec","RealProjectiveSpace","act_on_basis","algebra","","basis_element_to_string","borrow","","borrow_mut","","clear_bottom","","coef_adem","coef_milnor","deref","","deref_mut","","deserialize","dimension","drop","","eq","equivalent","","","","fmt","","from","","from_json","init","","into","","max","","max_computed_degree","max_degree","min","","min_degree","new","to_json","to_string","try_from","","try_into","","type_id","","vzip","","zero_module","SteenrodModule","from_json","json","zero_module","from_json","SuspensionModule","act","act_by_element","act_by_element_on_basis","act_on_basis","algebra","basis_element_to_string","borrow","borrow_mut","compute_basis","deref","deref_mut","dimension","drop","element_to_string","fmt","from","init","inner","into","is_unit","max_computed_degree","max_degree","max_generator_degree","min_degree","new","prime","shift","to_string","total_dimension","try_from","try_into","type_id","vzip","zero_module","TensorModule","act","act_helper","act_on_basis","algebra","basis_element_to_string","block_structures","borrow","borrow_mut","compute_basis","deref","deref_mut","dimension","drop","fmt","from","init","into","left","max_computed_degree","max_degree","min_degree","new","offset","right","seek_module_num","to_string","try_from","try_into","type_id","vzip","zero_module","ZeroModule","zero_module","Element","MilnorPairElement","PairAlgebra","a_multiply","degree","element_from_bytes","element_is_zero","element_to_bytes","new_pair_element","ones","p_tilde","sigma_multiply_basis","twos","ys","SteenrodEvaluator","adem","adem_q","adem_to_milnor","adem_to_milnor_on_basis","borrow","borrow_mut","compute_basis","deref","deref_mut","dimension","drop","evaluate_algebra_adem","evaluate_algebra_milnor","evaluate_algebra_node","evaluate_basis_element","evaluate_module_adem","evaluate_p_or_b_list","from","init","into","milnor","milnor_to_adem","milnor_to_adem_on_basis","milnor_to_adem_on_basis_2","milnor_to_adem_on_basis_generic","new","prime","try_from","try_into","type_id","vzip","AList","AlgebraBasisElt","AlgebraNode","BasisElt","Bockstein","BocksteinOrSq","Err","IResult","ModuleNode","Ok","P","PList","Product","Q","Scalar","Sq","Sum","algebra_expr","algebra_factor","algebra_generator","algebra_term","borrow","","","borrow_mut","","","brackets","clone","","","clone_into","","","clone_to_uninit","","","convert_error","deref","","","deref_mut","","","digits","drop","","","fmt","","","fold_separated","from","","","init","","","into","","","module_expr","module_generator","module_term","p_or_sq","parse_algebra","parse_module","scalar","space","to_adem_basis_elt","to_owned","","","try_from","","","try_into","","","type_id","","","vzip","",""],"q":[[0,"algebra"],[89,"algebra::adem_algebra"],[108,"algebra::algebra"],[134,"algebra::algebra::adem_algebra"],[267,"algebra::algebra::algebra_trait"],[309,"algebra::algebra::bialgebra_trait"],[312,"algebra::algebra::combinatorics"],[367,"algebra::algebra::field"],[399,"algebra::algebra::milnor_algebra"],[625,"algebra::algebra::pair_algebra"],[661,"algebra::algebra::polynomial_algebra"],[742,"algebra::algebra::steenrod_algebra"],[873,"algebra::combinatorics"],[889,"algebra::field"],[891,"algebra::milnor_algebra"],[927,"algebra::module"],[1025,"algebra::module::block_structure"],[1064,"algebra::module::finite_dimensional_module"],[1118,"algebra::module::finitely_presented_module"],[1175,"algebra::module::free_module"],[1296,"algebra::module::hom_module"],[1325,"algebra::module::homomorphism"],[1405,"algebra::module::homomorphism::free_module_homomorphism"],[1470,"algebra::module::homomorphism::full_module_homomorphism"],[1509,"algebra::module::homomorphism::generic_zero_homomorphism"],[1531,"algebra::module::homomorphism::hom_pullback"],[1560,"algebra::module::homomorphism::quotient_homomorphism"],[1601,"algebra::module::module_trait"],[1647,"algebra::module::quotient_module"],[1683,"algebra::module::rpn"],[1738,"algebra::module::steenrod_module"],[1742,"algebra::module::steenrod_module::json"],[1743,"algebra::module::suspension_module"],[1778,"algebra::module::tensor_module"],[1810,"algebra::module::zero_module"],[1812,"algebra::pair_algebra"],[1826,"algebra::steenrod_evaluator"],[1858,"algebra::steenrod_parser"],[1943,"core::option"],[1944,"alloc::string"],[1945,"once"],[1946,"alloc::vec"],[1947,"serde_json::value"],[1948,"bivec"],[1949,"anyhow"],[1950,"core::ops::function"],[1951,"fp::vector::fp_wrapper"],[1952,"fp::prime::primes_generic"],[1953,"std::io::error"],[1954,"std::io"],[1955,"core::fmt"],[1956,"core::hash"],[1957,"core::iter::traits::iterator"],[1958,"core::result"],[1959,"core::any"],[1960,"serde::de"],[1961,"serde::ser"],[1962,"core::marker"],[1963,"alloc::sync"],[1964,"core::ops::range"],[1965,"fp::matrix::subspace"],[1966,"fp::matrix::quasi_inverse"],[1967,"fp::matrix::matrix_inner"],[1968,"alloc::collections::btree::map"],[1969,"nom::error"],[1970,"nom::internal"],[1971,"core::str::traits"],[1972,"core::clone"]],"i":"Hj`Hh````Db0``2`1``````````b`hfBn2Af21`30An0BbHf6BfBh`776255`53376Ah`Bl``1982:322298`4778:7Fh988D```;:6```Ed0`><>>9>>>76>>9999>>>>677>76>>677>>677>>>`::`````Bj`0Ff101010101011111`10011000010010110100`10101010``5555555555555555555555555555555`Gh``````````?0????????0FnFjG`GbBn543213333520300000043210305432105432145510000054321000434444333330004332205432130000000043022054321520543215544410<00000000000000000000500550543100000500043`52540303240005432105432105432105054321211`H````0``On0000011111000101111`0000`00```AfHfAh101112220110101011111122112221012201010222222022222222101222222211101010110HjHh``Db021```11Hl2212301230333222221230123002222`1230222233333223301230232221230123022222222222222222220222022D`34342344123334123412341````Bj0`Ff101010```FhGh````````0>>0Fj11GbBn031Bl114Fn4322045502I`````````````````0Il10JbA@`JdMhK`4326Md`1N`38Jl```07658765Jf0876J`:``0Mn417<7<1:985`;1:98:9822`In25`174`6`7`60`Id``If0Ih1010101010101011001101011101010101`?????????????????????????????????????????????????????``55555A@b6066060660666666660066606660606666666666060606066``````====?>=?>===8Jn8>908888>0>908>908>>9089>>8>90890JbA@`Jd0210;;021000<3;00<3;300000021032100321003;0;0<;00<3;0<3;0<3;0<3;0`????????????????????????????`````````Kf0``000000LnA@dLdLhLjM`Mb```77`L`87654Ll9876500598768769987650`32987654039876540Lb```77777777777987777777779877779877987777798779877777987798777777`66666666666666666666666666666666666666`555555555555555555555`1111111111111111111111111111``434343434343434343434343434344343434343I```000000000In011001011000001111111111001100000`Md0000000000000000000000000000000000``Mh0000Mj1010``10100110111111010110101011101111101010101```Ml``Mn000000000000000000000000000000000`N`000000000000000000000000000000`IdH```0On111101100`Nb000000000000000000000000000000Nf``NdNj`A@f``03323212````321321`321321321`321321`321321`321321321````````1321321321321321","f":"````````````````````````{{{d{b}}}{{d{f}}}}`{{{d{h}}{d{j}}}{{Ab{{A`{ln}}}}}}``{{{d{h}}ln}Ad}{{{d{Af}}}{{d{{Aj{Ah}}}}}}```{{{d{h}}l}Al}{{{d{Af}}l}Al}{{{d{An}}ln}{{B`{{A`{lnln}}}}}}{{{d{An}}ln}{{B`{{A`{ln}}}}}}{{{d{Bb}}ln}{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}`{{{d{h}}l}n}{{{d{Bf}}ll}n}{{{d{Bh}}ll}n}`````{{{d{Af}}l}n}{{{d{Af}}}{{d{Bj}}}}`{{{d{Af}}ln}{{Ab{n}}}}{{{d{Bb}}l}{{B`{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}}}{{{d{Bb}}l}{{B`{n}}}}````{{{d{Bl}}}{{d{Bn}}}}`{{{d{C`}}}{{A`{{Cb{n}}{Cb{{B`{Ad}}}}{`{{Ch{{d{j}}}{{Cd{{Cf{{A`{ln}}}}}}}}}}}}}}```{{{d{Bh}}CjBdlnlCll}Al}{{{d{h}}CjBdlnln}Al}{{{d{Bf}}CjBdlnlnl}Al}{{{d{Bh}}CjBdlnlnl}Al}{{{d{Bh}}CjBdlCllnl}Al}{{{d{Bh}}CjBdlCllCll}Al}````<;`{{{d{h}}}Cn}{{{d{Af}}}Cn}``{{{d{Af}}ln}Ad}{{{d{Af}}ln}{{A`{AdBd}}}}{{{d{D`}}}Db}```````````{{{d{b}}}{{d{f}}}}````````````````````````````````````````````{{{d{f}}CjBdlCll{d{c}}}Al{}}1{{{d{f}}}{{d{f}}}}{{{d{f}}ln}{{d{Dd}}}}{{{d{f}}{d{j}}}{{Ab{{A`{ln}}}}}}{{{d{f}}{d{Dd}}}n}`{{{d{f}}ln}Ad}`{{{d{f}}BdBd}{{A`{ln}}}}`{d{{d{c}}}{}}00{{{d{Df}}}{{d{Dfc}}}{}}00{{{d{Dd}}}Dd}{{d{d{Dfc}}}Al{}}{dAl}{{{d{f}}l}Al}{{{d{f}}ln}{{B`{{A`{lnln}}}}}}{{{d{f}}ln}{{B`{{A`{ln}}}}}}{{{d{f}}ln}{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}00{{{d{f}}}{{B`{{A`{Adln}}}}}}`{n{{d{c}}}{}}00{n{{d{Dfc}}}{}}00{{{d{f}}l}n}{{dll}n}{{{d{f}}ll}n}1{nAl}00{{{d{f}}l{d{Dfc}}}{{Dh{e}}}Dj{}}{{{d{c}}}Dl{}}{{{d{f}}{d{c}}{d{Dfe}}}{{Dh{Al}}}{}Dn}{{{d{Dd}}{d{Dd}}}Dl}{{d{d{c}}}Dl{}}000`{{{d{Dd}}Cn}Bd}`{{{d{Dfc}}}Al{}}{{{d{f}}{d{DfE`}}}Eb}{{{d{Dd}}{d{DfE`}}}Eb}0{{{d{Ed}}{d{DfE`}}}Eb}{cc{}}00{{{d{f}}l}Al}00000{{{d{f}}{d{{Eh{{B`{Ef}}}}}}lln}Ef}10{{{d{f}}l}{{B`{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}}}{{{d{f}}ln}Ad}{{{d{f}}l}{{B`{n}}}}{{{d{f}}}Dl}`{{{d{Dd}}{d{Dfc}}}AlEj}{{}n}00{{}c{}}00{{{d{Dd}}}{{`{{En{}{{El{Ed}}}}}}}}{{{d{f}}}Bd}{{{d{f}}CjBd{d{DfDd}}l}Al}{{{d{f}}Cj{d{DfDd}}lllDl}Al}{{{d{f}}CjBd{d{DfDd}}lllDl}Al}`{{dCjBdlnlCll}Al}0{{{d{f}}CjBdlnln}Al}{{dCjBdlnlnl}Al}0{{{d{f}}CjBdlnlnl}Al}{{dCjBdlCllnl}Al}0{{dCjBdlCllCll}Al}02{{CnDl}f}{{{d{f}}l}c{}}``{{{d{f}}}n}{{{d{f}}}{{d{j}}}}{{{d{f}}}Cn}`{{{d{f}}}l}{{{d{Df{B`{c}}}}F`}Al{}}{{{d{f}}{d{Dfc}}Bdlnln}Al{}}{{{d{f}}{d{DfDd}}BdBd}n}{dc{}}{dAd}0{{{d{f}}{d{Dd}}}{{Ab{n}}}}{c{{Fb{e}}}{}{}}00{{}{{Fb{c}}}{}}00{dFd}00`{{}c{}}00````{{{d{h}}{d{j}}}{{Ab{{A`{ln}}}}}}{{{d{h}}ln}Ad}{{{d{h}}l}Al}{{{d{Bb}}ln}{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}{{{d{h}}}{{B`{{A`{Adln}}}}}}0{{{d{h}}l}n}{{{d{Bf}}ll}n}{{{d{Bh}}ll}n}{{{d{h}}lCl}Ad}0{{{d{Bb}}l}{{B`{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}}}{{{d{Bb}}ln}Ad}0{{{d{Bb}}l}{{B`{n}}}}{{{d{h}}}Bd}0{{{d{h}}CjBdlnlCl}Al}0{{{d{Bh}}CjBdlnlCll}Al}{{{d{Bf}}CjBdlnlCll}Al}0{{{d{h}}CjBdlnln}Al}{{{d{Bf}}CjBdlnlnl}Al}{{{d{Bh}}CjBdlnlnl}Al}{{{d{h}}CjBdlClln}Al}0{{{d{Bh}}CjBdlCllnl}Al}{{{d{Bf}}CjBdlCllnl}Al}0{{{d{h}}CjBdlCllCl}Al}0{{{d{Bh}}CjBdlCllCll}Al}{{{d{Bf}}CjBdlCllCll}Al}0{{{d{h}}}{{d{j}}}}0{{{d{h}}}Cn}`{{{d{An}}ln}{{B`{{A`{lnln}}}}}}{{{d{An}}ln}{{B`{{A`{ln}}}}}}`````{{{d{Bj}}ln}Al}{{CnBdBdBdBdBd}Bd}{d{{d{c}}}{}}0{{{d{Df}}}{{d{Dfc}}}{}}0{n{{d{c}}}{}}0{n{{d{Dfc}}}{}}0{nAl}0{cc{}}0{{{d{Bj}}ln}n}`{{{d{Bj}}l}n}0`{{CnDll}{{B`{{A`{BdBdBd}}}}}}{{}n}0`{{{d{Bj}}n}{{A`{ln}}}}{{}c{}}00{{}{{A`{ce}}}{}{}}0{CnBj}{{lBd{d{{Eh{l}}}}}Ff}{{{d{DfFf}}}{{Ab{c}}}{}}``{{{d{Bj}}l}{{d{{B`{Ef}}}}}}````{{{d{DfFf}}}Dl}{Cn{{d{{Eh{l}}}}}}{c{{Fb{e}}}{}{}}0{{}{{Fb{c}}}{}}0{dFd}0::3`{{{d{Fh}}{d{j}}}{{Ab{{A`{ln}}}}}}{{{d{Fh}}ln}Ad}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{Fh}}l}Al}{{{d{Fh}}ln}{{B`{{A`{lnln}}}}}}{{{d{Fh}}ln}{{B`{{A`{ln}}}}}}{{{d{Fh}}}{{B`{{A`{Adln}}}}}}{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{Fh}}l}n}{{dll}n}{nAl}{{{d{Fh}}lCl}Ad}{{{d{Fh}}{d{DfE`}}}Eb}{cc{}}{{}n}{{}c{}}{{dCjBdlnlCll}Al}{{{d{Fh}}CjBdlnln}Al}{{dCjBdlnlnl}Al}{{dCjBdlCllnl}Al}{{dCjBdlCllCll}Al}{CnFh}{{{d{Fh}}}Cn}`{dAd}{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd};````````````{{{d{Bn}}CjBdlCll{d{c}}}Al{}}`{{{d{Bn}}ln}{{d{Fj}}}}{{{d{Bn}}{d{j}}}{{Ab{{A`{ln}}}}}}{{{d{Bn}}{d{Fj}}}n}`{{{d{Bn}}ln}Ad}`{{{d{Bn}}BdFl}{{A`{ln}}}}{d{{d{c}}}{}}00000{{{d{Df}}}{{d{Dfc}}}{}}00000{{{d{Fj}}}Fj}{{{d{Fj}}{d{DfFj}}}Al}{{d{d{Dfc}}}Al{}}{dAl}``{{{d{Bn}}l}Al}{{{d{DfFj}}Cn}Al}1{{{d{Bn}}ln}{{B`{{A`{lnln}}}}}}{{{d{Bn}}ln}{{B`{{A`{ln}}}}}}{{{d{Bn}}ln}{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}00{{}Fn}{{}Fj}{{}G`}{{}Gb}{{{d{Bn}}}{{B`{{A`{Adln}}}}}}`{n{{d{c}}}{}}00000{n{{d{Dfc}}}{}}00000{c{{Fb{Fn}}}Gd}```{{{d{Bn}}l}n}{{dll}n}0{{{d{Bn}}ll}n}{nAl}00000{{{d{Bn}}l{d{Dfc}}}{{Dh{e}}}Dj{}}{{{d{c}}}Dl{}}{{{d{Bn}}{d{c}}{d{Dfe}}}{{Dh{Al}}}{}Dn}{{{d{Fn}}{d{Fn}}}Dl}{{{d{Fj}}{d{Fj}}}Dl}{{d{d{c}}}Dl{}}0000000{{{d{Fj}}Cn}Bd}`{{{d{Dfc}}}Al{}}{{{d{Bn}}{d{DfE`}}}Eb}{{{d{Fn}}{d{DfE`}}}Eb}{{{d{Fj}}{d{DfE`}}}Eb}0{{{d{G`}}{d{DfE`}}}Eb}0{cc{}}00000{{Gfl}Fj}{{{d{Bn}}l}Al}00{{{d{Bn}}l}{{B`{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}}}{{{d{Bn}}ln}Ad}{{{d{Bn}}l}{{B`{n}}}}{{{d{Bn}}}Dl}`{{{d{Fn}}n}Fl}{{{d{Fj}}{d{Dfc}}}AlEj}{{{d{DfGf}}{d{{Eh{Fl}}}}}Dl}{{{d{G`}}n}{{d{c}}}{}}{{{d{DfG`}}n}{{d{Dfc}}}{}}{{}n}00000``{{}c{}}00000{GhGb}1{{{d{Fn}}Dl}Dl}{{{d{Fn}}}Dl}0`{{{d{Bn}}}Bd}{{{d{Bl}}}{{d{Bn}}}}{{{d{Bn}}}{{d{Bn}}}}`{{{d{Bn}}CjBd{d{Fj}}{d{Fj}}}Al}{{{d{Bn}}CjBd{d{Fj}}lCl}Al}{{{d{Bn}}CjBd{d{Fj}}lClGb}Gb}{{{d{Bn}}CjBdlnlCl}Al}{{dCjBdlnlCll}Al}0{{{d{Bn}}CjBdlnln}Al}{{dCjBdlnlnl}Al}0{{{d{Bn}}CjBdlnlnl}Al}{{dCjBdlCllnl}Al}0{{{d{Bn}}CjBdlCllCl}Al}{{dCjBdlCllCll}Al}0{{{d{Bn}}{d{Fj}}Bd}{{B`{{A`{BdFj}}}}}}{{{d{Bn}}CjBd{d{Fj}}{d{Fj}}lGb}Gb}{{CnDl}Bn}{{Cn{d{Gf}}{d{Gf}}GbBdl}Gh}{{{d{Bn}}l}c{}}{{CnFnDl}Bn}{{{d{DfGh}}}{{Ab{Bd}}}}{{{d{Gh}}FlFlFl}Fl}`````{{{d{Bn}}}n}{{{d{Bn}}l}{{d{{Eh{Gf}}}}}}`{{{d{Bn}}}{{d{j}}}}{{{d{Bn}}}Cn}{{{d{Gh}}}Cn}{{{d{Bn}}}{{d{Fn}}}}`{{{d{Bn}}}l}``{{}Bd}`{{{d{DfG`}}nn}Al}`{{{d{Fn}}c}FbGj}{{{d{Bn}}{d{Dfc}}Bdlnln}Al{}}{dc{}}{dAd}00`{{{d{Bn}}{d{Fj}}}{{Ab{n}}}}{{{d{Bn}}BdFl}{{Ab{{A`{ln}}}}}}{c{{Fb{e}}}{}{}}00000{{}{{Fb{c}}}{}}00000{dFd}00000`{{{d{DfGh}}}Dl}{{}c{}}00000{{nn}G`}{nGb}{cAl{{Gl{Gb}{{Cd{Gb}}}}}}`````{{{d{{H`{}{{Gn{c}}}}}}CjBdlCll{d{c}}}Al{HbHd}}{{{d{Bn}}{d{Fj}}nnc}Al{{Gl{{d{Ef}}}}}}{{{d{Bn}}{d{Fj}}nn}Ef}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}`{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{nAl}{{{d{{H`{}{{Gn{c}}}}}}l{d{Dfe}}}{{Dh{c}}}{HbHd}Dj}{{{d{c}}}Dl{}}{{{d{{H`{}{{Gn{c}}}}}}{d{c}}{d{Dfe}}}{{Dh{Al}}}{HbHd}Dn}{{{d{Dfc}}}Al{}}0{cc{}}{{}n}{{}c{}}{{{d{{H`{}{{Gn{c}}}}}}l}c{HbHd}}`{{{d{{H`{}{{Gn{c}}}}}}}n{HbHd}}{{{d{{H`{}{{Gn{c}}}}}}{d{Dfc}}BdlCllCl}Al{HbHd}}0{{{d{{H`{}{{Gn{c}}}}}}{d{Dfc}}Bdlnln}Al{HbHd}}`{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}`{dFd}`7````{{{d{Af}}}{{d{{Aj{Ah}}}}}}{d{{d{c}}}{}}0{{{d{Df}}}{{d{Dfc}}}{}}0{{{d{Hf}}}Hf}{{d{d{Dfc}}}Al{}}{dAl}{{{d{Af}}l}Al}00{{}Ah}`{n{{d{c}}}{}}0{n{{d{Dfc}}}{}}0{nAl}0{{{d{Hf}}{d{Hf}}}Dl}{{d{d{c}}}Dl{}}000`{{{d{Af}}l}n}{{{d{Af}}}{{d{Bj}}}}{{{d{Hf}}{d{DfE`}}}Eb}0{{{d{Af}}{d{DfEf}}{d{Ef}}}Al}0{{{d{Af}}ln}{{Ab{n}}}}{cc{}}0{{{d{Hf}}{d{Dfc}}}AlEj}{{{d{Af}}ln}{{d{Hf}}}}0`{{}n}0{{}c{}}0{{{d{Af}}}l}000{{{d{Af}}{d{Hf}}}n}0`{{{d{Af}}{d{DfEf}}Bd{d{Hf}}l{d{Ef}}}Al}0{{{d{Af}}{d{DfHf}}{d{Hf}}}{{Ab{Bd}}}}0{{{d{Af}}{d{DfEf}}Bdl{d{Ef}}{d{Hf}}}Al}0{{{d{Af}}{d{DfEf}}Bdl{d{Ef}}l{d{Ef}}}Al}0{CnHf}{{}Ah}`{{{d{Af}}l}n}{{{d{Af}}}{{d{Bj}}}}{{{d{Af}}}Cn}{{{d{Af}}ln}Ad}{{{d{Af}}ln}{{A`{AdBd}}}}{{{d{Af}}{d{DfHf}}l}Al}0{dc{}}{dAd}{c{{Fb{e}}}{}{}}0{{}{{Fb{c}}}{}}0{dFd}0`{{}c{}}0```````````{{{d{Hh}}CjBdlCll{d{c}}}Al{}}{d{{d{f}}}}`{{{d{Hh}}{d{j}}}{{Ab{{A`{ln}}}}}}{{{d{Hh}}ln}Ad}{d{{d{c}}}{}}000{{{d{Df}}}{{d{Dfc}}}{}}000{{{d{Hj}}}Hj}{{d{d{Dfc}}}Al{}}{dAl}{{{d{Hh}}l}Al}{{{d{Hh}}ln}{{B`{{A`{lnln}}}}}}{{{d{Hh}}ln}{{B`{{A`{ln}}}}}}{{{d{Hh}}ln}{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}{{{d{Hh}}}{{B`{{A`{Adln}}}}}}{n{{d{c}}}{}}000{n{{d{Dfc}}}{}}000{c{{Fb{Hl}}}Gd}{{{d{Hh}}l}n}{{dll}n}{{{d{Hh}}ll}n}1`{nAl}000{{{d{Hh}}l{d{Dfc}}}{{Dh{e}}}Dj{}}{{{d{c}}}Dl{}}{{{d{Hh}}{d{c}}{d{Dfe}}}{{Dh{Al}}}{}Dn}{{{d{Hh}}lCl}Ad}{{{d{Hj}}{d{Hj}}}Dl}{{d{d{c}}}Dl{}}000{{{d{Dfc}}}Al{}}{{{d{Hh}}{d{DfE`}}}Eb}{{{d{Hj}}{d{DfE`}}}Eb}0{{{d{Hl}}{d{DfE`}}}Eb}{cc{}}000{{{d{C`}}HjDl}{{Cf{Hh}}}}{{{d{j}}}{{Fb{Hjc}}}{}}{{{d{Hh}}l}{{B`{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}}}{{{d{Hh}}ln}Ad}{{{d{Hh}}l}{{B`{n}}}}{{}n}000{{}c{}}000{{{d{Hh}}}Bd}{d{{d{Bn}}}}{{{d{Hh}}CjBdlnlCl}Al}{{{d{Hh}}CjBdlnlCll}Al}{{dCjBdlnlCll}Al}0{{{d{Hh}}CjBdlnln}Al}{{dCjBdlnlnl}Al}0{{{d{Hh}}CjBdlnlnl}Al}{{{d{Hh}}CjBdlClln}Al}{{{d{Hh}}CjBdlCllnl}Al}{{dCjBdlCllnl}Al}0{{{d{Hh}}CjBdlCllCl}Al}{{{d{Hh}}CjBdlCllCll}Al}{{dCjBdlCllCll}Al}0{{{d{Hh}}l}c{}}`{{{d{Hh}}}n}{{{d{Hh}}}{{d{j}}}}{{{d{Hh}}}Cn}`{{{d{Hh}}{d{Dfc}}BdlCllCl}Al{}}{{{d{Hh}}{d{Dfc}}Bdlnln}Al{}}{{{d{D`}}}Db}{{{d{Hh}}}Db}{dc{}}{dAd}0{c{{Fb{e}}}{}{}}00{{{d{j}}}{{Fb{Hjc}}}{}}1{{}{{Fb{c}}}{}}{{{d{Hh}}}{{Fb{{d{f}}c}}}{}}1{{{d{Hh}}}{{Fb{{d{Bn}}c}}}{}}22{dFd}000{{}c{}}000```{{CnBdBdBdBdBd}Bd}``{{CnDll}{{B`{{A`{BdBdBd}}}}}}```````{Cn{{d{{Eh{l}}}}}}0```````````````````````{{{d{Bl}}}{{d{Bn}}}}```````````````````````````````{{{d{{I`{}{{Hn{c}}}}}}CjBdlnln}Alh}`{{{d{{I`{}{{Hn{c}}}}}}}{{Ib{c}}}h}`````````{{{d{{I`{}{{Hn{c}}}}}}ln}Adh}`````{{{d{{I`{}{{Hn{c}}}}}}l}nh}``````````````````````````{{{d{{I`{}{{Hn{c}}}}}}}lh}`0````````````````````````````````{{{Ib{c}}l}Id{}}``{{{d{If}}CjBdlnCl}Al}```{d{{d{c}}}{}}0{{{d{Df}}}{{d{Dfc}}}{}}0{n{{d{c}}}{}}0{n{{d{Dfc}}}{}}0{nAl}0{{{d{Ih}}{d{DfE`}}}Eb}{{{d{If}}{d{DfE`}}}Eb}{cc{}}0{{{d{If}}lnn}n}``{{{d{If}}ln}{{Ij{n}}}}{{{d{If}}n}{{d{Ih}}}}{{}n}0{{}c{}}0{{{d{{Cb{{B`{n}}}}}}}If}{{{d{If}}}n}{c{{Fb{e}}}{}{}}0{{}{{Fb{c}}}{}}0{dFd}055`{{{d{{Il{c}}}}CjBdlnln}Alh}{{{d{{Il{c}}}}lnln}{{d{Ef}}}h}{{{d{Df{Il{c}}}}lnln}{{d{DfEf}}}h}`{{{d{{Il{c}}}}}C`Bb}{{{d{Df{Il{c}}}}lAd}Alh}{{{d{{Il{c}}}}}{{Ib{e}}}h{}}`{{{d{{Ib{c}}}}{d{{Cb{n}}}}}{{Cb{{Cb{{B`{{B`{Ef}}}}}}}}}h}{{{d{{Il{c}}}}ln}Adh}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{Il{c}}}}ll}{{Fb{AlIn}}}Bb}{{{d{{Il{c}}}}}{{Il{c}}}h}{{d{d{Dfc}}}Al{}}{dAl}{{{d{{Il{c}}}}l}Alh}{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{{Il{c}}}}l}nh}{nAl}{{{d{{Il{c}}}}{d{{Il{c}}}}}Dlh}{{d{d{c}}}Dl{}}000{{{d{Df{Il{c}}}}ll}AlBb}{{{d{{Il{c}}}}{d{DfE`}}}Ebh}{{{d{c}}}IlI`}{cc{}}{{{Ib{c}}{d{C`}}}{{Cf{{Il{c}}}}}Bb}``{{}n}{{}c{}}{{{d{{Il{c}}}}}lh}{{{d{{Il{c}}}}}{{Ab{l}}}h}1`{{{Ib{c}}Ad{Cb{n}}}{{Il{c}}}h}{{{d{Df{Il{c}}}}e{d{j}}Dl}{{Cf{Al}}}Bb{{Ch{{d{j}}}{{Cd{{Cf{{A`{ln}}}}}}}}}}{{{d{Df{Il{c}}}}lnln{d{{Eh{Bd}}}}}Alh}{{{d{Df{Il{c}}}}lnAd}Alh}{{{d{{Il{c}}}}{d{j}}}{{Ab{{A`{ln}}}}}h}{{{d{{Il{c}}}}{d{{Il{c}}}}}{{Fb{AlAd}}}h}{{{d{{Il{c}}}}{d{DfC`}}}AlBb}{dc{}}{dAd}{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}>{{{Ib{c}}l}{{Il{c}}}h}``{{{d{{J`{c}}}}CjBdlnln}Alh}{{{d{Df{J`{c}}}}l{B`{Ad}}}Alh}{{{d{Df{J`{c}}}}l{B`{Ef}}}Alh}{{{d{{J`{c}}}}}{{Ib{c}}}h}{{{d{{J`{c}}}}ln}Adh}{d{{d{c}}}{}}0{{{d{Df}}}{{d{Dfc}}}{}}0{{{d{{J`{c}}}}l}Alh}{n{{d{c}}}{}}0{n{{d{Dfc}}}{}}0{{{d{{J`{c}}}}l}nh}{nAl}0{{{d{{J`{c}}}}{d{{J`{c}}}}}Dlh}{{d{d{c}}}Dl{}}000{{{d{{J`{c}}}}{d{DfE`}}}Ebh}{{{d{{J`{c}}}}ln}nh}`{cc{}}0{{{Ib{c}}{d{C`}}}{{Cf{{J`{c}}}}}h}{{{d{{J`{c}}}}ln}F`h}`{{{d{{J`{c}}}}}{{Ib{{Jb{c}}}}}h}``{{}n}0{{}c{}}0`{{{d{{J`{c}}}}}lh}{{{d{{J`{c}}}}}{{Ab{l}}}h}1``{{{Ib{c}}Adl}{{J`{c}}}h}`{dAd}{c{{Fb{e}}}{}{}}0{{}{{Fb{c}}}{}}0{dFd}077{{{Ib{c}}l}{{J`{c}}}h}``````{{{d{{Jd{c}}}}CjBdlnlCl}AlBh}{{{d{{Jd{c}}}}CjBdlnln}AlBh}{{{d{{Jd{c}}}}ln{Ab{{B`{Ad}}}}}AlBh}{{{d{{Jd{c}}}}}{{Ib{c}}}Bh}``````{{{d{{Jd{c}}}}ln}AdBh}{d{{d{c}}}{}}000{{{d{Df}}}{{d{Dfc}}}{}}000{{{d{Jf}}}Jf}{{d{d{Dfc}}}Al{}}{dAl}{{{d{{Jd{c}}}}l}AlBh}`{n{{d{c}}}{}}000{n{{d{Dfc}}}{}}000{{{d{{Jd{c}}}}l}nBh}{nAl}000`4{{{d{{Jd{c}}}}{d{DfE`}}}EbBh}{{{d{Jf}}{d{DfE`}}}Eb}{cc{}}000`````{{{d{{Jd{c}}}}}{{d{{Jh{{B`{Ad}}}}}}}Bh}`````{{{d{{Jd{c}}}}lln}nBh}```{{{d{{Jd{c}}}}ln}{{d{Jf}}}Bh}{{}n}000{{{d{{Jd{c}}}}ln}nBh}{{}c{}}0000{{{d{{Jd{c}}}}{Jj{l}}}{{`{{En{}{{El{Jl}}}}}}}Bh}{{{d{{Jd{c}}}}l}{{`{{En{}{{El{{A`{ln}}}}}}}}}Bh}{{{d{{Jd{c}}}}lCl}{{`{{En{}{{El{{A`{lnlCl}}}}}}}}}Bh}{{{d{{Jd{c}}}}}lBh}{{{d{{Jd{c}}}}}{{Ab{l}}}Bh}1```````{{{Ib{c}}Adl}{{Jd{c}}}Bh}{{{d{Df{Jn{ce}}}}}{{Ab{g}}}Bh{{En{}{{El{l}}}}}{}}```{{{d{{Jd{c}}}}l}nBh}``{{{d{{Jd{c}}}}lnln}nBh}`{{{d{{Jd{c}}}}llnCl}ClBh}`{dc{}}{dAd}{c{{Fb{e}}}{}{}}000{{}{{Fb{c}}}{}}000{dFd}000????{{{Ib{c}}l}{{Jd{c}}}Bh}`{{{d{{K`{c}}}}CjBdlnln}AlI`}{{{d{{K`{c}}}}}{{Ib{e}}}I`{}}`{{{d{{K`{c}}}}ln}AdI`}`{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{K`{c}}}}l}AlI`}{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{{K`{c}}}}l}nI`}{nAl}{{{d{{K`{c}}}}{d{DfE`}}}EbI`}{cc{}}{{}n}{{}c{}}{{{d{{K`{c}}}}}lI`}0{{{Ib{Jb}}{Ib{c}}}{{K`{c}}}I`}{{{d{{K`{c}}}}}{{Ib{Jb}}}I`}`{{{d{{K`{c}}}}}{{Ib{c}}}I`}`{dAd}{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}8`````````````{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}CjBdlCl}AlI`{{I`{}{{Hn{}}}}}}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}CjlCl}DlI`{{I`{}{{Hn{}}}}}}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}CjBdln}AlI`{{I`{}{{Hn{}}}}}}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}l}{{A`{KhKhKj}}}I`{{I`{}{{Hn{}}}}}}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}l}AlI`{{I`{}{{Hn{}}}}}}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}}lI`{{I`{}{{Hn{}}}}}}``````````{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}Kll}AlI`{{I`{}{{Hn{}}}}}}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}l{d{{Eh{n}}}}}KnI`{{I`{}{{Hn{}}}}}}`{{{Ib{c}}}L`I`}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}l}{{Ab{{d{Kh}}}}}I`{{I`{}{{Hn{}}}}}}`````0```````4``````{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}}CnI`{{I`{}{{Hn{}}}}}}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}l}{{Ab{{d{Kj}}}}}I`{{I`{}{{Hn{}}}}}}````````{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}}{{Ib{c}}}I`{{I`{}{{Hn{}}}}}}```````{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}}{{Ib{e}}}I`{{I`{}{{Hn{}}}}}}``````{{{Ib{c}}{Ib{e}}l}LbI`{{I`{}{{Hn{}}}}}}```{{{d{{Ld{c}}}}lCl}AlI`}{{{d{{Ld{c}}}}lKl}AlI`}{{{d{{Ld{c}}}}l{B`{Ef}}}AlI`}{{{d{{Ld{c}}}}l{B`{Ef}}}{{Ij{l}}}I`}{{{d{{Ld{c}}}}CjBdln}AlI`}{{{d{{Ld{c}}}}{d{DfEf}}Bdln}AlI`}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{Ld{c}}}}l}AlI`}{{{d{{Ld{c}}}}}lI`}0```{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{{Ld{c}}}}l}LfI`}{nAl}5{cc{}}{{{d{{Ld{{Jd{c}}}}}}l}{{B`{{B`{Bd}}}}}Bh}{{{d{{Ld{c}}}}l}{{Ab{{d{Kh}}}}}I`}```{{}n}{{}c{}}2```9```{{{Ib{Jd}}{Ib{c}}l}{{Ld{c}}}I`}:{{{d{{Ld{c}}}}}{{B`{l}}}I`}{{{d{{Ld{c}}}}ln}{{d{Ef}}}I`}```{{{d{{Ld{c}}}}l}{{Ab{{d{Kj}}}}}I`}```{{{d{{Ld{c}}}}l{Ab{Kh}}}AlI`}0{{{d{{Ld{c}}}}l{Ab{Kj}}}AlI`}{{{d{{Ld{c}}}}}{{Ib{e}}}I`{}}```0```{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}:9`{{{d{{Lh{ce}}}}CjBdln}AlI`{{I`{}{{Hn{}}}}}}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{Lh{ce}}}}}{{Lh{ce}}}I`{{I`{}{{Hn{}}}}}}{{d{d{Dfc}}}Al{}}{dAl}{{{d{{Lh{ce}}}}l}AlI`{{I`{}{{Hn{}}}}}}{{{d{{Lh{ce}}}}}lI`{{I`{}{{Hn{}}}}}}`{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{nAl}{cc{}}{{{d{i}}}{{Lh{eg}}}h{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}{{Kf{}{{Kb{e}}{Kd{g}}}}}}{{{Ib{e}}{Ib{g}}l{Cb{Kn}}}{{Lh{eg}}}h{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{Ib{c}}}{{Lh{cc}}}I`}{{{d{{Lh{ce}}}}l}{{Ab{{d{Kh}}}}}I`{{I`{}{{Hn{}}}}}}`{{}n}{{}c{}}2``{{{Ib{e}}{Ib{g}}l}{{Lh{eg}}}h{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{d{{Lh{ce}}}}l}{{Ab{{d{Kj}}}}}I`{{I`{}{{Hn{}}}}}}`{{{Lh{eg}}{Ib{i}}}{{Lh{ig}}}h{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{Lh{eg}}{Ib{i}}}{{Lh{ei}}}h{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{d{{Lh{ce}}}}}{{Ib{g}}}I`{{I`{}{{Hn{}}}}}{}}`0`{dc{}}{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}9{{{Ib{c}}{Ib{e}}l}{{Lh{ce}}}I`{{I`{}{{Hn{}}}}}}`{{{d{{Lj{ce}}}}CjBdln}AlI`{{I`{}{{Hn{}}}}}}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{Lj{ce}}}}}lI`{{I`{}{{Hn{}}}}}}`{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{nAl}{cc{}}{{}n}{{}c{}}{{{Ib{c}}{Ib{e}}l}{{Lj{ce}}}I`{{I`{}{{Hn{}}}}}}{{{d{{Lj{ce}}}}}{{Ib{g}}}I`{{I`{}{{Hn{}}}}}{}}`0`?>=21`{{{d{{Ll{c}}}}CjBdln}AlI`};:{{{d{{Ll{c}}}}l}AlI`}{{{d{{Ll{c}}}}}lI`}:987{{{d{{Ll{c}}}}l}{{Ab{{d{Kh}}}}}I`}`760``1{{{Ib{{K`{c}}}}{Ib{{K`{c}}}}{Ib{{Ln{Jb}}}}}{{Ll{c}}}I`}{{{d{{Ll{c}}}}l}{{Ab{{d{Kj}}}}}I`}`{{{d{{Ll{c}}}}}{{Ib{e}}}I`{}}`0`{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}<``{{{d{{M`{c}}}}CjBdln}AlKf}{{{d{{Mb{c}}}}CjBdln}AlKf}{d{{d{c}}}{}}0{{{d{Df}}}{{d{Dfc}}}{}}0{{{d{{M`{c}}}}}lKf}{{{d{{Mb{c}}}}}lKf}{n{{d{c}}}{}}0{n{{d{Dfc}}}{}}0{nAl}0``{cc{}}0{{}n}0{{}c{}}0{{{Ib{c}}{Ib{Md}}{Ib{Md}}}{{M`{c}}}Kf}{{{Ib{c}}{Ib{Md}}}{{Mb{c}}}Kf}``{{{d{{M`{c}}}}}{{Ib{e}}}Kf{}}{{{d{{Mb{c}}}}}{{Ib{e}}}Kf{}}`10{c{{Fb{e}}}{}{}}0{{}{{Fb{c}}}{}}0{dFd}077```{{{d{{I`{}{{Hn{c}}}}}}CjBdlnlCl}Alh}0{{{d{{I`{}{{Hn{c}}}}}}CjBdlCllCl}Alh}0{{{d{{I`{}{{Hn{c}}}}}}CjBdlClln}Alh}0{{{d{{I`{}{{Hn{c}}}}}}CjBdlnln}Alh}{{{d{{I`{}{{Hn{c}}}}}}}{{Ib{c}}}h}{{{d{{I`{}{{Hn{c}}}}}}ln}Adh}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{I`{}{{Hn{c}}}}}}l}Alh}0{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{{I`{}{{Hn{c}}}}}}l}nh}{nAl}{{{d{{I`{}{{Hn{c}}}}}}lCl}Adh}0{{{d{In}}{d{DfE`}}}Eb}0{cc{}}{{}n}{{}c{}}{{{d{{I`{}{{Hn{c}}}}}}}Dlh}0{{{d{{I`{}{{Hn{c}}}}}}}lh}{{{d{{I`{}{{Hn{c}}}}}}}{{Ab{l}}}h}0001{{{d{{I`{}{{Hn{c}}}}}}}Cnh}0`{dAd}{{{d{{I`{}{{Hn{c}}}}}}}nh}0{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}`9`{{{d{{Md{c}}}}CjBdlnln}AlI`}0{{{d{{Md{c}}}}}{{Ib{e}}}I`{}}{{{d{{Md{c}}}}ln}AdI`}`{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{{Md{c}}}}l}nI`}{nAl}{{{d{Df{Md{c}}}}l}AlI`}{{{d{{Md{c}}}}{d{DfE`}}}EbI`}{cc{}}{{}n}{{}c{}}{{{d{{Md{c}}}}}lI`}{{{d{{Md{c}}}}}{{Ab{l}}}I`}1`{{{Ib{c}}l}{{Md{c}}}I`}{{{d{{Md{c}}}}lCjCl}AlI`}{{{d{Df{Md{c}}}}lCl}AlI`}9{{{d{Df{Md{c}}}}le}AlI`{{En{}{{El{n}}}}}}{{{d{Df{Md{c}}}}le}AlI`{{Mf{Cj}{{Cd{{Ab{Al}}}}}}}}{{{d{{Md{c}}}}lCj}AlI`}`{dAd}`{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}<{{Ibl}{{Md{c}}}Id}``{{{d{{Mh{c}}}}CjBdlnln}Alh}{{{d{{Mh{c}}}}}{{Ib{c}}}h}`{{{d{{Mh{c}}}}ln}Adh}{d{{d{c}}}{}}0{{{d{Df}}}{{d{Dfc}}}{}}0``{{{d{f}}lnl}Dl}{{{d{Bn}}lnl}Dl}{n{{d{c}}}{}}0{n{{d{Dfc}}}{}}0{c{{Fb{Mj}}}Gd}{{{d{{Mh{c}}}}l}nh}{nAl}0{{{d{{Mh{c}}}}{d{{Mh{c}}}}}Dlh}{{d{d{c}}}Dl{}}000{{{d{{Mh{c}}}}{d{DfE`}}}Ebh}{{{d{Mj}}{d{DfE`}}}Eb}{cc{}}0{{{Ib{c}}{d{C`}}}{{Cf{{Mh{c}}}}}h}{{}n}0{{}c{}}0``{{{d{{Mh{c}}}}}lh}{{{d{{Mh{c}}}}}{{Ab{l}}}h}``1{{{Ib{c}}l{Ab{l}}Dl}{{Mh{c}}}h}{{{d{{Mh{c}}}}{d{DfC`}}}Alh}{dAd}{c{{Fb{e}}}{}{}}0{{}{{Fb{c}}}{}}0{dFd}088{{{Ib{c}}l}{{Mh{c}}}h}`{{{Ib{Hh}}{d{C`}}}{{Cf{Ml}}}}`{{{Ib{Hh}}l}Ml}1`{{{d{{Mn{c}}}}CjBdlnlCl}AlI`}{{{d{{Mn{c}}}}CjBdlCllCl}AlI`}{{{d{{Mn{c}}}}CjBdlClln}AlI`}{{{d{{Mn{c}}}}CjBdlnln}AlI`}{{{d{{Mn{c}}}}}{{Ib{e}}}I`{}}{{{d{{Mn{c}}}}ln}AdI`}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{Mn{c}}}}l}AlI`}{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{{Mn{c}}}}l}nI`}{nAl}{{{d{{Mn{c}}}}lCl}AdI`}{{{d{{Mn{c}}}}{d{DfE`}}}EbI`}{cc{}}{{}n}`{{}c{}}{{{d{{Mn{c}}}}}DlI`}{{{d{{Mn{c}}}}}lI`}{{{d{{Mn{c}}}}}{{Ab{l}}}I`}01{{{Ib{c}}l}{{Mn{c}}}I`}{{{d{{Mn{c}}}}}CnI`}`{dAd}{{{d{{Mn{c}}}}}nI`}{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}:{{{Ib{c}}l}{{Mn{e}}}{}Id}`{{{d{{N`{eg}}}}CjBdlnlCl}Al{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}0{{{d{{N`{eg}}}}CjBdlnln}Al{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{d{{N`{eg}}}}}{{Ib{c}}}{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{d{{N`{eg}}}}ln}Ad{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}`{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{N`{eg}}}}l}Al{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{{N`{eg}}}}l}n{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{nAl}{{{d{{N`{ce}}}}{d{DfE`}}}EbI`{{I`{}{{Hn{}}}}}}{cc{}}{{}n}{{}c{}}`{{{d{{N`{eg}}}}}l{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{d{{N`{eg}}}}}{{Ab{l}}}{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}1{{{Ib{e}}{Ib{g}}}{{N`{eg}}}{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{d{{N`{eg}}}}ll}n{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}`{{{d{{N`{eg}}}}ln}l{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{dAd}{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}9{{{Ib{c}}l}{{N`{eg}}}{hAn}{{I`{}{{Hn{c}}}}Id}{{I`{}{{Hn{c}}}}Id}}`{{{Ib{c}}l}Id{}}```{{{d{{H`{}{{Gn{c}}}}}}CjBdlCll{d{c}}}Al{HbHd}}`{{{d{{H`{}{{Gn{c}}}}}}l{d{Dfe}}}{{Dh{c}}}{HbHd}Dj}{{{d{c}}}Dl{}}{{{d{{H`{}{{Gn{c}}}}}}{d{c}}{d{Dfe}}}{{Dh{Al}}}{HbHd}Dn}{{{d{{H`{}{{Gn{c}}}}}}l}c{HbHd}}`{{{d{{H`{}{{Gn{c}}}}}}}n{HbHd}}{{{d{{H`{}{{Gn{c}}}}}}{d{Dfc}}Bdlnln}Al{HbHd}}````{{{d{Nb}}{d{DfEf}}BdBd}Al}{{{d{Nb}}{d{DfEf}}Bdl{d{Ef}}}Al}{{{d{Nb}}{d{DfEf}}Bdln}Al}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{Nb}}l}Al}{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{Nb}}l}n}{nAl}{{{d{Nb}}{d{j}}}{{Cf{{A`{lEf}}}}}}0{{{d{Nb}}{Ab{l}}Nd}{{Cf{{A`{lEf}}}}}}{{{d{Nb}}{Ab{l}}Nf}{{Cf{{A`{lEf}}}}}}{{{d{Nb}}{d{j}}}{{Cf{{Nh{Ad{A`{lEf}}}}}}}}{{{d{Nb}}{d{{Eh{Nj}}}}}{{A`{lEf}}}}{cc{}}{{}n}{{}c{}}`{{{d{Nb}}{d{DfEf}}Bdl{d{Ef}}}Al}{{{d{Nb}}{d{DfEf}}Bdln}Al}00{CnNb}{{{d{Nb}}}Cn}{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}7`````````````````{{{d{j}}}{{Nn{{d{j}}Nd{Nl{{d{j}}}}}}}}0{{{d{j}}}{{Nn{{d{j}}Nf{Nl{{d{j}}}}}}}}1{d{{d{c}}}{}}00{{{d{Df}}}{{d{Dfc}}}{}}00{g{{`{{Mf{{d{j}}}{{Cd{{Nn{{d{j}}ce}}}}}}}}}{}{{O`{{d{j}}}}}{{Ob{{d{j}}ce}}}}{{{d{Nf}}}Nf}{{{d{Nd}}}Nd}{{{d{Nj}}}Nj}{{d{d{Dfc}}}Al{}}00{dAl}00{{{d{j}}}{{`{{Gl{{Od{{Nl{{d{j}}}}}}}{{Cd{Of}}}}}}}}{n{{d{c}}}{}}00{n{{d{Dfc}}}{}}00{{{d{j}}}{{Nn{{d{j}}c{Nl{{d{j}}}}}}}{OhOj}}{nAl}00{{{d{Nf}}{d{DfE`}}}Eb}{{{d{Nd}}{d{DfE`}}}Eb}{{{d{Nj}}{d{DfE`}}}Eb}{{imo}{{`{{Mf{c}{{Cd{{Nn{ckg}}}}}}}}}Ol{}{}{{Ob{ceg}}}{}{{Ob{ckg}}}{{Mf{kk}{{Cd{k}}}}}}{cc{}}00{{}n}00{{}c{}}00{{{d{j}}}{{Nn{{d{j}}{B`{{A`{NdAd}}}}{Nl{{d{j}}}}}}}}{{{d{j}}}{{Nn{{d{j}}Ad{Nl{{d{j}}}}}}}}1{{{d{j}}}{{Nn{{d{j}}{d{j}}{Nl{{d{j}}}}}}}}{{{d{j}}}{{Cf{Nd}}}}{{{d{j}}}{{Cf{{B`{{A`{NdAd}}}}}}}}{{{d{j}}}{{Nn{{d{j}}l{Nl{{d{j}}}}}}}}{g{{`{{Mf{{d{j}}}{{Cd{{Nn{{d{j}}ce}}}}}}}}}{}{{O`{{d{j}}}}}{{Ob{{d{j}}ce}}}}{{Njl}Dd}{dc{}}00{c{{Fb{e}}}{}{}}00{{}{{Fb{c}}}{}}00{dFd}00<<<","D":"BKj","p":[[10,"AdemAlgebraT",134],[1,"reference"],[5,"AdemAlgebra",134],[10,"Algebra",267],[1,"str"],[1,"i32"],[1,"usize"],[1,"tuple"],[6,"Option",1943],[5,"String",1944],[10,"PolynomialAlgebra",661],[5,"PolynomialAlgebraTableEntry",661],[5,"OnceVec",1945],[1,"unit"],[10,"Bialgebra",309],[5,"Vec",1946],[10,"GeneratedAlgebra",267],[1,"u32"],[10,"UnstableAlgebra",267],[10,"MuAlgebra",267],[5,"TruncatedPolynomialMonomialBasis",312],[10,"MilnorAlgebraT",399],[5,"MilnorAlgebra",399],[6,"Value",1947],[5,"BiVec",1948],[17,"Output"],[8,"Result",1949],[10,"Fn",1950],[6,"FpSliceMut",1951],[6,"FpSlice",1951],[5,"ValidPrime",1952],[10,"SteenrodAlgebraT",742],[6,"SteenrodAlgebraBorrow",742],[5,"AdemBasisElement",134],[0,"mut"],[8,"Result",1953],[10,"Read",1954],[1,"bool"],[10,"Write",1954],[5,"Formatter",1955],[8,"Result",1955],[6,"PorBockstein",134],[6,"FpVector",1951],[1,"slice"],[10,"Hasher",1956],[17,"Item"],[10,"Iterator",1957],[1,"isize"],[6,"Result",1958],[5,"TypeId",1959],[5,"PartitionIterator",312],[5,"Field",367],[5,"MilnorBasisElement",399],[8,"PPartEntry",399],[5,"MilnorProfile",399],[5,"Matrix2D",399],[5,"PPartAllocation",399],[10,"Deserializer",1960],[8,"PPart",399],[5,"PPartMultiplier",399],[10,"Serializer",1961],[10,"FnOnce",1950],[17,"Element"],[10,"PairAlgebra",625],[10,"Send",1962],[10,"Sync",1962],[5,"PolynomialAlgebraMonomial",661],[6,"SteenrodAlgebra",742],[6,"AlgebraType",742],[5,"AlgebraSpec",742],[17,"Algebra"],[10,"Module",1601],[5,"Arc",1963],[10,"ZeroModule",1810],[5,"BlockStructure",1025],[5,"GeneratorBasisEltPair",1025],[5,"Range",1964],[5,"FiniteDimensionalModule",1064],[5,"ModuleFailedRelationError",1601],[5,"FinitelyPresentedModule",1118],[8,"FreeModule",1175],[5,"MuFreeModule",1175],[5,"OperationGeneratorPair",1175],[5,"OnceBiVec",1945],[1,"array"],[5,"GeneratorData",1175],[5,"OffsetIterator",1175],[5,"HomModule",1296],[17,"Source"],[17,"Target"],[10,"ModuleHomomorphism",1325],[5,"Subspace",1965],[5,"QuasiInverse",1966],[5,"MatrixSliceMut",1967],[5,"Matrix",1967],[10,"IdentityHomomorphism",1325],[10,"ZeroHomomorphism",1325],[5,"MuFreeModuleHomomorphism",1405],[1,"f32"],[5,"FullModuleHomomorphism",1470],[5,"GenericZeroHomomorphism",1509],[5,"HomPullback",1531],[8,"FreeModuleHomomorphism",1405],[5,"QuotientHomomorphism",1560],[5,"QuotientHomomorphismSource",1560],[5,"QuotientModule",1647],[10,"FnMut",1950],[5,"RealProjectiveSpace",1683],[5,"RPSpec",1683],[8,"SteenrodModule",1738],[5,"SuspensionModule",1743],[5,"TensorModule",1778],[5,"SteenrodEvaluator",1826],[6,"AlgebraNode",1858],[6,"AlgebraBasisElt",1858],[5,"BTreeMap",1968],[6,"BocksteinOrSq",1858],[5,"VerboseError",1969],[8,"IResult",1970],[10,"ParseError",1969],[10,"Parser",1970],[6,"Err",1970],[5,"Error",1949],[10,"FromStr",1971],[10,"Copy",1962],[10,"Clone",1972],[5,"MilnorPairElement",625],[8,"UnstableFreeModule",1175],[5,"FPMIndexTable",1118],[8,"UnstableFreeModuleHomomorphism",1405],[8,"IResult",1858]],"r":[[1,134],[3,134],[4,267],[5,742],[6,309],[9,367],[10,267],[12,399],[14,399],[15,267],[16,661],[17,661],[18,661],[19,742],[20,742],[21,742],[22,267],[23,108],[33,108],[50,108],[57,108],[72,108],[89,134],[90,134],[91,134],[94,134],[108,134],[109,134],[110,267],[111,742],[112,309],[113,367],[114,267],[115,399],[116,399],[117,267],[118,661],[119,661],[120,661],[121,742],[122,742],[123,742],[124,267],[873,312],[874,312],[875,312],[876,312],[879,312],[887,312],[888,312],[889,367],[892,399],[893,399],[894,399],[895,399],[896,399],[897,399],[898,399],[899,399],[930,1175],[931,1175],[932,1296],[933,1601],[934,1601],[935,1175],[936,1175],[937,1647],[938,1683],[939,1738],[940,1743],[941,1778],[942,1175],[943,1810],[1325,1405],[1326,1470],[1327,1509],[1328,1531],[1331,1405],[1332,1560],[1333,1560],[1336,1405],[1739,1742],[1813,625],[1814,625]],"b":[[194,"impl-Display-for-AdemBasisElement"],[195,"impl-Debug-for-AdemBasisElement"],[496,"impl-Debug-for-MilnorBasisElement"],[497,"impl-Display-for-MilnorBasisElement"],[498,"impl-Debug-for-Matrix2D"],[499,"impl-Display-for-Matrix2D"],[691,"impl-Debug-for-PolynomialAlgebraMonomial"],[692,"impl-Display-for-PolynomialAlgebraMonomial"],[803,"impl-Display-for-AlgebraType"],[804,"impl-Debug-for-AlgebraType"],[860,"impl-TryInto%3C%26AdemAlgebra%3E-for-%26SteenrodAlgebra"],[862,"impl-TryInto%3C%26MilnorAlgebra%3E-for-%26SteenrodAlgebra"],[1417,"impl-ModuleHomomorphism-for-MuFreeModuleHomomorphism%3CU,+M%3E"],[1418,"impl-MuFreeModuleHomomorphism%3CU,+M%3E"],[1623,"impl-Debug-for-ModuleFailedRelationError"],[1624,"impl-Display-for-ModuleFailedRelationError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADoGwQABAAAAAwAAAAYAAAAIAAEADAADABEABgAZAAAAHwAAACIAAAAkAAAAKAAAACoACAA0AAAANwAHAEEAAABDAAEARwABAEoAAgBPAAYAVwACAF0AAQBgAAAAZQACAGkAAABsABEAfwACAIMAAACFAAEAigABAI0ABQCUAAAAlgAAAJgADwCpABwAyQAHANMABwDfAAEA4gAAAOQACgDwAAEA8wACAPcAAAD5ABIADwEAABcBAQAjAQAAJwEBADkBAQA8AQAAPgELAEwBAABOAQEAUQEEAFgBCgBkAQsAcQEOAIEBAACDAQQAiQEMAJcBAQCaAQYAogEAAKUBEgC5ATQA7wEFAPsBCgAHAgkAFwIBABoCAAAcAgMAIQIVADgCAQA7AgIAQAIFAEcCCgBTAhQAaQIGAHECAQB0AgEAegIIAIYCAACJAgAAjgIqALsCBQDDAmMAKwMIADgDNQBwAwUAdwMCAHsDBgCDAwIAiAMJAJMDAQCWAwEAmQMAAJsDAgCfAwUApwMAAKkDAACsAwYAtAMIAL8DAwDEAwQAzAMFANUDCADfAwAA4QMDAOYDEwD7AwIA/wMCAAMEAAAFBA4AFwQBABsEAQAfBAsALQQYAEgEAwBNBCwAfAQHAIYEEwCbBCsAywQBANAEBQDaBAQA5AQAAOgEEwD9BBMAEgUMACAFAAAiBQwAMAUAADIFAAA0BQcAPwUBAEQFBgBNBQ4AXQUkAIMFAACFBQYAjwUEAJYFBACcBQkApwUXAMAFCwDNBQUA1AUBANcFAgDcBRIA8AUAAPIFCQD9BQcABgYCAAoGIAAtBgEAMQYRAEQGAABHBgQATgYBAFIGAQBVBgAAWAYBAFsGAABnBggAcQYDAHYGBwB/BgAAgQYCAIUGBACLBgAAjQYAAI8GBQCWBhoAswYCALgGJwDhBgEA5AYdAAMHAAAFBw8AFgcAABkHAwAeBwAAIQcDACYHAAAoBwoANAcAADYHAAA4BxAASgcBAE0HEABfBxcAegcCAIAHBgCIBw8A"}],["algebra_dim",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["bivec",{"t":"FNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNN","n":["BiVec","borrow","borrow_mut","clone","clone_into","clone_to_uninit","data","default","deserialize","eq","extend","extend_negative","extend_with","fmt","from","from_vec","get","get_max","index","index_mut","into","into_iter","","","into_iter_enum","into_vec","is_empty","iter","iter_enum","iter_mut","iter_mut_enum","last","len","max_degree","min_degree","","new","push","range","reserve","serialize","split_borrow_mut","to_owned","try_from","try_into","type_id","with_capacity"],"q":[[0,"bivec"],[47,"core::clone"],[48,"core::result"],[49,"serde::de"],[50,"core::cmp"],[51,"core::iter::traits::collect"],[52,"core::ops::function"],[53,"core::fmt"],[54,"alloc::vec"],[55,"core::option"],[56,"core::iter::traits::double_ended"],[57,"core::slice::iter"],[58,"core::ops::range"],[59,"serde::ser"],[60,"core::any"]],"i":"`f000000000000000000000000000000000000000000000","f":"`{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{{f{c}}}}}{{f{c}}}h}{{b{b{dc}}}j{}}{bj}`{{}{{f{c}}}{}}{c{{l{{f{e}}}}}nA`}{{{b{{f{c}}}}{b{{f{c}}}}}AbAd}{{{b{d{f{c}}}}e}j{}{{Ah{}{{Af{c}}}}}}{{{b{d{f{c}}}}Ajc}jh}{{{b{d{f{c}}}}Aje}j{}{{An{Aj}{{Al{c}}}}}}{{{b{{f{c}}}}{b{dB`}}}BbBd}{cc{}}{{Aj{Bf{c}}}{{f{c}}}{}}{{{b{{f{c}}}}Aj}{{Bh{{b{c}}}}}{}}{{{b{{f{c}}}}Aj}{{b{c}}}{}}0{{{b{d{f{c}}}}Aj}{{b{dc}}}{}}{{}c{}}{{{f{c}}}e{}{}}{{{b{d{f{c}}}}}e{}{}}{{{b{{f{c}}}}}e{}{}}{{{f{c}}}{{`{{Bl{}{{Af{{Bj{Ajc}}}}}}}}}{}}{{{f{c}}}{{Bf{c}}}{}}{{{b{{f{c}}}}}Ab{}}{{{b{{f{c}}}}}{{Bn{c}}}{}}{{{b{{f{c}}}}}{{`{{Bl{}{{Af{{Bj{Aj{b{c}}}}}}}}}}}{}}{{{b{d{f{c}}}}}{{C`{c}}}{}}{{{b{d{f{c}}}}}{{`{{Bl{}{{Af{{Bj{Aj{b{dc}}}}}}}}}}}{}}{{{b{{f{c}}}}}{{Bh{{b{c}}}}}{}}{{{b{{f{c}}}}}Aj{}}00`{Aj{{f{c}}}{}}{{{b{d{f{c}}}}c}j{}}{{{b{{f{c}}}}}{{Cb{Aj}}}{}}{{{b{d{f{c}}}}Cd}j{}}{{{b{{f{c}}}}e}lCfCh}{{{b{d{f{c}}}}AjAj}{{Bj{{b{dc}}{b{dc}}}}}{}}{bc{}}{c{{l{e}}}{}{}}{{}{{l{c}}}{}}{bCj}{{AjAj}{{f{c}}}{}}","D":"Ab","p":[[1,"reference"],[0,"mut"],[5,"BiVec",0],[10,"Clone",47],[1,"unit"],[6,"Result",48],[10,"Deserializer",49],[10,"Deserialize",49],[1,"bool"],[10,"PartialEq",50],[17,"Item"],[10,"IntoIterator",51],[1,"i32"],[17,"Output"],[10,"FnMut",52],[5,"Formatter",53],[8,"Result",53],[10,"Debug",53],[5,"Vec",54],[6,"Option",55],[1,"tuple"],[10,"DoubleEndedIterator",56],[5,"Iter",57],[5,"IterMut",57],[5,"Range",58],[1,"usize"],[10,"Serialize",59],[10,"Serializer",59],[5,"TypeId",60]],"r":[],"b":[[21,"impl-IntoIterator-for-BiVec%3CT%3E"],[22,"impl-IntoIterator-for-%26mut+BiVec%3CT%3E"],[23,"impl-IntoIterator-for-%26BiVec%3CT%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACYACAAAAAAAAgAJAA4AAAAQAAEAEwABABYACgAjAAYAKwAEAA=="}],["bruner",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["chart",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["chart",{"t":"PKPTRTTPTGSPTFFNNNNNNNNNNNNNMNNNNNNNMNNOOOONNMNNOOOOMNNNMNNNNNNNNNNN","n":["Above","Backend","Below","EXT","Error","GRID_WIDTH","HEADER","Left","MARGIN","Orientation","PATTERNS","Right","STYLES","SvgBackend","TikzBackend","borrow","","","borrow_mut","","","drop","","from","","","get_coords","","header","","","init","into","","","legend","line","","","max_x","","max_y","","new","","node","","","num_nodes","","out","","structline","","","structline_matrix","text","","","try_from","","","try_into","","","type_id","",""],"q":[[0,"chart"],[68,"std::io"],[69,"core::result"],[70,"std::io::error"],[71,"core::option"],[72,"alloc::vec"],[73,"core::fmt"],[74,"core::any"]],"i":"Bf`0Ah0fl31``31``31031010310102102310121010101021010102102210310310310","f":"```````````````{b{{b{c}}}{}}00{{{b{d}}}{{b{dc}}}{}}00{{{b{d{f{c}}}}}hj}{{{b{d{l{c}}}}}hj}{cc{}}00{{{b{{f{c}}}}nnA`}{{Ad{AbAbAb}}}j}{{{b{{l{c}}}}nnA`}{{Ad{AbAbAb}}}j}{{{b{d{Ah{}{{Af{c}}}}}}nn}{{Aj{hc}}}{}}{{{b{d{f{c}}}}nn}{{Aj{he}}}j{}}{{{b{d{l{c}}}}nn}{{Aj{he}}}j{}}2{{}c{}}00{c{{Al{h}}}j}{{{b{d{Ah{}{{Af{c}}}}}}nnnn{b{An}}}{{Aj{hc}}}{}}{{{b{d{f{c}}}}nnnn{b{An}}}{{Aj{he}}}j{}}{{{b{d{l{c}}}}nnnn{b{An}}}{{Aj{he}}}j{}}````{c{{f{c}}}j}{c{{l{c}}}j}{{{b{d{Ah{}{{Af{c}}}}}}nnA`}{{Aj{hc}}}{}}{{{b{d{f{c}}}}nnA`}{{Aj{he}}}j{}}{{{b{d{l{c}}}}nnA`}{{Aj{he}}}j{}}````{{{b{d{Ah{}{{Af{c}}}}}}{Ad{nnA`}}{Ad{nnA`}}{B`{{b{An}}}}}{{Aj{hc}}}{}}{{{b{d{f{c}}}}{Ad{nnA`}}{Ad{nnA`}}{B`{{b{An}}}}}{{Aj{he}}}j{}}{{{b{d{l{c}}}}{Ad{nnA`}}{Ad{nnA`}}{B`{{b{An}}}}}{{Aj{he}}}j{}}{{{b{d{Ah{}{{Af{c}}}}}}{Ad{nn}}{Ad{nn}}{Bd{{Bd{Bb}}}}{B`{{b{An}}}}}{{Aj{hc}}}{}}{{{b{d{Ah{}{{Af{c}}}}}}nneBf}{{Aj{hc}}}{}Bh}{{{b{d{f{c}}}}nneBf}{{Aj{hg}}}jBh{}}{{{b{d{l{c}}}}nneBf}{{Aj{hg}}}jBh{}}{c{{Aj{e}}}{}{}}00{{}{{Aj{c}}}{}}00{bBj}00","D":"Ad","p":[[1,"reference"],[0,"mut"],[5,"SvgBackend",0],[1,"unit"],[10,"Write",68],[5,"TikzBackend",0],[1,"i32"],[1,"usize"],[1,"f32"],[1,"tuple"],[17,"Error"],[10,"Backend",0],[6,"Result",69],[8,"Result",70],[1,"str"],[6,"Option",71],[1,"u32"],[5,"Vec",72],[6,"Orientation",0],[10,"Display",73],[5,"TypeId",74]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADoABAAAAAMABQASAB0AAwAlAB8A"}],["d2_charts",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["define_module",{"t":"HHHH","n":["gens_to_json","get_gens","interactive_module_define_fdmodule","interactive_module_define_fpmodule"],"q":[[0,"define_module"],[4,"alloc::string"],[5,"alloc::vec"],[6,"bivec"],[7,"serde_json::value"],[8,"anyhow"],[9,"fp::prime::primes_generic"]],"i":"````","f":"{{{h{{f{{d{b}}}}}}}j}{{}{{l{{f{{d{b}}}}}}}}{{{h{nj}}A`}{{l{Ab}}}}0","D":"`","p":[[5,"String",4],[5,"Vec",5],[5,"BiVec",6],[1,"reference"],[6,"Value",7],[8,"Result",8],[0,"mut"],[5,"ValidPrime",9],[1,"unit"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAQAEAAAAAAAAQACAAMABAA="}],["differentials",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["ext",{"t":"ICCCCCCCCRKKKGEFRPFFKPRRFRMNNNNNNNNNNNNNNNNMNOMNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNMNNMNNMNNNNMNNNNNONNMNNNNNNNNNNNNNNNNNMNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFIINNNNNNNNNNNNNNNNNOOONNNNNNNNOOONNNNNFIINNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOONNNPPPFFPPPPPPPGFGPPPPOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOORITFFKFRJRRNNNNMNNNNNNNNMNNNNNMNNNNNNNNNNNNNNNNNNNNMNONNNNNMNNNNMNNNNNMNMNOMNOMNONNNNNNNNNNMNFFINNNNNNNHHHNNNNNNNNNNNHNNNNHNNHNNNHNHHHHHHNNNNNNNNNNHNIHHH","n":["CCC","chain_complex","nassau","resolution","resolution_homomorphism","save","secondary","utils","yoneda","Algebra","AugmentedChainComplex","BoundedChainComplex","ChainComplex","ChainComplexGrading","ChainHomotopy","ChainMap","","Cohomological","FiniteAugmentedChainComplex","FiniteChainComplex","FreeChainComplex","Homological","Homomorphism","Module","StemIterator","TargetComplex","algebra","","","apply_quasi_inverse","augment","borrow","","","","","borrow_mut","","","","","boundary_string","ccdz","chain_map","","chain_maps","compute_through_bidegree","","","deref","","","","","deref_mut","","","","","differential","","","drop","","","","","euler_characteristic","filtration_one_product","filtration_one_products","from","","","","","","graded_dimension_string","has_computed_bidegree","","","init","","","","","into","","","","","into_iter","iter_nonzero_stem","iter_stem","map","","max_s","","","min_degree","","","module","","","new","next","next_homological_degree","","","number_of_gens_in_bidegree","pop","prime","s_shift","save_dir","save_file","target","","to_sseq","try_from","","","","","try_into","","","","","type_id","","","","","zero_module","","","Resolution","algebra","apply_quasi_inverse","borrow","borrow_mut","chain_map","compute_through_bidegree","compute_through_stem","deref","deref_mut","differential","drop","from","has_computed_bidegree","init","into","min_degree","module","name","new","new_with_save","next_homological_degree","prime","save_dir","set_name","target","try_from","try_into","type_id","zero_module","MuResolution","Resolution","UnstableResolution","algebra","apply_quasi_inverse","borrow","borrow_mut","chain_map","compute_through_bidegree","compute_through_bidegree_with_callback","compute_through_stem","compute_through_stem_with_callback","deref","deref_mut","differential","drop","from","has_computed_bidegree","init","into","load_quasi_inverse","","","min_degree","module","name","new","new_with_save","next_homological_degree","save_dir","set_name","should_save","","","target","try_from","try_into","type_id","zero_module","MuResolutionHomomorphism","ResolutionHomomorphism","UnstableResolutionHomomorphism","act","algebra","borrow","borrow_mut","deref","deref_mut","drop","extend","extend_all","extend_profile","extend_step","extend_step_raw","extend_through_stem","from","from_class","from_module_homomorphism","get_map","init","into","name","new","next_homological_degree","save_dir","shift","","","source","","","target","","","try_from","try_into","type_id","AugmentationQi","ChainHomotopy","ChainMap","ChecksumReader","ChecksumWriter","Combined","Differential","Kernel","NassauDifferential","NassauQi","None","ResQi","SaveDirectory","SaveFile","SaveKind","SecondaryComposite","SecondaryHomotopy","SecondaryIntermediate","Split","algebra","b","borrow","","","","","borrow_mut","","","","","clone","","clone_into","","clone_to_uninit","","create_dir","create_file","delete_file","deref","","","","","deref_mut","","","","","drop","","","","","","","eq","","equivalent","","","","","","","","exists","flush","fmt","","from","","","","","","idx","init","","","","","into","","","","","is_none","is_some","kind","magic","name","nassau_data","new","","open_file","push","read","","read_exact","resolution_data","secondary_data","to_owned","","try_from","","","","","try_into","","","","","type_id","","","","","write","","write_all","read","write","Algebra","CompositeData","HIT_GENERATOR","SecondaryComposite","SecondaryHomotopy","SecondaryLift","SecondaryResolution","Source","TAU_BIDEGREE","Target","Underlying","act","","add_composite","","algebra","","","borrow","","","borrow_mut","","","composite","","","compute_composites","compute_homotopies","compute_homotopy_step","compute_intermediate","","compute_intermediates","compute_partial","deref","","","deref_mut","","","drop","","","e3_page","extend_all","finalize","from","","","from_bytes","get_intermediate","homotopies","","","homotopy","init","","","initialize_homotopies","intermediates","","into","","","max","","new","","","prime","save_dir","","shift","","shift_t","source","","","target","","","to_bytes","try_from","","","try_into","","","type_id","","","underlying","","Config","LogWriter","QueryModuleResolution","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","construct","construct_nassau","construct_standard","deref","","deref_mut","","drop","","eq","equivalent","","","","ext_tracing_subscriber","flush","fmt","from","","get_unit","init","","init_logging","into","","into_throughput","load_module_json","new","parse_module_name","query_module","query_module_only","query_unstable_module","query_unstable_module_only","secondary_job","to_owned","try_from","","","","","try_into","","type_id","","unicode_num","write","Yoneda","yoneda_representative","yoneda_representative_element","yoneda_representative_with_strategy"],"q":[[0,"ext"],[9,"ext::chain_complex"],[136,"ext::nassau"],[166,"ext::resolution"],[205,"ext::resolution_homomorphism"],[243,"ext::save"],[366,"ext::save::SaveDirectory"],[368,"ext::secondary"],[461,"ext::utils"],[517,"ext::yoneda"],[521,"alloc::sync"],[522,"algebra::algebra::algebra_trait"],[523,"algebra::module::module_trait"],[524,"algebra::module::homomorphism"],[525,"ext::chain_complex::finite_chain_complex"],[526,"sseq::coordinates::bidegree"],[527,"alloc::vec"],[528,"sseq::coordinates::generator"],[529,"alloc::string"],[530,"algebra::module::zero_module"],[531,"core::option"],[532,"sseq::sseq"],[533,"core::iter::traits::iterator"],[534,"algebra::module::homomorphism::full_module_homomorphism"],[535,"core::ops::function"],[536,"core::marker"],[537,"fp::prime::primes_generic"],[538,"core::result"],[539,"core::any"],[540,"algebra::algebra::milnor_algebra"],[541,"anyhow"],[542,"core::convert"],[543,"fp::vector::fp_wrapper"],[544,"sseq::coordinates::range"],[545,"fp::matrix::matrix_inner"],[546,"core::ops::range"],[547,"algebra::module::homomorphism::free_module_homomorphism"],[548,"std::path"],[549,"std::io"],[550,"std::io::error"],[551,"core::fmt"],[552,"alloc::boxed"],[553,"algebra::algebra::pair_algebra"],[554,"algebra::module::free_module"],[555,"once"],[556,"dashmap"],[557,"algebra::module::finite_dimensional_module"],[558,"tracing_core::subscriber"],[559,"ext::utils::logging"],[560,"serde_json::value"],[561,"algebra::algebra::steenrod_algebra"],[562,"algebra::module::steenrod_module"],[563,"fp::matrix::subspace"],[564,"ext::chain_complex::chain_homotopy"]],"i":"`````````h``````CdMf```022`12AhAj41102DjLn32410Bf4631743435214352174343521Cl11554632185454632546323185405485485453854158288741546325463254632854`Fd0000000000000000000000000000```Fn0000000000000000MhLh22222222210222222```G`0000000000000000000000MjMl2102102222Eh00``Ef111101```1110Ej0HhHj2341023434343442210234102341100234343333444421341023342102341023433244410230304434102341023410234131Mn0Jj`0````0`00IhIn1021Jl210210310333303321021021003221023301021033021030210330301301301221021021030```L`Kb10000```10101000000`1010`10`101`1``````0100001010`1````","f":"``````````````````````````{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{l{c}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{ce}}}}}{{l{g}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{}}{{{j{{Aj{cegi}}}}}lA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}{j{Al{An{i}}}}B`{j{{An{k}}}}}Bbn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}{}{}}{{{Ah{ce}}{l{g}}{Bd{{l{i}}}}}{{Aj{ceig}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{h{}{{b{}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}}{j{{j{c}}}{}}0000{{{j{Al}}}{{j{Alc}}}{}}0000{{{j{Bf}}BhBb}Bj}{{{l{c}}}{{Ah{ce}}}{A`Bl}{{Af{}{{Ab{c}}{Ad{c}}}}{Bn{cc}}}}{{{j{{Cd{}{{C`{c}}{Cb{g}}}}}}Cf}{{l{g}}}{{h{}{{b{e}}}}}{}{{Af{}{{Ab{i}}{Ad{}}}}}{}}{{{j{{Aj{cegi}}}}Cf}{{l{k}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}{}}`{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}B`}Chn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{ce}}}}B`}ChA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Aj{cegi}}}}B`}ChA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{Cj{{j{c}}}{}}0000{Cj{{j{Alc}}}{}}0000{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}Cf}{{l{g}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{ce}}}}Cf}{{l{g}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{}}7{CjCh}0000{{{j{Cl}}Cn}D`}{{{j{Bf}}CnCjB`}{{Db{{Bd{{Bd{Cf}}}}}}}}{{{j{Bf}}CnCj}Dd}{cc{}}{{{Aj{cegi}}}{{Ah{ce}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}1111{{{j{Bf}}}Bj}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}B`}Bbn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{ce}}}}B`}BbA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Aj{cegi}}}}B`}BbA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{{}Cj}0000{{}c{}}00000{{{j{Bf}}}{{`{{Dh{}{{Df{B`}}}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{Dj{{h{}{{b{c}}{d{e}}{f{g}}}}}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{c{Dl{c}}}}}}g}{{Ah{e{Dl{e}}}}}A`{{A`{}{{b{}}}}}{{E`{{j{c}}}{{Dn{e}}}}}}{{{j{{Aj{c{Dl{c}}{Dl{c}}e}}}}i}{{Aj{g{Dl{g}}{Dl{g}}e}}}A`{{h{}{{b{}}}}}{{A`{}{{b{}}}}}{{E`{{j{c}}}{{Dn{g}}}}}}{{{j{Cl}}}Cf}{{{j{{Ah{ce}}}}}CfA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Aj{cegi}}}}}CfA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}Cnn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{ce}}}}}CnA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Aj{cegi}}}}}CnA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}Cf}{{l{e}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{ce}}}}Cf}{{l{g}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{}}{{{j{{Aj{cegi}}}}Cf}{{l{k}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}{}}{{{Bd{{l{c}}}}{Bd{{l{e}}}}}{{Ah{ce}}}{A`Bl}{{Af{}{{Ab{c}}{Ad{c}}}}{Bn{cc}}}}{{{j{Al{Dj{c}}}}}{{Db{e}}}{hEb}{}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}Cfn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}:9{{{j{Bf}}B`}Cj}{{{j{Al{Ah{ce}}}}}ChA`{{Af{}{{Ab{c}}{Ad{c}}}}{Bn{cc}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}Edn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}`{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{j{Ef}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}EhB`}{{Ej{c}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Cd{}{{C`{c}}{Cb{g}}}}}}}{{l{c}}}{{h{}{{b{e}}}}}{}{{Af{}{{Ab{i}}{Ad{}}}}}{}}{{{j{{Aj{cegi}}}}}{{l{k}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}{}}{{{j{Bf}}}{{En{El}}}}{c{{F`{e}}}{}{}}0000{{}{{F`{c}}}{}}0000{jFb}0000{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{l{e}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{ce}}}}}{{l{g}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{}}6`{{{j{{Fd{c}}}}}{{l{e}}}{{Bl{}{{b{Ff}}}}}{}}{{{j{{Fd{c}}}}{j{Al{An{e}}}}B`{j{{An{g}}}}}Bb{{Bl{}{{b{Ff}}}}}{}{}}{j{{j{c}}}{}}{{{j{Al}}}{{j{Alc}}}{}}{{{j{{Fd{c}}}}Cf}{{l{e}}}{{Bl{}{{b{Ff}}}}}{}}{{{j{{Fd{c}}}}B`}Ch{{Bl{}{{b{Ff}}}}}}0{Cj{{j{c}}}{}}{Cj{{j{Alc}}}{}}3{CjCh}{cc{}}{{{j{{Fd{c}}}}B`}Bb{{Bl{}{{b{Ff}}}}}}{{}Cj}{{}c{}}{{{j{{Fd{c}}}}}Cn{{Bl{}{{b{Ff}}}}}}9{{{j{{Fd{c}}}}}{{j{Fh}}}{{Bl{}{{b{Ff}}}}}}{{{l{c}}}{{Fd{c}}}{{Bl{}{{b{Ff}}}}}}{{{l{c}}e}{{Fj{{Fd{c}}}}}{{Bl{}{{b{Ff}}}}}{{Fl{Ef}}}}{{{j{{Fd{c}}}}}Cf{{Bl{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}}Ed{{Bl{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}}{{j{Ef}}}{{Bl{}{{b{Ff}}}}}}{{{j{Al{Fd{c}}}}Bj}Ch{{Bl{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}}{{l{e}}}{{Bl{}{{b{Ff}}}}}{}}{c{{F`{e}}}{}{}}{{}{{F`{c}}}{}}{jFb}3```{{{j{{Fn{c}}}}}{{l{e}}}h{}}{{{j{{Fn{c}}}}{j{Al{An{e}}}}B`{j{{An{g}}}}}Bbh{}{}}{j{{j{c}}}{}}{{{j{Al}}}{{j{Alc}}}{}}{{{j{{Fn{c}}}}Cf}{{l{e}}}h{}}{{{j{{Fn{c}}}}B`}Chh}{{{j{{Fn{c}}}}B`e}Chh{{E`{B`}}}}10{Cj{{j{c}}}{}}{Cj{{j{Alc}}}{}}4{CjCh}{cc{}}{{{j{{Fn{c}}}}B`}Bbh}{{}Cj}{{}c{}}```{{{j{{Fn{c}}}}}Cnh}:{{{j{{Fn{c}}}}}{{j{Fh}}}h}{{{l{c}}}{{Fn{c}}}h}{{{l{c}}e}{{Fj{{Fn{c}}}}}h{{Fl{Ef}}}}{{{j{{Fn{c}}}}}Cfh}{{{j{{Fn{c}}}}}{{j{Ef}}}h}{{{j{Al{Fn{c}}}}Bj}Chh}```{{{j{{Fn{c}}}}}{{l{e}}}h{}}{c{{F`{e}}}{}{}}{{}{{F`{c}}}{}}{jFb}3```{{{j{{G`{ce}}}}GbCfBh}ChBf{{Bf{}{{b{}}}}}}{{{j{{G`{ce}}}}}lBf{{h{}{{b{}}}}}}{j{{j{c}}}{}}{{{j{Al}}}{{j{Alc}}}{}}{Cj{{j{c}}}{}}{Cj{{j{Alc}}}{}}{CjCh}{{{j{{G`{ce}}}}B`}ChBf{{h{}{{b{}}}}}}{{{j{{G`{ce}}}}}ChBf{{h{}{{b{}}}}}}{{{j{{G`{ce}}}}{Gd{g}}}ChBf{{h{}{{b{}}}}}Gf}{{{j{{G`{ce}}}}B`{Db{{j{Gh}}}}}{{Gj{Cn}}}Bf{{Cd{}{{b{}}}}}}{{{j{{G`{ce}}}}B`{Db{{Bd{Gl}}}}}{{Gj{Cn}}}Bf{{h{}{{b{}}}}}}4{cc{}}{{Bj{l{c}}{l{e}}B`{j{{An{Cf}}}}}{{G`{ce}}}Bf{{Cd{}{{b{}}}}}}{{Bj{l{c}}{l{e}}{j{g}}}{{G`{ce}}}{CdBf}{{Cd{}{{b{}}}}}{{Af{}{{Ab{}}{Ad{}}}}}}{{{j{{G`{ce}}}}Cf}{{l{Gn}}}Bf{{h{}{{b{}}}}}}{{}Cj}{{}c{}}{{{j{{G`{ce}}}}}{{j{Fh}}}Bf{{h{}{{b{}}}}}}{{Bj{l{c}}{l{e}}B`}{{G`{ce}}}Bf{{h{}{{b{}}}}}}{{{j{{G`{ce}}}}}CnBf{{h{}{{b{}}}}}}{{{j{{G`{ce}}}}}{{j{Ef}}}Bf{{h{}{{b{}}}}}}`````````{c{{F`{e}}}{}{}}{{}{{F`{c}}}{}}{jFb}`````````````````````{j{{j{c}}}{}}0000{{{j{Al}}}{{j{Alc}}}{}}0000{{{j{Ef}}}Ef}{{{j{Eh}}}Eh}{{j{j{Alc}}}Ch{}}0{jCh}0{{Eh{j{H`}}}{{Fj{Ch}}}}{{{j{{Ej{c}}}}HbBb}{{`{Hd}}}n}{{{j{{Ej{c}}}}Hb}{{Hf{Ch}}}n}{Cj{{j{c}}}{}}0000{Cj{{j{Alc}}}{}}0000{{{j{Al{Hh{c}}}}}ChHd}{CjCh}0{{{j{Al{Hj{c}}}}}ChHl}111{{{j{Ef}}{j{Ef}}}Bb}{{{j{Eh}}{j{Eh}}}Bb}{{j{j{c}}}Bb{}}0000000{{{j{{Ej{c}}}}Hb}Bbn}{{{j{Al{Hh{c}}}}}{{Hf{Ch}}}Hd}{{{j{Ef}}{j{AlHn}}}I`}{{{j{Eh}}{j{AlHn}}}I`}{cc{}}000{{{Db{Hb}}}Ef}1`{{}Cj}0000{{}c{}}0000{{{j{Ef}}}Bb}0`{EhCf}{Eh{{j{Fh}}}}{{}{{`{{Dh{}{{Df{Eh}}}}}}}}{{Hbc}{{Hh{c}}}Hd}{c{{Hj{c}}}Hl}{{{j{{Ej{c}}}}Hb}{{Db{{Ib{Hl}}}}}n}{{{j{AlEf}}c}Ch{{Id{H`}}}}{{{j{Al{Hj{c}}}}{j{Al{An{If}}}}}{{Hf{Cj}}}Hl}{{{j{Ef}}}{{Db{{j{Hb}}}}}}{{{j{Al{Hj{c}}}}{j{Al{An{If}}}}}{{Hf{Ch}}}Hl}77{jc{}}0{c{{F`{e}}}{}{}}0000{{}{{F`{c}}}{}}0000{jFb}0000{{{j{Al{Hh{c}}}}{j{{An{If}}}}}{{Hf{Cj}}}Hd}6{{{j{Al{Hh{c}}}}{j{{An{If}}}}}{{Hf{Ch}}}Hd}`````````````{{{j{{Ih{c}}}}GbCfCnIj}ChIl}{{{j{{In{c}}}}GbCfCnIjBb}Ch{IlJ`Gf}}{{{j{Al{Ih{c}}}}CfCnCj{j{{Jd{{Jb{c}}}}}}{j{{Jd{{Jb{c}}}}}}}ChIl}{{{j{{In{c}}}}CfCn{Jf{c}}{j{Ef}}}Ch{IlJ`Gf}}{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{l{c}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Ih{c}}}}}{{l{c}}}Il}{{{j{{Jl{c}}}}}{{l{e}}}Bf{}}{j{{j{c}}}{}}00{{{j{Al}}}{{j{Alc}}}{}}00{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}Cf}{{Jf{c}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{In{c}}}}CnCj}{{j{{Ih{c}}}}}{IlJ`Gf}}{{{j{{Jl{c}}}}Cf}JfBf}{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}ChIl{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}0{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}B`}{{Gj{Cn}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}Bh}GlIl{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}Bh}GlBf}3{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}Cf}ChIl{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{Cj{{j{c}}}{}}00{Cj{{j{Alc}}}{}}00{CjCh}00{{{j{{Jl{c}}}}}{{En{El}}}Bf}8{{{j{Al{Ih{c}}}}}ChIl}{cc{}}00{{{l{{Jb{c}}}}CnBb{j{Ale}}}{{Hf{{Ih{c}}}}}IlHl}9{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{j{{Jn{{In{c}}}}}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}}{{j{{Jn{In}}}}}Bf}`{{{j{{Jl{c}}}}Cf}{{j{In}}}Bf}{{}Cj}00?{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{j{{K`{BhGl}}}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}}{{j{{K`{BhGl}}}}}Bf}{{}c{}}00{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{Gd{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}}{{Gd{{Jl{c}}}}}Bf}{{{l{{Jb{c}}}}CnBb}{{Ih{c}}}Il}{{{l{{Jb{c}}}}{l{{Jb{c}}}}CnBb}{{In{c}}}{IlJ`Gf}}{{{l{c}}}{{Jl{c}}}Bf}{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}EdIl{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{j{Ef}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}}{{j{Ef}}}Bf}{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}B`Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}}B`Bf}`{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{l{e}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}}{{l{e}}}Bf{}}`{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{l{g}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}1`{{{j{{Ih{c}}}}{j{Ale}}}{{Hf{Ch}}}IlHd}{c{{F`{e}}}{}{}}00{{}{{F`{c}}}{}}00{jFb}00{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{l{i}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}}{{l{c}}}Bf}```{j{{j{c}}}{}}0{{{j{Al}}}{{j{Alc}}}{}}0{{{j{Kb}}}Kb}{{j{j{Alc}}}Ch{}}{jCh}{{eg}{{Fj{Kd}}}{}{{Kh{Kb}{{Kf{c}}}}}{{Fl{Ef}}}}{{eg}{{Fj{{Fd{{Kj{Ff}}}}}}}{}{{Kh{Kb}{{Kf{c}}}}}{{Fl{Ef}}}}{{eg}{{Fj{{Fn{Kl}}}}}{}{{Kh{Kb}{{Kf{c}}}}}{{Fl{Ef}}}}{Cj{{j{c}}}{}}0{Cj{{j{Alc}}}{}}0{CjCh}0{{{j{Kb}}{j{Kb}}}Bb}{{j{j{c}}}Bb{}}000{{}{{`{Kn}}}}{{{j{Al{L`{c}}}}}{{Hf{Ch}}}Hd}{{{j{Kb}}{j{AlHn}}}I`}{cc{}}0{{{l{Kd}}}{{Fj{{Lb{Bb{l{Kd}}}}}}}}{{}Cj}0{{}Ch}{{}c{}}0`{{{j{Fh}}}{{Fj{Ld}}}}{c{{L`{c}}}{}}1{{{Db{Lf}}Bb}{{Fj{Kd}}}}{{{j{Fh}}{Db{Lf}}Bb}{{Fj{Kd}}}}{Bb{{Fj{{Lh{Kl}}}}}}{{}{{Fj{Lj}}}}{{}{{Db{Cf}}}}{jc{}}{c{{F`{e}}}{}{}}{{{j{Fh}}}{{F`{Kbc}}}{}}{{{Lb{{j{Fh}}e}}}{{F`{Kbg}}}{}{{Kh{Lf}{{Kf{c}}}}}{}}{{{Lb{Ldc}}}{{F`{Kbe}}}{{Kh{Lf}}}{}}3{{}{{F`{c}}}{}}0{jFb}0{CjLl}{{{j{Al{L`{c}}}}{j{{An{If}}}}}{{Hf{Cj}}}Hd}`{{{l{c}}{Ln{{Jd{e}}}}}{{M`{c}}}{Bf{Cd{}{{Cb{Jd}}}}}{{A`{}{{b{}}}}}}{{{l{c}}B`{j{{An{Cf}}}}}{{M`{c}}}{Bf{Cd{}{{Cb{Jd}}}}}}{{{l{c}}{Ln{{Jd{e}}}}g}{{M`{c}}}{Bf{Cd{}{{Cb{Jd}}}}}{{A`{}{{b{}}}}}{{Md{j{j{Mb}}CnCj}{{Dn{Cn}}}}}}","D":"N`","p":[[17,"Algebra"],[17,"Module"],[17,"Homomorphism"],[10,"ChainComplex",9],[1,"reference"],[5,"Arc",521],[10,"Algebra",522],[10,"Module",523],[17,"Source"],[17,"Target"],[10,"ModuleHomomorphism",524],[5,"FiniteChainComplex",9,525],[5,"FiniteAugmentedChainComplex",9,525],[0,"mut"],[1,"slice"],[5,"Bidegree",526],[1,"bool"],[5,"Vec",527],[10,"FreeChainComplex",9],[5,"BidegreeGenerator",528],[5,"String",529],[10,"ZeroModule",530],[10,"ZeroHomomorphism",524],[17,"TargetComplex"],[17,"ChainMap"],[10,"AugmentedChainComplex",9],[1,"u32"],[1,"unit"],[1,"usize"],[10,"BoundedChainComplex",9],[1,"i32"],[1,"isize"],[6,"Option",531],[5,"Product",532],[17,"Item"],[10,"Iterator",533],[5,"StemIterator",9],[5,"FullModuleHomomorphism",534],[17,"Output"],[10,"FnMut",535],[10,"Sized",536],[5,"ValidPrime",537],[6,"SaveDirectory",243],[6,"SaveKind",243],[5,"SaveFile",243],[5,"Adams",532],[5,"Sseq",532],[6,"Result",538],[5,"TypeId",539],[5,"Resolution",136],[5,"MilnorAlgebra",540],[1,"str"],[8,"Result",541],[10,"Into",542],[5,"MuResolution",166],[5,"MuResolutionHomomorphism",205],[6,"FpSliceMut",543],[5,"BidegreeRange",544],[10,"Sync",536],[5,"Matrix",545],[5,"Range",546],[6,"FpVector",543],[5,"MuFreeModuleHomomorphism",547],[5,"Path",548],[5,"PathBuf",548],[10,"Write",549],[8,"Result",550],[5,"ChecksumWriter",243],[5,"ChecksumReader",243],[10,"Read",549],[5,"Formatter",551],[8,"Result",551],[5,"Box",552],[10,"AsRef",542],[1,"u8"],[5,"SecondaryComposite",368],[6,"FpSlice",543],[10,"PairAlgebra",553],[5,"SecondaryHomotopy",368],[10,"Send",536],[8,"FreeModule",554],[8,"FreeModuleHomomorphism",547],[8,"CompositeData",368],[17,"Underlying"],[10,"SecondaryLift",368],[5,"SecondaryResolution",368],[5,"OnceBiVec",555],[5,"DashMap",556],[5,"Config",461],[8,"QueryModuleResolution",461],[17,"Error"],[10,"TryInto",542],[5,"FiniteDimensionalModule",557],[8,"CCC",0],[10,"Subscriber",558],[5,"LogWriter",461,559],[1,"tuple"],[6,"Value",560],[6,"AlgebraType",561],[8,"UnstableResolution",166],[8,"SteenrodModule",562],[1,"char"],[5,"ChainMap",9],[8,"Yoneda",517],[5,"Subspace",563],[10,"Fn",535],[6,"ChainComplexGrading",9],[8,"Resolution",166],[8,"ResolutionHomomorphism",205],[8,"UnstableResolutionHomomorphism",205],[15,"Split",366]],"r":[[14,564],[18,525],[19,525],[462,559],[485,559],[493,559]],"b":[[507,"impl-TryFrom%3C%26str%3E-for-Config"],[508,"impl-TryFrom%3C(%26str,+T)%3E-for-Config"],[509,"impl-TryFrom%3C(Value,+T)%3E-for-Config"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJkBOwABAAEABgABAAkAAQAOAAEAEQAHABoAAwAfAAoAKwABAC4AAAAwAAsAPQAHAEYAAABIAAAATQAAAE8ABgBbAAAAXgAMAGwABQB0ABQAigAFAJEAAwCWAAEAmQANAKgACACyAAQAuAABAL4ABwDJAAQAzwABANIABQDfAAAA4gAAAOQADwD3AAAA+QAAAP4AAAAAAQIABgETABsBHwA/AQAAQQEFAEwBJgB1AQAAdwEFAH4BAACAAR4AogEDAKcBBgCxAQkAvAERAM8BAADRAQYA2wENAOwBAgDzAQAA9wEBAPoBCQAFAgEACAIBAA=="}],["ext",{"t":"ICOOCCCCCCCORKKKGEFRPFFKPRRFRMNNNNNNNNOOCMOOMONNNNNNMONNNNNNCNNNNMNNNNNNNNNMOMMONMNNONNMONNNNNNNNNNNNNMOFFNNNNNNNONNONNNNNNNNONNNNNNNNNNNNNNNNNNNONNNNNONNNNNNNNNNOPPTSGFFFPFFNNONNNNNNNNNNNNNONNNNNOOONNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNONONNNNNNNNNNNONONONONNNNNNNNNONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONSFIFINNONNNNNOOOOOONNNNNNNNNOOONNNNNNNNNNNOOOOOOOOONNOOONOOONONNNOOONONOOONNNNNNNNNNNOOOFIINNNNNNNNNNNNNNNNNNNNOOONOOONNNOOOOOOOOOOOONNNNPPPFFPPPPPPPGFGPPPPOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNONNNNNHNHONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOORITFFKFRJRRNNNNMNNNNNNNNMNNOONNNMNNNONNNNNNNNNNNNNNNNNOMNOONNNNNMNONNNMNNNNNMNMNOMNOMNOONNNNNNNNNNMNONNNFFISONNOONNNHHHNNONNNNNNHNNHNHNHOCOOOOHHHHHOHOONNNNNNNHNOOFFNNNNONNNNNNHNNNNNNHNNNNONNNNNNNNNNOSIOOHHHHHOHHH","n":["CCC","chain_complex","differentials","modules","nassau","resolution","resolution_homomorphism","save","secondary","utils","yoneda","zero_module","Algebra","AugmentedChainComplex","BoundedChainComplex","ChainComplex","ChainComplexGrading","ChainHomotopy","ChainMap","","Cohomological","FiniteAugmentedChainComplex","FiniteChainComplex","FreeChainComplex","Homological","Homomorphism","Module","StemIterator","TargetComplex","algebra","apply_quasi_inverse","borrow","","","borrow_mut","","","boundary_string","cc","","chain_homotopy","chain_map","chain_maps","","compute_through_bidegree","current","deref","","","deref_mut","","","differential","differentials","drop","","","euler_characteristic","filtration_one_product","filtration_one_products","finite_chain_complex","from","","","graded_dimension_string","has_computed_bidegree","init","","","into","","","into_iter","iter_nonzero_stem","iter_stem","max_s","","min_degree","module","modules","next","next_homological_degree","number_of_gens_in_bidegree","prime","s_shift","save_dir","save_file","target","target_cc","to_sseq","try_from","","","try_into","","","type_id","","","vzip","","","zero_module","","FiniteAugmentedChainComplex","FiniteChainComplex","algebra","","augment","borrow","","borrow_mut","","cc","ccdz","chain_map","chain_maps","compute_through_bidegree","","deref","","deref_mut","","differential","","differentials","drop","","from","","","has_computed_bidegree","","init","","into","","map","","max_s","","min_degree","","module","","modules","new","next_homological_degree","","pop","target","target_cc","try_from","","try_into","","type_id","","vzip","","zero_module","","","End","Fix","INFINITY","MAX_NEW_GENS","Magic","MilnorSubalgebra","Resolution","SenderData","Signature","SignatureIterator","SubalgebraIterator","algebra","apply_quasi_inverse","b","borrow","","","","","","borrow_mut","","","","","","chain_map","chain_maps","clone","clone_into","clone_to_uninit","compute_through_bidegree","compute_through_stem","current","","degree","deref","","","","","","deref_mut","","","","","","differential","differentials","drop","","","","","","extend_through_degree","fmt","from","","","","","","from_bytes","has_computed_bidegree","has_signature","init","","","","","","into","","","","","","into_iter","","iter_signatures","lock","max_degree","min_degree","module","modules","name","","new","","","","new_with_save","next","","next_homological_degree","optimal_for","par_bridge","prime","profile","save_dir","","send","sender","set_name","signature_degree","signature_from_bytes","signature_mask","signature_matrix","signature_to_bytes","step0","step1","step_resolution","step_resolution_with_result","step_resolution_with_subalgebra","subalgebra","target","","to_bytes","to_owned","to_string","top_degree","try_from","","","","","","try_into","","","","","","type_id","","","","","","vzip","","","","","","write_differential","write_qi","zero_algebra","zero_module","","zero_signature","MAX_NEW_GENS","MuResolution","Resolution","SenderData","UnstableResolution","algebra","apply_quasi_inverse","b","borrow","","borrow_mut","","chain_map","chain_maps","","","complex","","","compute_through_bidegree","compute_through_bidegree_with_callback","compute_through_stem","compute_through_stem_with_callback","deref","","deref_mut","","differential","differentials","","","drop","","extend_through_degree","from","","get_kernel","has_computed_bidegree","init","","into","","kernels","","","load_quasi_inverse","","","lock","","","min_degree","module","modules","","","name","","","","new","","new_with_save","next_homological_degree","save_dir","","","","send","sender","set_name","should_save","","","step_resolution","target","try_from","","try_into","","type_id","","vzip","","zero_module","","","","MuResolutionHomomorphism","ResolutionHomomorphism","UnstableResolutionHomomorphism","act","algebra","borrow","borrow_mut","deref","deref_mut","drop","extend","extend_all","extend_profile","extend_step","extend_step_raw","extend_through_stem","from","from_class","from_module_homomorphism","get_map","get_map_ensure_length","init","into","maps","","","name","","","","new","next_homological_degree","save_dir","","","","shift","","","source","","","target","","","try_from","try_into","type_id","vzip","AugmentationQi","ChainHomotopy","ChainMap","ChecksumReader","ChecksumWriter","Combined","Differential","Kernel","NassauDifferential","NassauQi","None","ResQi","SaveDirectory","SaveFile","SaveKind","SecondaryComposite","SecondaryHomotopy","SecondaryIntermediate","Split","adler","","algebra","b","borrow","","","","","borrow_mut","","","","","clone","","clone_into","","clone_to_uninit","","create_dir","create_file","delete_file","deref","","","","","deref_mut","","","","","drop","","","","","","","eq","","equivalent","","","","","","","","exists","flush","fmt","","from","","","","","","get_save_path","idx","init","","","","","into","","","","","is_none","is_some","kind","magic","name","nassau_data","new","","open_file","","open_files","path","push","read","","read_exact","reader","resolution_data","secondary_data","to_owned","","try_from","","","","","try_into","","","","","type_id","","","","","validate_header","vzip","","","","","write","","write_all","write_header","writer","read","write","Algebra","CompositeData","HIT_GENERATOR","SecondaryComposite","SecondaryHomotopy","SecondaryLift","SecondaryResolution","Source","TAU_BIDEGREE","Target","Underlying","act","","add_composite","","algebra","","","borrow","","","borrow_mut","","","composite","","","","composites","compute_composites","compute_homotopies","compute_homotopy_step","compute_intermediate","","compute_intermediates","compute_partial","degree","deref","","","deref_mut","","","drop","","","e3_page","extend_all","finalize","from","","","from_bytes","get_intermediate","hit_generator","homotopies","","","","homotopy","init","","","initialize_homotopies","intermediates","","","into","","","max","","new","","","prime","save_dir","","shift","","shift_t","source","","","target","","","","to_bytes","try_from","","","try_into","","","type_id","","","underlying","","","vzip","","","Config","LogWriter","QueryModuleResolution","STATIC_MODULES_PATH","algebra","borrow","borrow_mut","bytes","chain_maps","clone","clone_into","clone_to_uninit","construct","construct_nassau","construct_standard","deref","deref_mut","differentials","drop","eq","equivalent","","","","ext_tracing_subscriber","fmt","from","get_unit","init","init_logging","into","load_module_json","lock","logging","max_degree","module","modules","name","parse_module_name","query_module","query_module_only","query_unstable_module","query_unstable_module_only","save_dir","secondary_job","start","target","to_owned","try_from","","","","try_into","type_id","unicode_num","vzip","writer","zero_module","LogWriter","Throughput","borrow","","borrow_mut","","bytes","deref","","deref_mut","","drop","","ext_tracing_subscriber","flush","fmt","from","","init","","init_logging","into","","into_throughput","new","start","to_string","try_from","","try_into","","type_id","","vzip","","write","writer","PENALTY_UNIT","Yoneda","cc","chain_maps","compute_kernel_image","rate_adem_operation","rate_milnor_operation","rate_operation","split_mut_borrow","target_cc","yoneda_representative","yoneda_representative_element","yoneda_representative_with_strategy"],"q":[[0,"ext"],[12,"ext::chain_complex"],[104,"ext::chain_complex::finite_chain_complex"],[163,"ext::nassau"],[316,"ext::resolution"],[404,"ext::resolution_homomorphism"],[453,"ext::save"],[591,"ext::save::SaveDirectory"],[593,"ext::secondary"],[697,"ext::utils"],[755,"ext::utils::logging"],[792,"ext::yoneda"],[805,"alloc::sync"],[806,"algebra::algebra::algebra_trait"],[807,"algebra::module::module_trait"],[808,"algebra::module::homomorphism"],[809,"sseq::coordinates::bidegree"],[810,"sseq::coordinates::generator"],[811,"alloc::string"],[812,"alloc::vec"],[813,"core::option"],[814,"sseq::sseq"],[815,"core::iter::traits::iterator"],[816,"core::marker"],[817,"fp::prime::primes_generic"],[818,"core::result"],[819,"core::any"],[820,"algebra::module::zero_module"],[821,"algebra::module::homomorphism::full_module_homomorphism"],[822,"core::ops::function"],[823,"algebra::algebra::milnor_algebra"],[824,"core::fmt"],[825,"std::io::error"],[826,"std::io"],[827,"anyhow"],[828,"core::convert"],[829,"rayon::iter::par_bridge"],[830,"std::sync::mpsc"],[831,"algebra::module::free_module"],[832,"algebra::module::homomorphism::free_module_homomorphism"],[833,"fp::matrix::matrix_inner"],[834,"fp::vector::fp_wrapper"],[835,"fp::matrix::subspace"],[836,"sseq::coordinates::range"],[837,"core::ops::range"],[838,"std::path"],[839,"alloc::boxed"],[840,"std::collections::hash::set"],[841,"std::sync::mutex"],[842,"algebra::algebra::pair_algebra"],[843,"once"],[844,"dashmap"],[845,"algebra::module::finite_dimensional_module"],[846,"tracing_core::subscriber"],[847,"serde_json::value"],[848,"algebra::algebra::steenrod_algebra"],[849,"algebra::module::steenrod_module"],[850,"algebra::module::quotient_module"],[851,"algebra::algebra::adem_algebra"],[852,"ext::chain_complex::chain_homotopy"]],"i":"``Mf0```````0h``````BjOd```022`1220DbNn210B`Eh3`502634324326Ef543Cb33`6543865465453805881583848872365465465465481``121121221221212121211211212121212121212111212212121212121Of0Fh`````1``Fd0Hb0GfGh5342105343344433100210534210534332105343421053443421053421053410433333331034310341343322304444333330334444210534210534210534210534334334`````Ib0If01011OhN`3103333323233103233233323231031031033310331033233310322310333232323233103```Ih0000000000000000000OjOl221022221021021021022222Dj00``Dh111101```1110JhJjDl02103421034343434400210342103422110343433334444023421033400210342103433044421`0`231311443421034210342103402103423202On0Ld`0````0`00KfKl1021Lf21021031021333303322102102100322102313010021033002103021033030130130212210210210300210````Ll00NfLn222```220222222`22`2`2`0`0200`````0`102222222`210``1Nh202202020`202020`2022202020202022``O`0`````0```","f":"`````````````````````````````{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{l{c}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}{j{Ah{Aj{i}}}}Al{j{{Aj{k}}}}}Ann{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}{}{}}{j{{j{c}}}{}}00{{{j{Ah}}}{{j{Ahc}}}{}}00{{{j{B`}}BbAn}Bd}```{{{j{{Bj{}{{Bf{c}}{Bh{g}}}}}}Bl}{{l{g}}}{{h{}{{b{e}}}}}{}{{Af{}{{Ab{i}}{Ad{}}}}}{}}``{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}Al}Bnn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}`{C`{{j{c}}}{}}00{C`{{j{Ahc}}}{}}00{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}Bl}{{l{g}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}`{C`Bn}00{{{j{Cb}}Cd}Cf}{{{j{B`}}CdC`Al}{{Cj{{Ch{{Ch{Bl}}}}}}}}{{{j{B`}}CdC`}Cl}`{cc{}}00{{{j{B`}}}Bd}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}Al}Ann{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{}C`}00{{}c{}}000{{{j{B`}}}{{`{{D`{}{{Cn{Al}}}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{Db{{h{}{{b{c}}{d{e}}{f{g}}}}}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{Cb}}}Bl}`{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}Cdn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}Bl}{{l{e}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}`{{{j{Ah{Db{c}}}}}{{Cj{e}}}{hDd}{}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}Bln{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{B`}}Al}C`}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}Dfn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}`{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{j{Dh}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}DjAl}{{Dl{c}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Bj{}{{Bf{c}}{Bh{g}}}}}}}{{l{c}}}{{h{}{{b{e}}}}}{}{{Af{}{{Ab{i}}{Ad{}}}}}{}}`{{{j{B`}}}{{E`{Dn}}}}{c{{Eb{e}}}{}{}}00{{}{{Eb{c}}}{}}00{jEd}00{{}c{}}00{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{l{e}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}```{{{j{{Ef{ce}}}}}{{l{g}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{}}{{{j{{Eh{cegi}}}}}lA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{{{Ef{ce}}{l{g}}{Ch{{l{i}}}}}{{Eh{ceig}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{h{}{{b{}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}}{j{{j{c}}}{}}0{{{j{Ah}}}{{j{Ahc}}}{}}0`{{{l{c}}}{{Ef{ce}}}{A`Ej}{{Af{}{{Ab{c}}{Ad{c}}}}{El{cc}}}}{{{j{{Eh{cegi}}}}Bl}{{l{k}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}{}}`{{{j{{Ef{ce}}}}Al}BnA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Eh{cegi}}}}Al}BnA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{C`{{j{c}}}{}}0{C`{{j{Ahc}}}{}}0{{{j{{Ef{ce}}}}Bl}{{l{g}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{}}5`{C`Bn}0{{{Eh{cegi}}}{{Ef{ce}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{cc{}}0{{{j{{Ef{ce}}}}Al}AnA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Eh{cegi}}}}Al}AnA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{{}C`}0{{}c{}}0{{{j{{Ef{c{En{c}}}}}}g}{{Ef{e{En{e}}}}}A`{{A`{}{{b{}}}}}{{Fb{{j{c}}}{{F`{e}}}}}}{{{j{{Eh{c{En{c}}{En{c}}e}}}}i}{{Eh{g{En{g}}{En{g}}e}}}A`{{h{}{{b{}}}}}{{A`{}{{b{}}}}}{{Fb{{j{c}}}{{F`{g}}}}}}{{{j{{Ef{ce}}}}}BlA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Eh{cegi}}}}}BlA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{{{j{{Ef{ce}}}}}CdA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Eh{cegi}}}}}CdA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}={{{j{{Eh{cegi}}}}Bl}{{l{k}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}{}}`{{{Ch{{l{c}}}}{Ch{{l{e}}}}}{{Ef{ce}}}{A`Ej}{{Af{}{{Ab{c}}{Ad{c}}}}{El{cc}}}}54{{{j{Ah{Ef{ce}}}}}BnA`{{Af{}{{Ab{c}}{Ad{c}}}}{El{cc}}}}{{{j{{Eh{cegi}}}}}{{l{k}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}{}}`{c{{Eb{e}}}{}{}}0{{}{{Eb{c}}}{}}0{jEd}0=={{{j{{Ef{ce}}}}}{{l{g}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{}}4````````````{{{j{{Fd{c}}}}}{{l{e}}}{{Ej{}{{b{Ff}}}}}{}}{{{j{{Fd{c}}}}{j{Ah{Aj{e}}}}Al{j{{Aj{g}}}}}An{{Ej{}{{b{Ff}}}}}{}{}}`{j{{j{c}}}{}}00000{{{j{Ah}}}{{j{Ahc}}}{}}00000{{{j{{Fd{c}}}}Bl}{{l{e}}}{{Ej{}{{b{Ff}}}}}{}}`{{{j{Fh}}}Fh}{{j{j{Ahc}}}Bn{}}{jBn}{{{j{{Fd{c}}}}Al}Bn{{Ej{}{{b{Ff}}}}}}0```{C`{{j{c}}}{}}00000{C`{{j{Ahc}}}{}}000006`{C`Bn}00000{{{j{{Fd{c}}}}Bl}Bn{{Ej{}{{b{Ff}}}}}}{{{j{Fh}}{j{AhFj}}}{{Eb{BnFl}}}}{cc{}}00000{{{j{Ahc}}}{{Fn{Fh}}}G`}{{{j{{Fd{c}}}}Al}An{{Ej{}{{b{Ff}}}}}}{{{j{Fh}}{j{{Aj{Gb}}}}{j{{Aj{Gb}}}}}An}{{}C`}00000{{}c{}}0000000{{{j{Fh}}Cd}{{`{{D`{}{{Cn{{Ch{Gb}}}}}}}}}}``{{{j{{Fd{c}}}}}Cd{{Ej{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}Bl}{{l{e}}}{{Ej{}{{b{Ff}}}}}{}}`{{{j{{Fd{c}}}}}{{j{Gd}}}{{Ej{}{{b{Ff}}}}}}`{{}Gf}{{{j{Fh}}Cd}Gh}{{{l{c}}}{{Fd{c}}}{{Ej{}{{b{Ff}}}}}}{{{Ch{Gj}}}Fh}{{{l{c}}e}{{Gl{{Fd{c}}}}}{{Ej{}{{b{Ff}}}}}{{Gn{Dh}}}}{{{j{AhGf}}}{{Cj{c}}}{}}{{{j{AhGh}}}{{Cj{c}}}{}}{{{j{{Fd{c}}}}}Bl{{Ej{}{{b{Ff}}}}}}{AlFh}{{}{{H`{c}}}{}}{{{j{{Fd{c}}}}}Df{{Ej{}{{b{Ff}}}}}}`{{{j{{Fd{c}}}}}{{j{Dh}}}{{Ej{}{{b{Ff}}}}}}`{{Al{Hd{Hb}}}Bn}`{{{j{Ah{Fd{c}}}}Bd}Bn{{Ej{}{{b{Ff}}}}}}`{{{j{Fh}}{j{Ahc}}}{{Fn{{Ch{Gb}}}}}G`}{{{j{Fh}}{j{Ff}}{j{{Hf{Ff}}}}Cd{j{{Aj{Gb}}}}}{{`{{D`{}{{Cn{C`}}}}}}}}{{{j{Fh}}{j{{Hh{{Hf{Ff}}}}}}Cd{j{{Aj{Gb}}}}}Hj}{{{j{{Aj{Gb}}}}{j{Ahc}}}{{Fn{Bn}}}Hl}{{{j{{Fd{c}}}}Cd}Bn{{Ej{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}Cd}{{Gl{Bn}}}{{Ej{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}Al}Bn{{Ej{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}Al}{{Gl{Bn}}}{{Ej{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}AlFh}{{Gl{Bn}}}{{Ej{}{{b{Ff}}}}}}`{{{j{{Fd{c}}}}}{{l{e}}}{{Ej{}{{b{Ff}}}}}{}}`{{{j{Fh}}{j{Ahc}}}{{Fn{Bn}}}Hl}{jc{}}{jBd}{{{j{Fh}}}Cd}{c{{Eb{e}}}{}{}}00000{{}{{Eb{c}}}{}}00000{jEd}00000{{}c{}}00000{{{j{{Fd{c}}}}AlC`C`}{{Gl{Bn}}}{{Ej{}{{b{Ff}}}}}}{{{j{Ah{Cj{c}}}}{j{AhHn}}{j{{Aj{Gb}}}}{j{{Aj{C`}}}}{j{Hj}}{j{I`}}}{{Fn{Bn}}}Hl}{{}Fh};`{{{j{Fh}}}{{Ch{Gb}}}}`````{{{j{{Ib{c}}}}}{{l{e}}}h{}}{{{j{{Ib{c}}}}{j{Ah{Aj{e}}}}Al{j{{Aj{g}}}}}Anh{}{}}`{j{{j{c}}}{}}0{{{j{Ah}}}{{j{Ahc}}}{}}0{{{j{{Ib{c}}}}Bl}{{l{e}}}h{}}``````{{{j{{Ib{c}}}}Al}Bnh}{{{j{{Ib{c}}}}Ale}Bnh{{Fb{Al}}}}10{C`{{j{c}}}{}}0{C`{{j{Ahc}}}{}}04```{C`Bn}0{{{j{{Ib{c}}}}Bl}Bnh}{cc{}}0{{{j{{Ib{c}}}}Al}Idh}{{{j{{Ib{c}}}}Al}Anh}{{}C`}0{{}c{}}0`````````{{{j{{Ib{c}}}}}Cdh}<```{{{j{{Ib{c}}}}}{{j{Gd}}}h}```{{{l{c}}}{{Ib{c}}}h}`{{{l{c}}e}{{Gl{{Ib{c}}}}}h{{Gn{Dh}}}}{{{j{{Ib{c}}}}}Blh}{{{j{{Ib{c}}}}}{{j{Dh}}}h}```{{AlAn{Hd{If}}}Bn}`{{{j{Ah{Ib{c}}}}Bd}Bnh}```{{{j{{Ib{c}}}}Al}Bnh}{{{j{{Ib{c}}}}}{{l{e}}}h{}}{c{{Eb{e}}}{}{}}0{{}{{Eb{c}}}{}}0{jEd}0==3``````{{{j{{Ih{ce}}}}IjBlBb}BnB`{{B`{}{{b{}}}}}}{{{j{{Ih{ce}}}}}lB`{{h{}{{b{}}}}}}{j{{j{c}}}{}}{{{j{Ah}}}{{j{Ahc}}}{}}{C`{{j{c}}}{}}{C`{{j{Ahc}}}{}}{C`Bn}{{{j{{Ih{ce}}}}Al}BnB`{{h{}{{b{}}}}}}{{{j{{Ih{ce}}}}}BnB`{{h{}{{b{}}}}}}{{{j{{Ih{ce}}}}{Il{g}}}BnB`{{h{}{{b{}}}}}In}{{{j{{Ih{ce}}}}Al{Cj{{j{Hj}}}}}{{J`{Cd}}}B`{{Bj{}{{b{}}}}}}{{{j{{Ih{ce}}}}Al{Cj{{Ch{Hn}}}}}{{J`{Cd}}}B`{{h{}{{b{}}}}}}4{cc{}}{{Bd{l{c}}{l{e}}Al{j{{Aj{Bl}}}}}{{Ih{ce}}}B`{{Bj{}{{b{}}}}}}{{Bd{l{c}}{l{e}}{j{g}}}{{Ih{ce}}}{BjB`}{{Bj{}{{b{}}}}}{{Af{}{{Ab{}}{Ad{}}}}}}{{{j{{Ih{ce}}}}Bl}{{l{Jb}}}B`{{h{}{{b{}}}}}}{{{j{{Ih{ce}}}}Bl}{{j{Jb}}}B`{{h{}{{b{}}}}}}{{}C`}{{}c{}}```{{{j{{Ih{ce}}}}}{{j{Gd}}}B`{{h{}{{b{}}}}}}```{{Bd{l{c}}{l{e}}Al}{{Ih{ce}}}B`{{h{}{{b{}}}}}}{{{j{{Ih{ce}}}}}CdB`{{h{}{{b{}}}}}}{{{j{{Ih{ce}}}}}{{j{Dh}}}B`{{h{}{{b{}}}}}}````````````{c{{Eb{e}}}{}{}}{{}{{Eb{c}}}{}}{jEd}7```````````````````````{j{{j{c}}}{}}0000{{{j{Ah}}}{{j{Ahc}}}{}}0000{{{j{Dh}}}Dh}{{{j{Dj}}}Dj}{{j{j{Ahc}}}Bn{}}0{jBn}0{{Dj{j{Jd}}}{{Gl{Bn}}}}{{{j{{Dl{c}}}}JfAn}{{`{Hl}}}n}{{{j{{Dl{c}}}}Jf}{{Fn{Bn}}}n}{C`{{j{c}}}{}}0000{C`{{j{Ahc}}}{}}0000{C`Bn}{{{j{Ah{Jh{c}}}}}BnHl}{{{j{Ah{Jj{c}}}}}BnG`}2222{{{j{Dh}}{j{Dh}}}An}{{{j{Dj}}{j{Dj}}}An}{{j{j{c}}}An{}}0000000{{{j{{Dl{c}}}}Jf}Ann}{{{j{Ah{Jh{c}}}}}{{Fn{Bn}}}Hl}{{{j{Dh}}{j{AhFj}}}Jl}{{{j{Dj}}{j{AhFj}}}Jl}{cc{}}000{{{Cj{Jf}}}Dh}1{{{j{{Dl{c}}}}Jf}Jfn}`{{}C`}0000{{}c{}}0000{{{j{Dh}}}An}0`{DjBl}{Dj{{j{Gd}}}}{{}{{`{{D`{}{{Cn{Dj}}}}}}}}{{Jfc}{{Jh{c}}}Hl}{c{{Jj{c}}}G`}{Jf{{Cj{{Jn{G`}}}}}}{{{j{{Dl{c}}}}Jf}{{Cj{{Jn{G`}}}}}n}{{}{{j{{Kb{{K`{Jf}}}}}}}}`{{{j{AhDh}}c}Bn{{Kd{Jd}}}}{{{j{Ah{Jj{c}}}}{j{Ah{Aj{Gj}}}}}{{Fn{C`}}}G`}{{{j{Dh}}}{{Cj{{j{Jf}}}}}}{{{j{Ah{Jj{c}}}}{j{Ah{Aj{Gj}}}}}{{Fn{Bn}}}G`}`99{jc{}}0{c{{Eb{e}}}{}{}}0000{{}{{Eb{c}}}{}}0000{jEd}0000{{{j{{Dl{c}}}}{j{Ahe}}}{{Fn{Bn}}}nG`}{{}c{}}0000{{{j{Ah{Jh{c}}}}{j{{Aj{Gj}}}}}{{Fn{C`}}}Hl}8{{{j{Ah{Jh{c}}}}{j{{Aj{Gj}}}}}{{Fn{Bn}}}Hl}{{{j{{Dl{c}}}}{j{Ahe}}}{{Fn{Bn}}}nHl}``````````````{{{j{{Kf{c}}}}IjBlCdKh}BnKj}{{{j{{Kl{c}}}}IjBlCdKhAn}Bn{KjKnIn}}{{{j{Ah{Kf{c}}}}BlCdC`{j{{Hh{{Hf{c}}}}}}{j{{Hh{{Hf{c}}}}}}}BnKj}{{{j{{Kl{c}}}}BlCd{L`{c}}{j{Dh}}}Bn{KjKnIn}}{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{l{c}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Kf{c}}}}}{{l{c}}}Kj}{{{j{{Lf{c}}}}}{{l{e}}}B`{}}{j{{j{c}}}{}}00{{{j{Ah}}}{{j{Ahc}}}{}}00{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}Bl}{{L`{c}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Kl{c}}}}CdC`}{{j{{Kf{c}}}}}{KjKnIn}}{{{j{{Lf{c}}}}Bl}L`B`}``{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}BnKj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}0{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}Al}{{J`{Cd}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}Bb}HnKj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}Bb}HnB`}3{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}Bl}BnKj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}`{C`{{j{c}}}{}}00{C`{{j{Ahc}}}{}}00{C`Bn}00{{{j{{Lf{c}}}}}{{E`{Dn}}}B`}8{{{j{Ah{Kf{c}}}}}BnKj}{cc{}}00{{{l{{Hf{c}}}}CdAn{j{Ahe}}}{{Fn{{Kf{c}}}}}KjG`}9`{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{j{{Lh{{Kl{c}}}}}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}}{{j{{Lh{Kl}}}}}B`}``{{{j{{Lf{c}}}}Bl}{{j{Kl}}}B`}{{}C`}00?{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{j{{Lj{BbHn}}}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}}{{j{{Lj{BbHn}}}}}B`}`{{}c{}}00{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{Il{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}}{{Il{{Lf{c}}}}}B`}{{{l{{Hf{c}}}}CdAn}{{Kf{c}}}Kj}{{{l{{Hf{c}}}}{l{{Hf{c}}}}CdAn}{{Kl{c}}}{KjKnIn}}{{{l{c}}}{{Lf{c}}}B`}{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}DfKj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{j{Dh}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}}{{j{Dh}}}B`}{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}AlKj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}}AlB`}`{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{l{e}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}}{{l{e}}}B`{}}`{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{l{g}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}1``{{{j{{Kf{c}}}}{j{Ahe}}}{{Fn{Bn}}}KjHl}{c{{Eb{e}}}{}{}}00{{}{{Eb{c}}}{}}00{jEd}00{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{l{i}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}}{{l{c}}}B`}`{{}c{}}00`````{j{{j{c}}}{}}{{{j{Ah}}}{{j{Ahc}}}{}}``{{{j{Ll}}}Ll}{{j{j{Ahc}}}Bn{}}{jBn}{{eg}{{Gl{Ln}}}{}{{Mb{Ll}{{M`{c}}}}}{{Gn{Dh}}}}{{eg}{{Gl{{Fd{{Md{Ff}}}}}}}{}{{Mb{Ll}{{M`{c}}}}}{{Gn{Dh}}}}{{eg}{{Gl{{Ib{Mf}}}}}{}{{Mb{Ll}{{M`{c}}}}}{{Gn{Dh}}}}{C`{{j{c}}}{}}{C`{{j{Ahc}}}{}}`{C`Bn}{{{j{Ll}}{j{Ll}}}An}{{j{j{c}}}An{}}000{{}{{`{Mh}}}}{{{j{Ll}}{j{AhFj}}}Jl}{cc{}}{{{l{Ln}}}{{Gl{{Mj{An{l{Ln}}}}}}}}{{}C`}{{}Bn}{{}c{}}{{{j{Gd}}}{{Gl{Ml}}}}``````0{{{Cj{Mn}}An}{{Gl{Ln}}}}{{{j{Gd}}{Cj{Mn}}An}{{Gl{Ln}}}}{An{{Gl{{N`{Mf}}}}}}{{}{{Gl{Nb}}}}`{{}{{Cj{Bl}}}}``{jc{}}{{{Mj{Mlc}}}{{Eb{Lle}}}{{Mb{Mn}}}{}}{{{Mj{{j{Gd}}e}}}{{Eb{Llg}}}{}{{Mb{Mn}{{M`{c}}}}}{}}{{{j{Gd}}}{{Eb{Llc}}}{}}{c{{Eb{e}}}{}{}}{{}{{Eb{c}}}{}}{jEd}{C`Nd}>````{j{{j{c}}}{}}0{{{j{Ah}}}{{j{Ahc}}}{}}0`{C`{{j{c}}}{}}0{C`{{j{Ahc}}}{}}0{C`Bn}0{{}{{`{Mh}}}}{{{j{Ah{Nf{c}}}}}{{Fn{Bn}}}Hl}{{{j{Nh}}{j{AhFj}}}Jl}{cc{}}0{{}C`}0{{}Bn}{{}c{}}0{{{Nf{c}}}NhHl}{c{{Nf{c}}}{}}`{jBd}{c{{Eb{e}}}{}{}}0{{}{{Eb{c}}}{}}0{jEd}066{{{j{Ah{Nf{c}}}}{j{{Aj{Gj}}}}}{{Fn{C`}}}Hl}`````{{{j{{Nj{c}}}}{Cj{{j{e}}}}{Cj{{j{g}}}}{Cj{{j{Id}}}}Cd}{{Mj{HjHj}}}A`AfAf}{{{j{Nl}}CdC`}Cd}{{{j{Ff}}CdC`}Cd}{{{j{{l{c}}}}CdC`}Cdn}{{{j{Ah{Aj{c}}}}C`C`}{{Mj{{j{Ahc}}{j{Ahc}}}}}{}}`{{{l{c}}{Nn{{Hh{e}}}}}{{O`{c}}}{B`{Bj{}{{Bh{Hh}}}}}{{A`{}{{b{}}}}}}{{{l{c}}Al{j{{Aj{Bl}}}}}{{O`{c}}}{B`{Bj{}{{Bh{Hh}}}}}}{{{l{c}}{Nn{{Hh{e}}}}g}{{O`{c}}}{B`{Bj{}{{Bh{Hh}}}}}{{A`{}{{b{}}}}}{{Ob{j{j{Id}}CdC`}{{F`{Cd}}}}}}","D":"ACn","p":[[17,"Algebra"],[17,"Module"],[17,"Homomorphism"],[10,"ChainComplex",12],[1,"reference"],[5,"Arc",805],[10,"Algebra",806],[10,"Module",807],[17,"Source"],[17,"Target"],[10,"ModuleHomomorphism",808],[0,"mut"],[1,"slice"],[5,"Bidegree",809],[1,"bool"],[10,"FreeChainComplex",12],[5,"BidegreeGenerator",810],[5,"String",811],[17,"TargetComplex"],[17,"ChainMap"],[10,"AugmentedChainComplex",12],[1,"u32"],[1,"unit"],[1,"usize"],[10,"BoundedChainComplex",12],[1,"i32"],[1,"isize"],[5,"Vec",812],[6,"Option",813],[5,"Product",814],[17,"Item"],[10,"Iterator",815],[5,"StemIterator",12],[10,"Sized",816],[5,"ValidPrime",817],[6,"SaveDirectory",453],[6,"SaveKind",453],[5,"SaveFile",453],[5,"Adams",814],[5,"Sseq",814],[6,"Result",818],[5,"TypeId",819],[5,"FiniteChainComplex",104],[5,"FiniteAugmentedChainComplex",104],[10,"ZeroModule",820],[10,"ZeroHomomorphism",808],[5,"FullModuleHomomorphism",821],[17,"Output"],[10,"FnMut",822],[5,"Resolution",163],[5,"MilnorAlgebra",823],[5,"MilnorSubalgebra",163],[5,"Formatter",824],[5,"Error",824],[8,"Result",825],[10,"Read",826],[8,"PPartEntry",823],[1,"str"],[5,"SubalgebraIterator",163],[5,"SignatureIterator",163],[1,"u8"],[8,"Result",827],[10,"Into",828],[5,"IterBridge",829],[5,"SenderData",163],[5,"Sender",830],[8,"FreeModule",831],[8,"FreeModuleHomomorphism",832],[5,"Matrix",833],[10,"Write",826],[6,"FpVector",834],[5,"AugmentedMatrix",833],[5,"MuResolution",316],[5,"Subspace",835],[5,"SenderData",316],[5,"MuResolutionHomomorphism",404],[6,"FpSliceMut",834],[5,"BidegreeRange",836],[10,"Sync",816],[5,"Range",837],[5,"MuFreeModuleHomomorphism",832],[5,"Path",838],[5,"PathBuf",838],[5,"ChecksumWriter",453],[5,"ChecksumReader",453],[8,"Result",824],[5,"Box",839],[5,"HashSet",840],[5,"Mutex",841],[10,"AsRef",828],[5,"SecondaryComposite",593],[6,"FpSlice",834],[10,"PairAlgebra",842],[5,"SecondaryHomotopy",593],[10,"Send",816],[8,"CompositeData",593],[17,"Underlying"],[10,"SecondaryLift",593],[5,"SecondaryResolution",593],[5,"OnceBiVec",843],[5,"DashMap",844],[5,"Config",697],[8,"QueryModuleResolution",697],[17,"Error"],[10,"TryInto",828],[5,"FiniteDimensionalModule",845],[8,"CCC",0],[10,"Subscriber",846],[1,"tuple"],[6,"Value",847],[6,"AlgebraType",848],[8,"UnstableResolution",316],[8,"SteenrodModule",849],[1,"char"],[5,"LogWriter",755],[5,"Throughput",755],[5,"QuotientModule",850],[5,"AdemAlgebra",851],[5,"ChainMap",12],[8,"Yoneda",792],[10,"Fn",822],[6,"ChainComplexGrading",12],[6,"Magic",163],[8,"Resolution",316],[8,"ResolutionHomomorphism",404],[8,"UnstableResolutionHomomorphism",404],[15,"Split",591]],"r":[[17,852],[21,104],[22,104],[698,755],[721,755],[726,755]],"b":[[745,"impl-TryFrom%3C(Value,+T)%3E-for-Config"],[746,"impl-TryFrom%3C(%26str,+T)%3E-for-Config"],[747,"impl-TryFrom%3C%26str%3E-for-Config"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAIYCTwABAAMACAABAAsAAgARAAEAFAAHAB0AAQAgAAUAJwAFAC4ABgA2AAQAPAABAEEAAABDAAIASQAAAEwABQBTAAIAWAAbAHUADACEAAMAigAbAKcAAACsAAAArwAUAMUAFgDdAAAA5AABAOcABQDzAAEA9gAZABIBAAAVASMAOgECAD8BAABBARAAUwEKAGIBAgBtAQwAewEGAIMBAACIAQwAlgEBAJkBBQCmAQAAqQEBAKwBGQDJAQAAywEAANABAADSAQIA2AEVAO8BHwATAgAAFgIFACECBwAqAgAALAInAFYCAABYAgUAXwIAAGECCwBvAhMAhgIEAI0CBwCYAgkAowIWALsCAAC9AgAAvwIGAMkCCgDWAgEA2gICAN4CAQDjAgIA5wIIAPECEgAGAwIADAMQAB4DBAAkAwEA"}],["ext_m_n",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["filtration_one",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["fp",{"t":"SKSSSSQCCCCCCCSSJSSSISSSSSSQRKEEMMMCCCMNCMFKNNNNNNNNNNNNNNNNONNNNNQNNNNNNNNNNNNNNNONRKFNMMOONNNMNNNNMMONMOMNNNNMNONNMMNQNNNMNNNNNNNNSSSSFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNIJFFJINNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNOOHNHNNNNONONONNNNNNNNNNNNHNFONNNNNNNNNNNNOHNNNNNFFFFFFFCCOOOOOOOOOCOCOOOOCOOCCOOFNNNNNNNNNNNNNNNNNNNNONNONNNNNNNSSSFFFOOOOOOOFNNNNOONNNNNNNNNNNONNNNONNNNFFFNNNNCNNNNNNNNNNNNNNNNNNOONNONNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNONONNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNOONNNNSSFNNNNNONNNNNNNNOONNNNNFNNNNNNNNNNNNNNNONNNNNNONNNNNNNNNNFNNCNNNNNNNNNNNONNNNNNONNNNNNNONNNNNNNNNNNNNNNEFNNNNNNNNONNNNNONNNNNFNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNEFNNNNNNNNONNNNNONNNNNEPPKGSMNNCNNNNNQNNNNNNHNNNQQQNNHNCHHHNNHCNNMNNNNNNKNMMMMMHQNMMFFNNNNHNNNNNNONNNNNNNNNNNNNNNONNNNNNNONNFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSHCIHHHPPPPPGGGGGPPPPPPPPPPPPPPPPPPPPCCCCCCCFSOOPPPPPGGGGGPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQQQQQQQQCFSNNNNNNNNNNONNNONNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNFFOONNNNOOOONNNNONNOOOONNONNNNNNNOOOONNNNNNNNNNNNNNNN","n":["MAX_MULTINOMIAL_LEN","MaybeArbitrary","NUM_PRIMES","ODD_PRIMES","PRIMES","PRIME_TO_INDEX_MAP","const_for","constants","field","limb","matrix","prime","simd","vector","BINOMIAL4_TABLE","BINOMIAL4_TABLE_SIZE","BINOMIAL_TABLE","BITS_PER_LIMB","BYTES_PER_LIMB","INVERSE_TABLE","Limb","MAX_MULTINOMIAL_LEN","MAX_PRIME","NOT_A_PRIME","NUM_PRIMES","PRIMES","PRIME_TO_INDEX_MAP","populate_binomial_table","Characteristic","Field","Fp","SmallFq","arb_element","characteristic","degree","element","field_internal","fp","one","q","smallfq","zero","FieldElement","FieldElementContainer","add","add_assign","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","","deref_mut","div","drop","eq","equivalent","","field","","fmt","","frobenius","from","hash","impl_arith","init","into","inv","mul","mul_assign","neg","new","sub","sub_assign","to_owned","to_string","try_from","try_into","type_id","val","value","vzip","ElementContainer","FieldInternal","LimbIterator","add","add_assign","bit_length","","bit_mask","bitmask","borrow","borrow_mut","decode","deref","deref_mut","div","drop","el","encode","entries","entries_per_limb","fma_limb","fq","frobenius","from","init","into","into_iter","inv","is_reduced","limb","limb_bit_index_pair","mul","mul_assign","neg","next","normal_from_assign","number","pack","range","reduce","sub","sub_assign","truncate","try_from","try_into","type_id","unpack","vzip","F2","F3","F5","F7","Fp","add_assign","arb_element","arbitrary_with","bit_length","borrow","borrow_mut","characteristic","clone","clone_into","clone_to_uninit","decode","degree","deref","","deref_mut","drop","el","element","encode","eq","equivalent","","fma_limb","fmt","frobenius","from","","hash","init","into","inv","mul_assign","neg","new","one","p","reduce","to_owned","try_from","try_into","type_id","vzip","zero","Polynomial","SMALL_CONWAY_POLYS","SmallFq","SmallFqElement","ZECH_LOGS","ZechTable","a","add","add_assign","arb_element","arbitrary_with","bit_length","borrow","","borrow_mut","","characteristic","clone","","clone_into","","clone_to_uninit","","d","decode","degree","deref","","deref_mut","","drop","","el","encode","eq","","equivalent","","","","fma_limb","fmt","","","","fq","frobenius","from","","hash","","init","","into","","inv","len","limbs","make_zech_log_table","mul_assign","mul_by_a","neg","negative_one","new","one","p","q","","reduce","table","to_owned","","to_string","","try_from","","try_into","","type_id","","vzip","","zech_logs","zero","LimbBitIndexPair","bit_index","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","deref_mut","drop","fmt","from","init","into","limb","sign_rule","to_owned","try_from","try_into","type_id","vzip","AffineSubspace","AugmentedMatrix","Matrix","MatrixSliceMut","QuasiInverse","Subquotient","Subspace","affine","arbitrary","col_end","col_start","columns","dimension","end","gens","image","inner","linear_part","m4ri","matrix","matrix_inner","offset","p","pivots","preimage","quasi_inverse","quotient","start","subquotient","subspace","vectors","","AffineSubspace","borrow","borrow_mut","clone","clone_into","clone_to_uninit","contains","contains_space","deref","deref_mut","drop","eq","equivalent","","fmt","","from","","init","into","linear_part","","new","offset","","sum","to_owned","to_string","try_from","try_into","type_id","vzip","MAX_COLUMNS","MAX_DIM","MAX_ROWS","MatrixArbParams","SubquotientArbParams","SubspaceArbParams","columns","dim","","p","","","rows","M4riTable","add","borrow","borrow_mut","clear","columns","data","default","deref","deref_mut","drop","fmt","from","generate","init","into","is_empty","len","min_limb","new","reduce","reduce_naive","rows","","try_from","try_into","type_id","vzip","AugmentedMatrix","Matrix","MatrixSliceMut","add_assign","add_identity","add_masked","apply","arbitrary","arbitrary_rref","arbitrary_rref_with","arbitrary_with","as_slice_mut","assign","augmented_from_vec","borrow","","","borrow_mut","","","clone","","clone_into","","clone_to_uninit","","col_end","col_start","columns","","","compute_image","","compute_kernel","","compute_quasi_inverse","","compute_quasi_inverses","deref","","","","deref_mut","","","","drop","","","drop_first","end","eq","equivalent","","extend_column_dimension","","extend_image","extend_to_surjection","find_first_row_in_block","find_pivots_permutation","fmt","","from","","","from_bytes","from_row","from_rows","from_vec","identity","index","index_mut","init","","","initialize_pivots","inner","into","","","into_iter","","","into_matrix","into_tail_segment","is_zero","iter","","iter_mut","","maybe_par_iter_mut","","mul","mul_assign","new","","new_with_capacity","","p","pivots","","pivots_mut","prime","read_pivot","row","","row_mut","","row_op","row_op_naive","row_reduce","row_segment","row_segment_mut","row_slice","rows","","safe_row_op","segment","set_to_zero","slice_mut","split_borrow","start","to_bytes","to_owned","","to_string","to_vec","trim","try_from","","","try_into","","","type_id","","","vectors","","vzip","","","write_pivot","MAX_COLUMNS","MAX_ROWS","MatrixArbParams","borrow","borrow_mut","clone","clone_into","clone_to_uninit","columns","default","deref","deref_mut","drop","fmt","from","init","into","p","rows","to_owned","try_from","try_into","type_id","vzip","QuasiInverse","apply","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","deref_mut","drop","eq","equivalent","","fmt","from","from_bytes","image","image_dimension","init","into","new","pivots","preimage","","prime","source_dimension","stream_quasi_inverse","target_dimension","to_bytes","to_owned","try_from","try_into","type_id","vzip","Subquotient","add_gen","ambient_dimension","arbitrary","arbitrary_with","borrow","borrow_mut","clear_gens","clone","clone_into","clone_to_uninit","complement_pivots","deref","deref_mut","dimension","","drop","fmt","","from","from_parts","gens","","init","into","is_empty","new","new_full","prime","quotient","","quotient_dimension","quotient_pivots","reduce","reduce_by_quotient","reduce_matrix","set_to_full","subspace_dimension","subspace_gens","to_owned","to_string","try_from","try_into","type_id","vzip","zeros","MAX_DIM","SubquotientArbParams","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","deref","deref_mut","dim","drop","fmt","from","init","into","p","to_owned","try_from","try_into","type_id","vzip","Subspace","add_basis_elements","add_vector","add_vectors","ambient_dimension","arbitrary","arbitrary_with","basis","borrow","borrow_mut","clone","clone_into","clone_to_uninit","contains","contains_space","deref","","deref_mut","dimension","drop","entire_space","eq","equivalent","","fmt","","from","from_bytes","from_matrix","init","into","is_empty","iter","iter_all_vectors","matrix","new","reduce","set_to_entire","set_to_zero","sum","to_bytes","to_owned","to_string","try_from","try_into","type_id","update_then_row_reduce","vzip","MAX_DIM","SubspaceArbParams","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","deref","deref_mut","dim","drop","fmt","from","init","into","p","to_owned","try_from","try_into","type_id","vzip","Binomial","InvalidPrime","NotAnInteger","Prime","PrimeError","TWO","as_i32","as_u32","as_usize","binomial","borrow","borrow_mut","clone","clone_into","clone_to_uninit","def_prime_static","deref","deref_mut","drop","eq","equivalent","","factor_pk","fmt","","from","impl_op_pn_u32","impl_prime_ops","impl_try_from","init","into","inverse","","iter","log2","logp","minus_one_to_the_n","pow","pow_mod","power_mod","primes_generic","product","sum","to_dyn","to_owned","to_string","try_from","try_into","type_id","vzip","Binomial","binomial","binomial2","binomial4","binomial4_rec","binomial_odd","binomial_odd_is_zero","direct_binomial","impl_binomial","multinomial","multinomial2","multinomial_odd","BinomialIterator","BitflagIterator","borrow","","borrow_mut","","combinations","deref","","deref_mut","","drop","","flag","from","","init","","into","","into_iter","","new","","new_fixed_length","next","","par_bridge","","remaining","set_bit_iterator","try_from","","try_into","","type_id","","value","vzip","","P2","P3","P5","P7","ValidPrime","add","","","","","","","","","","arbitrary_with","","","","","as_i32","","","","","borrow","","","","","borrow_mut","","","","","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","deref","","","","","deref_mut","","","","","deserialize","","","","","div","","","","","","","","","","drop","","","","","eq","","","","","","","","","","equivalent","","","","","","","","","","fmt","","","","","","","","","","fp","from","","","","","from_str","hash","","","","","init","","","","","into","","","","","is_prime","mul","","","","","","","","","","new","new_unchecked","p","partial_cmp","","","","","rem","","","","","","","","","","serialize","","","","","shl","","","","","","","","","","shr","","","","","","","","","","sub","","","","","","","","","","to_dyn","","","","","to_owned","","","","","to_string","","","","","try_from","","","","","","","","","","try_into","","","","","type_id","","","","","vzip","","","","","F2","F3","F5","F7","LIMBS_PER_SIMD","add_simd","x86_64","SimdLimb","load","store","xor","Big","","","","","FpSlice","FpSliceMut","FpVector","FpVectorIterator","FpVectorNonZeroIterator","_2","","","","","_3","","","","","_5","","","","","_7","","","","","arbitrary","fp_wrapper","impl_fqslice","impl_fqslicemut","impl_fqvector","inner","iter","FqVectorArbParams","MAX_LEN","fq","len","Big","","","","","FpSlice","FpSliceMut","FpVector","FpVectorIterator","FpVectorNonZeroIterator","_2","","","","","_3","","","","","_5","","","","","_7","","","","","add","","add_assign","add_basis_element","","add_carry","add_masked","add_offset","add_tensor","add_truncate","add_unmasked","as_slice","","as_slice_mut","assign","","assign_partial","borrow","","","","","borrow_mut","","","","","clone","","clone_into","","clone_to_uninit","","copy","copy_from_slice","density","deref","","","","","deref_mut","","","","","deserialize","drop","","","","","entry","","eq","equivalent","","extend_len","first_nonzero","fmt","","","","","from","","","","","","","","","","","","","","","from_bytes","from_slice","hash","helpers","init","","","","","into","","","","","into_iter","","","is_empty","","is_zero","","iter","","iter_nonzero","","len","","limbs","limbs_mut","macros_generic","multiunzip","new","new_with_capacity","next","","num_limbs","padded_len","prime","","","scale","","serialize","set_entry","","set_scratch_vector_size","set_to_zero","","sign_rule","skip_n","slice","","slice_mut","","to_bytes","to_owned","","","to_string","","trim_start","try_from","","","","","try_into","","","","","","","","","","type_id","","","","","update_from_bytes","vzip","","","","","dispatch_struct","dispatch_vector","dispatch_vector_inner","impl_from","impl_from_inner","impl_try_into","impl_try_into_inner","use_primes","arbitrary","FqVectorArbParams","MAX_LEN","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","deref","deref_mut","drop","fmt","fq","from","init","into","len","to_owned","try_from","try_into","type_id","vzip","FqSlice","FqSliceMut","FqVector","add","","add_basis_element","","add_basis_element_helper","","add_carry","add_carry_helper","add_carry_limb","add_helper","","add_masked","add_masked_helper","add_offset","add_offset_helper","add_shift_left","add_shift_none","add_shift_right","add_tensor","add_tensor_helper","add_truncate","add_truncate_helper","add_unmasked","add_unmasked_helper","arbitrary_with","as_slice","","as_slice_mut","assign","","assign_partial","borrow","","","borrow_mut","","","clone","","clone_into","","clone_to_uninit","","copy","copy_from_slice","copy_from_slice_helper","density","deref","","","deref_mut","","","drop","","","end","","entry","","entry_helper","","eq","equivalent","","extend_len","first_nonzero","first_nonzero_helper","fmt","","","","","fq","","","","from","","","","","","from_bytes","from_raw_parts","from_slice","hash","init","","","into","","","is_empty","","is_zero","","iter","","iter_nonzero","","len","","","limb_masks","limb_range","limb_range_inner","limbs","","","","limbs_mut","max_limb_mask","min_limb_mask","new","new_with_capacity","offset","prime","","","reduce_limbs","scale","","scale_helper","","set_entry","","set_entry_helper","","set_scratch_vector_size","set_to_zero","","sign_rule","slice","","slice_mut","","start","","to_bytes","to_owned","","","to_string","","trim_start","try_from","","","try_into","","","type_id","","","update_from_bytes","vzip","","","FqVectorIterator","FqVectorNonZeroIterator","bit_length","bit_mask","borrow","","borrow_mut","","counter","cur_limb","","cur_limb_entries_left","deref","","deref_mut","","dim","drop","","entries_left","entries_per_limb_m_1","fq","","from","","idx","init","","into","","into_iter","","len","limb_index","","limbs","","multiunzip","new","","next","","next_helper","","skip_n","try_from","","try_into","","type_id","","vzip",""],"q":[[0,"fp"],[14,"fp::constants"],[28,"fp::field"],[42,"fp::field::element"],[84,"fp::field::field_internal"],[132,"fp::field::fp"],[180,"fp::field::smallfq"],[264,"fp::limb"],[285,"fp::matrix"],[317,"fp::matrix::affine"],[349,"fp::matrix::arbitrary"],[362,"fp::matrix::m4ri"],[390,"fp::matrix::matrix_inner"],[533,"fp::matrix::matrix_inner::arbitrary"],[557,"fp::matrix::quasi_inverse"],[591,"fp::matrix::subquotient"],[637,"fp::matrix::subquotient::arbitrary"],[659,"fp::matrix::subspace"],[707,"fp::matrix::subspace::arbitrary"],[729,"fp::prime"],[779,"fp::prime::binomial"],[791,"fp::prime::iter"],[831,"fp::prime::primes_generic"],[1067,"fp::prime::primes_generic::fp"],[1071,"fp::simd"],[1074,"fp::simd::x86_64"],[1078,"fp::vector"],[1115,"fp::vector::arbitrary"],[1119,"fp::vector::fp_wrapper"],[1315,"fp::vector::fp_wrapper::macros_generic"],[1323,"fp::vector::impl_fqvector"],[1324,"fp::vector::impl_fqvector::arbitrary"],[1346,"fp::vector::inner"],[1508,"fp::vector::iter"],[1561,"proptest::strategy::traits"],[1562,"core::clone"],[1563,"core::cmp"],[1564,"core::fmt"],[1565,"core::hash"],[1566,"core::option"],[1567,"alloc::string"],[1568,"core::result"],[1569,"core::any"],[1570,"core::iter::traits::iterator"],[1571,"core::ops::range"],[1572,"alloc::vec"],[1573,"std::io::error"],[1574,"std::io"],[1575,"core::slice::iter"],[1576,"maybe_rayon::concurrent::prelude"],[1577,"core::ops::function"],[1578,"core::convert"],[1579,"rayon::iter::par_bridge"],[1580,"serde::de"],[1581,"serde::ser"],[1582,"core::core_arch::x86"]],"i":"````````````````````````````d```000```00`0``h000000000000000000000`00000000000000000Ah``000Cj0100100101101101000011011110`111111100010`````Db000000000000000000000000000000000000000000``````Dd000000Df1011010101111010101110110011100Kf221212121200`2`222222222212121212121`2`Ch0000000000000`00000`````````Eh0EfGhFd1Ff1Dl`E``1552`43``65`1111111111111111111111111111111``````ElGjHb2102`Ed00000000000000000000000000```9::9`999999:97:97979797:::999797977:977:977:977799997999999:979999999:9797:97999779:9:9:9999797999999:9:999977::9979997997999:97:97:97:9:979```333333333333333333333`666666666666666666666666666666666`88`888888888888888888888888888888888888888888``22222222222222222222`4444`444444444444444444444444444444444444444444``11111111111111111111`Hf0```l00`11111`111111`111```11`0````00``000111111`Hh00000``000``HlHn10`101010110101010101101011101010010`````Ib0Id0If0Ih0En043210432104321043210432104321043210432104321043210443322110043210443322110044332211004433221100`432100432104321043210`4433221100000432104433221100432104433221100443322110044332211004321043210432104433221100432104321043210```````````EbDnEjJfJh`````43210432104321043210`````````Jj054321`````543215432154321543215355353535353553554321543215454543555432154321554321545555555443555555444433321555`5432154321521545454545455`155215554353553553525453554454554321555555432154321554321```````````00000000000000000000```DjJl101011110001100000110011011011Jn120120202012222012012010120202222222200122012200112222201201202020202020002201200220201121212121221220210122002022012012012201``Kb00Kd10110010100101110100101010110100101010110101010","f":"````````````````````````````````{{{d{}{{b{c}}}}}{{`{{j{}{{f{{h{{d{}{{b{c}}}}}}}}}}}}}l}{{{d{}{{b{c}}}}}cl}{{{d{}{{b{c}}}}}nl}```{{{d{}{{b{c}}}}}{{h{{d{}{{b{c}}}}}}}l}1`0``{{{h{c}}{h{c}}}ed{}}{{{Ab{A`{h{c}}}}{h{c}}}Add}{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{{h{c}}}}}{{h{c}}}{AfAh}}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{Aj{{Ab{c}}}{}}{{{Ab{{h{c}}}}}{{Ab{e}}}Ah{}}{Aj{{Ab{A`c}}}{}}9{AjAd}{{{Ab{{h{c}}}}{Ab{{h{c}}}}}Al{AnAh}}{{Ab{Ab{c}}}Al{}}0{{{Ab{{h{c}}}}}cAh}`{{{Ab{{h{c}}}}{Ab{A`B`}}}Bb{BdAh}}{{{Ab{{h{c}}}}{Ab{A`B`}}}Bbd}{{{h{c}}}{{h{c}}}Ah}{cc{}}{{{Ab{{h{c}}}}{Ab{A`e}}}Ad{BfAh}Bh}`{{}Aj}{{}c{}}{{{h{c}}}{{Bj{{h{c}}}}}Ah}{{{h{c}}{h{c}}}ed{}}{{{Ab{A`{h{c}}}}{h{c}}}Add}{{{h{c}}}ed{}}{c{{h{c}}}Ah}32{Abc{}}{AbBl}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}{{{h{c}}}{}Ah}`;```{{{Ah{}{{Cb{c}}}}{h{{Ah{}{{Cb{c}}}}}}{h{{Ah{}{{Cb{c}}}}}}}{{h{{Ah{}{{Cb{c}}}}}}}Cd}{{{Ah{}{{Cb{c}}}}{Ab{A`{h{{Ah{}{{Cb{c}}}}}}}}{h{{Ah{}{{Cb{c}}}}}}}AdCd}{{{Ah{}{{Cb{c}}}}}AjCd}``{{{Ah{}{{Cb{c}}}}}CfCd}{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ah{}{{Cb{c}}}}Cf}{{h{{Ah{}{{Cb{c}}}}}}}Cd}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{{{Ah{}{{Cb{c}}}}{h{{Ah{}{{Cb{c}}}}}}{h{{Ah{}{{Cb{c}}}}}}}{{Bj{{h{{Ah{}{{Cb{c}}}}}}}}}Cd}{AjAd}{{{Ah{}{{Cb{c}}}}c}{{h{{Ah{}{{Cb{c}}}}}}}Cd}{{{Ah{}{{Cb{c}}}}{h{{Ah{}{{Cb{c}}}}}}}CfCd}`:{{{Ah{}{{Cb{c}}}}CfCf{h{{Ah{}{{Cb{c}}}}}}}CfCd}`{{{Ah{}{{Cb{c}}}}{h{{Ah{}{{Cb{c}}}}}}}{{h{{Ah{}{{Cb{c}}}}}}}Cd}{cc{}}{{}Aj}{{}c{}}0{{{Ah{}{{Cb{c}}}}{h{{Ah{}{{Cb{c}}}}}}}{{Bj{{h{{Ah{}{{Cb{c}}}}}}}}}Cd}{{{Ah{}{{Cb{c}}}}Cf}AlCd}`{{{Ah{}{{Cb{c}}}}Aj}ChCd}{{{Ah{}{{Cb{c}}}}{h{{Ah{}{{Cb{c}}}}}}{h{{Ah{}{{Cb{c}}}}}}}{{h{{Ah{}{{Cb{c}}}}}}}Cd}{{{Ah{}{{Cb{c}}}}{Ab{A`{h{{Ah{}{{Cb{c}}}}}}}}{h{{Ah{}{{Cb{c}}}}}}}AdCd}8{{{Ab{A`{Cj{c}}}}}{{Bj{e}}}Ah{}}`{{{Ah{}{{Cb{c}}}}Aj}AjCd}{{{Ah{}{{Cb{c}}}}e}CfCd{{Cn{}{{Cl{{h{{Ah{}{{Cb{c}}}}}}}}}}}}{{{Ah{}{{Cb{c}}}}AjAj}{{D`{Aj}}}Cd}{{{Ah{}{{Cb{c}}}}Cf}CfCd}65{{{Ah{}{{Cb{c}}}}Cf}{{Bj{Cf}}}Cd}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}{{{Ah{}{{Cb{c}}}}Cf}{{Cj{{Ah{}{{Cb{c}}}}}}}Cd}?`````{{{Db{c}}{Ab{A`{h{{Db{c}}}}}}{h{{Db{c}}}}}Adl}{{{Db{c}}}{{`{{j{}{{f{{h{{Db{c}}}}}}}}}}}l}{ce{}{}}{{{Db{c}}}Ajl}{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Db{c}}}el{}}{{{Ab{{Db{c}}}}}{{Db{c}}}Af}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{{{Db{c}}Cf}{{h{{Db{c}}}}}l}{{{Db{c}}}nl}{Aj{{Ab{c}}}{}}{{{Ab{{Db{c}}}}}{{Ab{e}}}{}{}}{Aj{{Ab{A`c}}}{}}{AjAd}{{{Db{c}}e}{{h{{Db{c}}}}}l{}}{{{Ab{{Db{c}}}}n}{{h{{Db{c}}}}}l}{{{Db{c}}{h{{Db{c}}}}}Cfl}{{{Ab{{Db{c}}}}{Ab{{Db{c}}}}}AlAn}{{Ab{Ab{c}}}Al{}}0{{{Db{c}}CfCf{h{{Db{c}}}}}Cfl}{{{Ab{{Db{c}}}}{Ab{A`B`}}}BbBd}{{{Db{c}}{h{{Db{c}}}}}{{h{{Db{c}}}}}l}{cc{}}{c{{Db{c}}}l}{{{Ab{{Db{c}}}}{Ab{A`e}}}AdBfBh}{{}Aj}{{}c{}}{{{Db{c}}{h{{Db{c}}}}}{{Bj{{h{{Db{c}}}}}}}l}{{{Db{c}}{Ab{A`{h{{Db{c}}}}}}{h{{Db{c}}}}}Adl}75{{{Db{c}}}{{h{{Db{c}}}}}l}`{{{Db{c}}Cf}Cfl}{Abc{}}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}85``````{{{Dd{c}}}{{h{{Dd{c}}}}}l}{{{Dd{c}}{h{{Dd{c}}}}{h{{Dd{c}}}}}{{h{{Dd{c}}}}}l}{{{Dd{c}}{Ab{A`{h{{Dd{c}}}}}}{h{{Dd{c}}}}}Adl}{{{Dd{c}}}{{`{{j{}{{f{{h{{Dd{c}}}}}}}}}}}l}{ce{}{}}{{{Dd{c}}}Ajl}{Ab{{Ab{c}}}{}}0{{{Ab{A`}}}{{Ab{A`c}}}{}}0{{{Dd{c}}}el{}}{{{Ab{{Dd{c}}}}}{{Dd{c}}}Af}{{{Ab{Df}}}Df}{{Ab{Ab{A`c}}}Ad{}}0{AbAd}0`{{{Dd{c}}Cf}{{h{{Dd{c}}}}}l}{{{Dd{c}}}nl}{Aj{{Ab{c}}}{}}0{Aj{{Ab{A`c}}}{}}0{AjAd}0{{{Dd{c}}e}{{h{{Dd{c}}}}}l{}}{{{Dd{c}}{h{{Dd{c}}}}}Cfl}{{{Ab{{Dd{c}}}}{Ab{{Dd{c}}}}}All}{{{Ab{Df}}{Ab{Df}}}Al}{{Ab{Ab{c}}}Al{}}000{{{Dd{c}}CfCf{h{{Dd{c}}}}}Cfl}{{{Ab{{Dd{c}}}}{Ab{A`B`}}}Bbl}0{{{Ab{Df}}{Ab{A`B`}}}Bb}0`{{{Dd{c}}{h{{Dd{c}}}}}{{h{{Dd{c}}}}}l}{cc{}}0{{{Ab{{Dd{c}}}}{Ab{A`e}}}AdlBh}{{{Ab{Df}}{Ab{A`c}}}AdBh}{{}Aj}0{{}c{}}0{{{Dd{c}}{h{{Dd{c}}}}}{{Bj{{h{{Dd{c}}}}}}}l}``{{cn}{{Ab{{Dh{Df}}}}}l}{{{Dd{c}}{Ab{A`{h{{Dd{c}}}}}}{h{{Dd{c}}}}}Adl}{{{Ab{{Dj{{Db{c}}}}}}{Dj{{Db{c}}}}}{{Dj{{Db{c}}}}}l}9{{{Dd{c}}}{{h{{Dd{c}}}}}l}{{cn}{{Dd{c}}}l}1`{{{Dd{c}}}nl}`{{{Dd{c}}Cf}Cfl}`{Abc{}}0{AbBl}0{c{{Bn{e}}}{}{}}0{{}{{Bn{c}}}{}}0{AbC`}0==;8``{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{Ch}}}Ch}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{AjAd}{{{Ab{Ch}}{Ab{A`B`}}}Bb}{cc{}}{{}Aj}{{}c{}}`{{CfCf}n}{Abc{}}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}5`````````````````````````````````{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{Dl}}}Dl}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{{{Ab{Dl}}Dn}Al}{{{Ab{Dl}}{Ab{Dl}}}Al}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{AjAd}3{{Ab{Ab{c}}}Al{}}0{{{Ab{Dl}}{Ab{A`B`}}}Bb}0{E`Dl}{cc{}}{{}Aj}{{}c{}}{{{Ab{Dl}}}{{Ab{E`}}}}`{{EbE`}Dl}{{{Ab{Dl}}}{{Ab{Eb}}}}`{{{Ab{Dl}}{Ab{Dl}}}Dl}{Abc{}}{AbBl}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}9``````````````{{{Ab{A`Ed}}AjAj}Ad}{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{A`Ed}}}Ad}``{{}Ed}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{AjAd}{{{Ab{Ed}}{Ab{A`B`}}}Bb}{cc{}}{{{Ab{A`Ed}}{Ab{Ef}}}Ad}{{}Aj}{{}c{}}{{{Ab{Ed}}}Al}{{{Ab{Ed}}}Aj}`{{AjAj}Ed}{{{Ab{Ed}}{Ab{A`{Dh{Cf}}}}}Ad}{{{Ab{Ed}}{Ab{A`Ef}}Aj}Ad}{{{Ab{Ed}}}{{Ab{{Dh{Aj}}}}}}`{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}9```{{{Ab{A`Ef}}{Ab{Ef}}}Ad}{{{Ab{A`Eh}}}Ad}{{{Ab{A`Eh}}{Ab{Ef}}{Ab{{Dh{Aj}}}}}Ad}{{{Ab{Ef}}EjnDn}Ad}`{{}{{`{{j{}{{f{Ef}}}}}}}}{El{{`{{j{}{{f{Ef}}}}}}}}{ce{}{}}{{{Ab{A`Ef}}}Eh}7{{En{Ab{{Dh{{F`{n}}}}}}}{{Fb{AjEf}}}}{Ab{{Ab{c}}}{}}00{{{Ab{A`}}}{{Ab{A`c}}}{}}00{{{Ab{Ef}}}Ef}{{{Ab{Fd}}}Fd}{{Ab{Ab{A`c}}}Ad{}}0{AbAd}0``{{{Ab{Eh}}}Aj}{{{Ab{Ef}}}Aj}`{{{Ab{Ef}}AjAj}E`}{{{Ab{Fd}}}E`}{{{Ab{Ef}}Aj}E`}1{{{Ab{Ef}}AjAj}Ff}{{{Ab{Fd}}}Ff}{Fd{{Fb{FfFf}}}}{Aj{{Ab{c}}}{}}0{{{Ab{Fd}}}{{Ab{Ef}}}}1{Aj{{Ab{A`c}}}{}}00{{{Ab{A`Fd}}}{{Ab{A`Ef}}}}{AjAd}00{FdFd}`{{{Ab{Ef}}{Ab{Ef}}}Al}{{Ab{Ab{c}}}Al{}}0{{{Ab{A`Ef}}Aj}Ad}{{{Ab{A`Fd}}Aj}Ad}{{{Ab{A`Ef}}AjAj{Ab{E`}}Aj}{{F`{Aj}}}}{{{Ab{A`Ef}}AjAjAj}{{F`{Aj}}}}{{{Ab{Ef}}Aj}Aj}{{{Ab{A`Ef}}c}{{F`{Aj}}}{{Cn{}{{Cl{Aj}}}}}}{{{Ab{Ef}}{Ab{A`B`}}}Bb}0{cc{}}00{{EnAjAj{Ab{A`c}}}{{Fh{Ef}}}Fj}{{EnEbAj}Ef}{{En{F`{Eb}}Aj}Ef}{{En{Ab{{Dh{{F`{n}}}}}}}Ef}{{EnAj}Ef}{{{Ab{Ef}}c}{{Ab{e}}}{}{}}{{{Ab{A`Ef}}c}{{Ab{A`e}}}{}{}}{{}Aj}00{{{Ab{A`Ef}}}Ad}`{{}c{}}00{Efc{}}{{{Ab{Ef}}}c{}}{{{Ab{A`Ef}}}c{}}{FdEf}{{FdAjAjAj}Ef}{{{Ab{Ef}}}Al}{{{Ab{Eh}}}{{`{{Cn{}{{Cl{Dn}}}}}}}}{{{Ab{Ef}}}{{Fl{Eb}}}}{{{Ab{A`Eh}}}{{`{{Cn{}{{Cl{Ej}}}}}}}}{{{Ab{A`Ef}}}{{Fn{Eb}}}}{{{Ab{A`Eh}}}{{`{{G`{}{{Cl{Ej}}}}}}}}{{{Ab{A`Ef}}}{{`{{G`{}{{Cl{{Ab{A`Eb}}}}}}}}}}{{{Ab{Ef}}{Ab{Ef}}}Ef}{{{Ab{A`Ef}}n}Ad}{{EnAjAj}Ef}{{EnAj{Gb{Aj}}}Fd}{{EnAjAjAjAj}Ef}{{EnAj{Ab{{Dh{Aj}}}}AjAj}Fd}`{{{Ab{Ef}}}{{Ab{{Dh{Gd}}}}}}`{{{Ab{A`Ef}}}{{Ab{A`{Dh{Gd}}}}}}{{{Ab{Ef}}}En}{{Aj{Ab{A`c}}}{{Fh{{F`{Gd}}}}}Fj}{{{Ab{A`Eh}}Aj}Dn}{{{Ab{Ef}}Aj}Dn}{{{Ab{A`Eh}}Aj}Ej}{{{Ab{A`Ef}}Aj}Ej}{{{Ab{A`Ef}}AjAjAjEn}Ad}0{{{Ab{A`Ef}}}Aj}{{{Ab{Fd}}AjAjAj}Dn}{{{Ab{A`Fd}}AjAjAj}Ej}{{{Ab{A`Eh}}AjAj}Eh}{{{Ab{Eh}}}Aj}{{{Ab{Ef}}}Aj}{{{Ab{A`Ef}}AjAjn}Ad}{{{Ab{A`Fd}}AjAj}Eh}{{{Ab{A`Ef}}}Ad}{{{Ab{A`Ef}}AjAjAjAj}Eh}{{{Ab{A`Ef}}AjAj}{{Fb{{Ab{A`Eb}}{Ab{A`Eb}}}}}}`{{{Ab{Ef}}{Ab{A`c}}}{{Fh{Ad}}}Gf}{Abc{}}0{AbBl}{{{Ab{Ef}}}{{F`{{F`{n}}}}}}{{{Ab{A`Ef}}AjAjAj}Ad}{c{{Bn{e}}}{}{}}00{{}{{Bn{c}}}{}}00{AbC`}00``{{}c{}}00{{{Ab{{Dh{Gd}}}}{Ab{A`c}}}{{Fh{Ad}}}Gf}```{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{El}}}El}{{Ab{Ab{A`c}}}Ad{}}{AbAd}`{{}El}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{AjAd}{{{Ab{El}}{Ab{A`B`}}}Bb}{cc{}}{{}Aj}=``{Abc{}}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}{{}c{}}`{{{Ab{Ff}}EjnDn}Ad}{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{Ff}}}Ff}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{AjAd}{{{Ab{Ff}}{Ab{Ff}}}Al}{{Ab{Ab{c}}}Al{}}0{{{Ab{Ff}}{Ab{A`B`}}}Bb}{cc{}}{{En{Ab{A`c}}}{{Fh{Ff}}}Fj}`{{{Ab{Ff}}}Aj}{{}Aj}{{}c{}}{{{Bj{{F`{Gd}}}}Ef}Ff}{{{Ab{Ff}}}{{Bj{{Ab{{Dh{Gd}}}}}}}}{{{Ab{Ff}}}{{Ab{Ef}}}}`{{{Ab{Ff}}}En}6{{En{Ab{A`c}}{Ab{A`{Dh{e}}}}{Ab{{Dh{g}}}}}{{Fh{Ad}}}Fj{}{}}7{{{Ab{Ff}}{Ab{A`c}}}{{Fh{Ad}}}Gf}{Abc{}}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}:`{{{Ab{A`Gh}}Dn}Ad}{{{Ab{Gh}}}Aj}`{ce{}{}}{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{A`Gh}}}Ad}{{{Ab{Gh}}}Gh}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{{{Ab{Gh}}}{{`{{Cn{}{{Cl{Aj}}}}}}}}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}:`{AjAd}{{{Ab{Gh}}{Ab{A`B`}}}Bb}0{cc{}}{{E`E`}Gh}{{{Ab{Gh}}}{{`{{Cn{}{{Cl{Dn}}}}}}}}`{{}Aj}{{}c{}}{{{Ab{Gh}}}Al}{{EnAj}Gh}0{{{Ab{Gh}}}En}{{{Ab{A`Gh}}Dn}Ad}`{{{Ab{Gh}}}Aj}{{{Ab{Gh}}}{{Ab{{Dh{Gd}}}}}}{{{Ab{Gh}}Ej}{{F`{n}}}}{{{Ab{Gh}}Ej}Ad}{{{Ab{Ef}}{Ab{Gh}}{Ab{Gh}}}{{F`{{F`{n}}}}}}{{{Ab{A`Gh}}}Ad}5<{Abc{}}{AbBl}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}?{{{Ab{Gh}}}{{Ab{E`}}}}``{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{Gj}}}Gj}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{{}Gj}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}`{AjAd}{{{Ab{Gj}}{Ab{A`B`}}}Bb}{cc{}}{{}Aj}{{}c{}}`{Abc{}}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}4`{{{Ab{A`E`}}c}Ad{{Cn{}{{Cl{Aj}}}}}}{{{Ab{A`E`}}Dn}Aj}{{{Ab{A`E`}}c}Ad{{Gn{Ej}{{Gl{{Bj{Ad}}}}}}}}{{{Ab{E`}}}Aj}`{ce{}{}}{{{Ab{E`}}}{{Ab{{Dh{Eb}}}}}}{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{E`}}}E`}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{{{Ab{E`}}Dn}Al}{{{Ab{E`}}{Ab{E`}}}Al}{Aj{{Ab{c}}}{}}{{{Ab{E`}}}{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}<{AjAd}{{EnAj}E`}5{{Ab{Ab{c}}}Al{}}0{{{Ab{E`}}{Ab{A`B`}}}Bb}0{cc{}}{{En{Ab{A`c}}}{{Fh{E`}}}Fj}{EfE`}{{}Aj}{{}c{}}{{{Ab{E`}}}Al}{{{Ab{E`}}}{{`{{Cn{}{{Cl{Dn}}}}}}}}{{{Ab{E`}}}{{`{{Cn{}{{Cl{Eb}}}}}}}}`:{{{Ab{E`}}Ej}Ad}{{{Ab{A`E`}}}Ad}0{{{Ab{E`}}{Ab{E`}}}E`}{{{Ab{E`}}{Ab{A`c}}}{{Fh{Ad}}}Gf}{Abc{}}{AbBl}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}{{{Ab{A`E`}}e}c{}{{H`{{Ab{A`Ef}}}{{Gl{c}}}}}}=``{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{Hb}}}Hb}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{{}Hb}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}`{AjAd}{{{Ab{Hb}}{Ab{A`B`}}}Bb}{cc{}}{{}Aj}{{}c{}}`{Abc{}}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}4``````{lHd}{ln}{lAj}`{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{Hf}}}Hf}{{Ab{Ab{A`c}}}Ad{}}{AbAd}`{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{AjAd}{{{Ab{Hf}}{Ab{Hf}}}Al}{{Ab{Ab{c}}}Al{}}0{{cn}{{Fb{nn}}}l}{{{Ab{Hf}}{Ab{A`B`}}}Bb}0{cc{}}```{{}Aj}{{}c{}}{{cn}nl}{{ln}n}`{AjAj}2{{cHd}nl}2{{lnn}n}{{nnn}n}`11{lEn}{Abc{}}{AbBl}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}<`{{EnHhHh}Hh}{{HhHh}Hh}001{{EnHhHh}Al}{{EnAjAj}n}`{{En{Ab{A`{Dh{Hh}}}}}Hh}{{{Ab{{Dh{Hh}}}}}Hh}1``{Ab{{Ab{c}}}{}}0{{{Ab{A`}}}{{Ab{A`c}}}{}}0{{cAj}{{`{{Cn{}{{Cl{{F`{n}}}}}}}}}{{Hj{n}}}}{Aj{{Ab{c}}}{}}0{Aj{{Ab{A`c}}}{}}0{AjAd}0`{cc{}}0{{}Aj}0{{}c{}}000{CfHl}{AjHn}{{CfAj}Hl}{{{Ab{A`Hl}}}{{Bj{c}}}{}}{{{Ab{A`Hn}}}{{Bj{c}}}{}}{{}{{I`{c}}}{}}0`{Cf{{`{{Cn{}{{Cl{Aj}}}}}}}}{c{{Bn{e}}}{}{}}0{{}{{Bn{c}}}{}}0{AbC`}0`::`````{{Ibn}c{}}{{IbIb}c{}}{{Idn}c{}}{{IdId}c{}}{{Ifn}c{}}{{IfIf}c{}}{{IhIh}c{}}{{Ihn}c{}}{{Enn}c{}}{{EnEn}c{}}{ce{}{}}0000{IbHd}{IdHd}{IfHd}{IhHd}{EnHd}{Ab{{Ab{c}}}{}}0000{{{Ab{A`}}}{{Ab{A`c}}}{}}0000{{{Ab{Ib}}}Ib}{{{Ab{Id}}}Id}{{{Ab{If}}}If}{{{Ab{Ih}}}Ih}{{{Ab{En}}}En}{{Ab{Ab{A`c}}}Ad{}}0000{AbAd}0000{Aj{{Ab{c}}}{}}0000{Aj{{Ab{A`c}}}{}}0000{c{{Bn{Ib}}}Ij}{c{{Bn{Id}}}Ij}{c{{Bn{If}}}Ij}{c{{Bn{Ih}}}Ij}{c{{Bn{En}}}Ij}{{IbIb}c{}}{{Ibn}c{}}{{Idn}c{}}{{IdId}c{}}{{Ifn}c{}}{{IfIf}c{}}{{IhIh}c{}}{{Ihn}c{}}{{Enn}c{}}{{EnEn}c{}}{AjAd}0000{{{Ab{Ib}}{Ab{Ib}}}Al}{{{Ab{Ib}}{Ab{n}}}Al}{{{Ab{Id}}{Ab{Id}}}Al}{{{Ab{Id}}{Ab{n}}}Al}{{{Ab{If}}{Ab{If}}}Al}{{{Ab{If}}{Ab{n}}}Al}{{{Ab{Ih}}{Ab{n}}}Al}{{{Ab{Ih}}{Ab{Ih}}}Al}{{{Ab{En}}{Ab{En}}}Al}{{{Ab{En}}{Ab{n}}}Al}{{Ab{Ab{c}}}Al{}}000000000{{{Ab{Ib}}{Ab{A`B`}}}Bb}0{{{Ab{Id}}{Ab{A`B`}}}Bb}0{{{Ab{If}}{Ab{A`B`}}}Bb}0{{{Ab{Ih}}{Ab{A`B`}}}Bb}0{{{Ab{En}}{Ab{A`B`}}}Bb}0`{cc{}}0000{{{Ab{Il}}}{{Bn{Enc}}}{}}{{{Ab{Ib}}{Ab{A`c}}}AdBh}{{{Ab{Id}}{Ab{A`c}}}AdBh}{{{Ab{If}}{Ab{A`c}}}AdBh}{{{Ab{Ih}}{Ab{A`c}}}AdBh}{{{Ab{En}}{Ab{A`c}}}AdBh}{{}Aj}0000{{}c{}}0000{nAl}{{Ibn}c{}}{{IbIb}c{}}{{Idn}c{}}{{IdId}c{}}{{IfIf}c{}}{{Ifn}c{}}{{Ihn}c{}}{{IhIh}c{}}{{Enn}c{}}{{EnEn}c{}}{nEn}0`{{{Ab{Ib}}{Ab{n}}}{{Bj{In}}}}{{{Ab{Id}}{Ab{n}}}{{Bj{In}}}}{{{Ab{If}}{Ab{n}}}{{Bj{In}}}}{{{Ab{Ih}}{Ab{n}}}{{Bj{In}}}}{{{Ab{En}}{Ab{n}}}{{Bj{In}}}}?><=:;9867{{{Ab{Ib}}c}BnJ`}{{{Ab{Id}}c}BnJ`}{{{Ab{If}}c}BnJ`}{{{Ab{Ih}}c}BnJ`}{{{Ab{En}}c}BnJ`}{{IbIb}c{}}{{Ibn}c{}}{{Idn}c{}}{{IdId}c{}}{{IfIf}c{}}{{Ifn}c{}}{{Ihn}c{}}{{IhIh}c{}}{{Enn}c{}}{{EnEn}c{}}98764523019867453210{IbEn}{IdEn}{IfEn}{IhEn}{EnEn}{Abc{}}0000{AbBl}0000{c{{Bn{e}}}{}{}}{n{{Bn{IbHf}}}}1{n{{Bn{IdHf}}}}2{n{{Bn{IfHf}}}}3{n{{Bn{IhHf}}}}4{n{{Bn{EnHf}}}}{{}{{Bn{c}}}{}}0000{AbC`}0000{{}c{}}0000`````{{{Ab{A`{Dh{Cf}}}}{Ab{{Dh{Cf}}}}Aj}Ad}``{CfJb}{{CfJb}Ad}{{JbJb}Jb}```````````````````````````````````````````````````````````````````````{{{Ab{A`Eb}}{Ab{Eb}}n}Ad}{{{Ab{A`Ej}}Dnn}Ad}{{{Ab{A`Eb}}{Ab{Eb}}}Ad}{{{Ab{A`Eb}}Ajn}Ad}{{{Ab{A`Ej}}Ajn}Ad}{{{Ab{A`Eb}}{Ab{Eb}}n{Ab{A`{Dh{Eb}}}}}Al}{{{Ab{A`Ej}}Dnn{Ab{{Dh{Aj}}}}}Ad}{{{Ab{A`Eb}}{Ab{Eb}}nAj}Ad}{{{Ab{A`Ej}}AjnDnDn}Ad}{{{Ab{A`Eb}}{Ab{Eb}}n}{{Bj{Ad}}}}3{{{Ab{Eb}}}Dn}{{{Ab{Ej}}}Dn}{{{Ab{A`Eb}}}Ej}:{{{Ab{A`Ej}}Dn}Ad};{Ab{{Ab{c}}}{}}0000{{{Ab{A`}}}{{Ab{A`c}}}{}}0000{{{Ab{Eb}}}Eb}{{{Ab{Dn}}}Dn}{{Ab{Ab{A`c}}}Ad{}}0{AbAd}0{{{Ab{A`Ej}}}Ej}{{{Ab{A`Eb}}{Ab{{Dh{n}}}}}Ad}{{{Ab{Eb}}}Jd}{Aj{{Ab{c}}}{}}0000{Aj{{Ab{A`c}}}{}}0000{c{{Bn{Eb}}}Ij}{AjAd}0000{{{Ab{Eb}}Aj}n}{{{Ab{Dn}}Aj}n}{{{Ab{Eb}}{Ab{Eb}}}Al}{{Ab{Ab{c}}}Al{}}0{{{Ab{A`Eb}}Aj}Ad}{{{Ab{Eb}}}{{Bj{{Fb{Ajn}}}}}}{{{Ab{Eb}}{Ab{A`B`}}}Bb}0{{{Ab{Dn}}{Ab{A`B`}}}Bb}0{{{Ab{Ej}}{Ab{A`B`}}}Bb}{{{Dj{{Db{En}}}}}Eb}{cc{}}{{{Dj{{Db{Ib}}}}}Eb}{{{Dj{{Db{Id}}}}}Eb}{{{Dj{{Db{If}}}}}Eb}{{{Dj{{Db{Ih}}}}}Eb}{{{Ab{Eb}}}Dn}5{{{Ab{Ej}}}Dn}{{{Ab{Dn}}}Dn}7{{{Ab{A`Eb}}}Ej}{{{Ab{A`Ej}}}Ej}99{{cAj{Ab{A`e}}}{{Fh{Eb}}}lFj}{{c{Ab{{Dh{n}}}}}Ebl}{{{Ab{Eb}}{Ab{A`c}}}AdBh}`{{}Aj}0000{{}c{}}0000{{{Ab{Eb}}}c{}}11{{{Ab{Eb}}}Al}{{{Ab{Dn}}}Al}10{{{Ab{Eb}}}Jf}{DnJf}{{{Ab{Eb}}}Jh}{DnJh}{{{Ab{Eb}}}Aj}{{{Ab{Dn}}}Aj}{{{Ab{Eb}}}{{Ab{{Dh{Cf}}}}}}{{{Ab{A`Eb}}}{{Ab{A`{Dh{Cf}}}}}}`{{}{{Fb{ce}}}{}{}}{{cAj}Ebl}{{cAjAj}Ebl}{{{Ab{A`Jf}}}{{Bj{n}}}}{{{Ab{A`Jh}}}{{Bj{{Fb{Ajn}}}}}}{{EnAj}Aj}0{{{Ab{Eb}}}En}{{{Ab{Dn}}}En}{{{Ab{Ej}}}En}{{{Ab{A`Eb}}n}Ad}{{{Ab{A`Ej}}n}Ad}{{{Ab{Eb}}c}BnJ`}{{{Ab{A`Eb}}Ajn}Ad}{{{Ab{A`Ej}}Ajn}Ad}{{{Ab{A`Eb}}Aj}Ad}{{{Ab{A`Eb}}}Ad}{{{Ab{A`Ej}}}Ad}{{{Ab{Eb}}{Ab{Eb}}}Al}{{{Ab{A`Jf}}Aj}Ad}{{{Ab{Eb}}AjAj}Dn}{{DnAjAj}Dn}{{{Ab{A`Eb}}AjAj}Ej}{{{Ab{A`Ej}}AjAj}Ej}{{{Ab{Eb}}{Ab{A`c}}}{{Fh{Ad}}}Gf}{Abc{}}{DnEb}1{AbBl}0<{c{{Bn{e}}}{}{}}0000{{{Ab{A`Eb}}}{{Bn{{Ab{A`{Dj{{Db{If}}}}}}c}}}{}}{{{Ab{A`Eb}}}{{Bn{{Ab{A`{Dj{{Db{Ih}}}}}}c}}}{}}{{{Ab{A`Eb}}}{{Bn{{Ab{A`{Dj{{Db{En}}}}}}c}}}{}}{{{Ab{A`Eb}}}{{Bn{{Ab{A`{Dj{{Db{Id}}}}}}c}}}{}}{{{Ab{A`Eb}}}{{Bn{{Ab{A`{Dj{{Db{Ib}}}}}}c}}}{}}{{}{{Bn{c}}}{}}0000{AbC`}0000{{{Ab{A`Eb}}{Ab{A`c}}}{{Fh{Ad}}}Fj}{{}c{}}0000```````````{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{{Jj{c}}}}}{{Jj{c}}}Af}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{{}{{Jj{c}}}{}}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{AjAd}{{{Ab{{Jj{c}}}}{Ab{A`B`}}}BbBd}`{cc{}}{{}Aj}<`{Abc{}}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}{{}c{}}```{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}{h{c}}}Add}{{{Ab{A`{Jl{c}}}}{Jn{c}}{h{c}}}Add}{{{Ab{A`{Dj{c}}}}Aj{h{c}}}Add}{{{Ab{A`{Jl{c}}}}Aj{h{c}}}Add}{{{Ab{A`{Dj{c}}}}Aj}Add}{{{Ab{A`{Jl{c}}}}Aj}Add}{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}{h{c}}{Ab{A`{Dh{e}}}}}Ald{}}{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}{Ab{A`{Dh{e}}}}}Ald{}}{{{Ab{A`{Dj{c}}}}AjCf{h{c}}{Ab{A`{Dh{e}}}}}Ald{}}{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}}Add}{{{Ab{A`{Jl{c}}}}{Jn{c}}}Add}{{{Ab{A`{Jl{c}}}}{Jn{c}}{h{c}}{Ab{{Dh{Aj}}}}}Add}{{{Ab{A`{Jl{c}}}}{Jn{c}}{Ab{{Dh{Aj}}}}}Add}{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}{h{c}}Aj}Add}{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}Aj}Add}==={{{Ab{A`{Jl{c}}}}Aj{h{c}}{Jn{c}}{Jn{c}}}Add}{{{Ab{A`{Jl{c}}}}Aj{Jn{c}}{Jn{c}}}Add}{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}{h{c}}}{{Bj{Ad}}}d}{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}}{{Bj{Ad}}}d}76{ce{}{}}{{{Ab{{Dj{c}}}}}{{Jn{c}}}d}{{{Ab{{Jl{c}}}}}{{Jn{c}}}d}{{{Ab{A`{Dj{c}}}}}{{Jl{c}}}d}=<={Ab{{Ab{c}}}{}}00{{{Ab{A`}}}{{Ab{A`c}}}{}}00{{{Ab{{Dj{c}}}}}{{Dj{c}}}{Afd}}{{{Ab{{Jn{c}}}}}{{Jn{c}}}{Afd}}{{Ab{Ab{A`c}}}Ad{}}0{AbAd}0{{{Ab{A`{Jl{c}}}}}{{Jl{c}}}d}{{{Ab{A`{Dj{c}}}}{Ab{{Dh{{h{c}}}}}}}Add}{{{Ab{A`{Dj{c}}}}{Ab{Dh}}}Add}{{{Ab{{Dj{c}}}}}Jdd}{Aj{{Ab{c}}}{}}00{Aj{{Ab{A`c}}}{}}00{AjAd}00``{{{Ab{{Dj{c}}}}Aj}{{h{c}}}d}{{{Ab{{Jn{c}}}}Aj}{{h{c}}}d}{{{Ab{{Dj{c}}}}Aj}{}d}{{{Ab{{Jn{c}}}}Aj}{}d}{{{Ab{{Dj{c}}}}{Ab{{Dj{c}}}}}Al{And}}{{Ab{Ab{c}}}Al{}}0{{{Ab{A`{Dj{c}}}}Aj}Add}{{{Ab{{Dj{c}}}}}{{Bj{{Fb{Aj{h{c}}}}}}}d}{{{Ab{{Dj{c}}}}}{{Bj{{Fb{Aj}}}}}d}{{{Ab{{Dj{c}}}}{Ab{A`B`}}}Bbd}{{{Ab{{Dj{c}}}}{Ab{A`B`}}}Bb{Bdd}}{{{Ab{{Jn{c}}}}{Ab{A`B`}}}Bb{Bdd}}{{{Ab{{Jn{c}}}}{Ab{A`B`}}}Bbd}{{{Ab{{Jl{c}}}}{Ab{A`B`}}}Bb{Bdd}}{{{Ab{{Dj{c}}}}}cd}```{cc{}}{{{Fb{ce}}}{{Dj{c}}}d{{K`{{Dh{{h{c}}}}}}}}{{{Ab{{Dj{c}}}}}{{Jn{c}}}d}22{{{Ab{A`{Dj{c}}}}}{{Jl{c}}}d}{{cAj{Ab{A`e}}}{{Fh{{Dj{c}}}}}dFj}{{cAj{F`{Cf}}}{{Dj{c}}}d}{{c{Ab{{Dh{{h{c}}}}}}}{{Dj{c}}}d}{{{Ab{{Dj{c}}}}{Ab{A`e}}}Ad{Bfd}Bh}{{}Aj}00{{}c{}}00{{{Ab{{Dj{c}}}}}Ald}{{{Ab{{Jn{c}}}}}Ald}10{{{Ab{{Dj{c}}}}}{{Kb{c}}}d}{{{Jn{c}}}{{Kb{c}}}d}{{{Ab{{Dj{c}}}}}{{Kd{c}}}d}{{{Jn{c}}}{{Kd{c}}}d}{{{Ab{{Dj{c}}}}}Ajd}{{{Ab{{Jn{c}}}}}Ajd}`{{{Ab{{Jn{c}}}}}{{Fb{CfCf}}}d}{{{Ab{{Jn{c}}}}}{{D`{Aj}}}d}0{{{Ab{{Dj{c}}}}}{{Ab{{Dh{Cf}}}}}d}```{{{Ab{A`{Dj{c}}}}}{{Ab{A`{Dh{Cf}}}}}d}{{{Ab{{Jn{c}}}}}Cfd}0{{cAj}{{Dj{c}}}d}{{cAjAj}{{Dj{c}}}d}7{{{Ab{{Dj{c}}}}}End}{{{Ab{{Jn{c}}}}}End}{{{Ab{{Jl{c}}}}}End}{{{Ab{A`{Jl{c}}}}}Add}{{{Ab{A`{Dj{c}}}}{h{c}}}Add}{{{Ab{A`{Jl{c}}}}{h{c}}}Add}{{{Ab{A`{Dj{c}}}}}Add}3{{{Ab{A`{Dj{c}}}}Aj{h{c}}}Add}{{{Ab{A`{Jl{c}}}}Aj{h{c}}}Add}{{{Ab{A`{Dj{c}}}}Aj}Add}{{{Ab{A`{Jl{c}}}}Aj}Add}147{{{Ab{{Dj{c}}}}{Ab{{Dj{c}}}}}Ald}{{{Ab{{Dj{c}}}}AjAj}{{Jn{c}}}d}{{{Jn{c}}AjAj}{{Jn{c}}}d}{{{Ab{A`{Dj{c}}}}AjAj}{{Jl{c}}}d}{{{Ab{A`{Jl{c}}}}AjAj}{{Jl{c}}}d}``{{{Ab{{Dj{c}}}}{Ab{A`e}}}{{Fh{Ad}}}dGf}{Abc{}}{{{Jn{c}}}{{Dj{c}}}d}1{AbBl}0:{c{{Bn{e}}}{}{}}00{{}{{Bn{c}}}{}}00{AbC`}00{{{Ab{A`{Dj{c}}}}{Ab{A`e}}}{{Fh{Ad}}}dFj}{{}c{}}00````{Ab{{Ab{c}}}{}}0{{{Ab{A`}}}{{Ab{A`c}}}{}}0````{Aj{{Ab{c}}}{}}0{Aj{{Ab{A`c}}}{}}0`{AjAd}0````{cc{}}0`{{}Aj}07777{{{Ab{{Kb{c}}}}}Ajd}````{{}{{Fb{ce}}}{}{}}{{{Jn{c}}}{{Kb{c}}}d}{{{Jn{c}}}{{Kd{c}}}d}{{{Ab{A`{Kb{c}}}}}{{Bj{e}}}d{}}{{{Ab{A`{Kd{c}}}}}{{Bj{e}}}d{}}{{{Ab{A`{Kb{c}}}}}Bjd}{{{Ab{A`{Kd{c}}}}}{{Bj{{Fb{Aj}}}}}d}{{{Ab{A`{Kb{c}}}}Aj}Add}{c{{Bn{e}}}{}{}}0{{}{{Bn{c}}}{}}0{AbC`}0{{}c{}}0","D":"AM`","p":[[17,"Characteristic"],[10,"Field",28],[17,"Value"],[5,"FieldElement",42],[10,"Strategy",1561],[10,"Prime",729],[1,"u32"],[0,"mut"],[1,"reference"],[1,"unit"],[10,"Clone",1562],[10,"FieldInternal",84],[1,"usize"],[1,"bool"],[10,"PartialEq",1563],[5,"Formatter",1564],[8,"Result",1564],[10,"Debug",1564],[10,"Hash",1565],[10,"Hasher",1565],[6,"Option",1566],[5,"String",1567],[6,"Result",1568],[5,"TypeId",1569],[17,"ElementContainer"],[10,"FieldElementContainer",42],[1,"u64"],[5,"LimbBitIndexPair",264],[5,"LimbIterator",84],[17,"Item"],[10,"Iterator",1570],[5,"Range",1571],[5,"Fp",132],[5,"SmallFq",180],[5,"SmallFqElement",180],[1,"slice"],[5,"FqVector",1346],[5,"AffineSubspace",317],[6,"FpSlice",1119],[5,"Subspace",659],[6,"FpVector",1119],[5,"M4riTable",362],[5,"Matrix",390],[5,"MatrixSliceMut",390],[6,"FpSliceMut",1119],[5,"MatrixArbParams",533],[5,"ValidPrime",831],[5,"Vec",1572],[1,"tuple"],[5,"AugmentedMatrix",390],[5,"QuasiInverse",557],[8,"Result",1573],[10,"Read",1574],[5,"Iter",1575],[5,"IterMut",1575],[10,"MaybeIndexedParallelIterator",1576],[1,"array"],[1,"isize"],[10,"Write",1574],[5,"Subquotient",591],[5,"SubquotientArbParams",637],[17,"Output"],[10,"FnMut",1577],[10,"FnOnce",1577],[5,"SubspaceArbParams",707],[1,"i32"],[6,"PrimeError",729],[10,"Binomial",779],[10,"Into",1578],[5,"BitflagIterator",791],[5,"BinomialIterator",791],[5,"IterBridge",1579],[5,"P2",831],[5,"P3",831],[5,"P5",831],[5,"P7",831],[10,"Deserializer",1580],[1,"str"],[6,"Ordering",1563],[10,"Serializer",1581],[5,"__m128i",1582],[1,"f32"],[6,"FpVectorIterator",1119],[6,"FpVectorNonZeroIterator",1119],[5,"FqVectorArbParams",1324],[5,"FqSliceMut",1346],[5,"FqSlice",1346],[10,"AsRef",1578],[5,"FqVectorIterator",1508],[5,"FqVectorNonZeroIterator",1508],[8,"Polynomial",180]],"r":[[0,14],[2,14],[4,14],[5,14],[30,132],[31,180],[132,1067],[133,1067],[134,1067],[135,1067],[285,317],[286,390],[287,390],[288,390],[289,557],[290,591],[291,659],[349,533],[351,533],[352,533],[353,637],[354,707],[729,779],[1083,1119],[1084,1119],[1085,1119],[1086,1119],[1087,1119],[1108,1323],[1115,1324],[1116,1324]],"b":[[61,"impl-Debug-for-FieldElement%3CF%3E"],[62,"impl-Display-for-FieldElement%3CF%3E"],[221,"impl-Debug-for-SmallFq%3CP%3E"],[222,"impl-Display-for-SmallFq%3CP%3E"],[223,"impl-Debug-for-SmallFqElement"],[224,"impl-Display-for-SmallFqElement"],[331,"impl-Display-for-AffineSubspace"],[332,"impl-Debug-for-AffineSubspace"],[450,"impl-Display-for-Matrix"],[451,"impl-Debug-for-Matrix"],[470,"impl-IntoIterator-for-Matrix"],[471,"impl-IntoIterator-for-%26Matrix"],[472,"impl-IntoIterator-for-%26mut+Matrix"],[608,"impl-Display-for-Subquotient"],[609,"impl-Debug-for-Subquotient"],[683,"impl-Debug-for-Subspace"],[684,"impl-Display-for-Subspace"],[752,"impl-Display-for-PrimeError"],[753,"impl-Debug-for-PrimeError"],[836,"impl-Add%3Cu32%3E-for-P2"],[837,"impl-Add-for-P2"],[838,"impl-Add%3Cu32%3E-for-P3"],[839,"impl-Add-for-P3"],[840,"impl-Add%3Cu32%3E-for-P5"],[841,"impl-Add-for-P5"],[842,"impl-Add-for-P7"],[843,"impl-Add%3Cu32%3E-for-P7"],[844,"impl-Add%3Cu32%3E-for-ValidPrime"],[845,"impl-Add-for-ValidPrime"],[896,"impl-Div-for-P2"],[897,"impl-Div%3Cu32%3E-for-P2"],[898,"impl-Div%3Cu32%3E-for-P3"],[899,"impl-Div-for-P3"],[900,"impl-Div%3Cu32%3E-for-P5"],[901,"impl-Div-for-P5"],[902,"impl-Div-for-P7"],[903,"impl-Div%3Cu32%3E-for-P7"],[904,"impl-Div%3Cu32%3E-for-ValidPrime"],[905,"impl-Div-for-ValidPrime"],[911,"impl-PartialEq-for-P2"],[912,"impl-PartialEq%3Cu32%3E-for-P2"],[913,"impl-PartialEq-for-P3"],[914,"impl-PartialEq%3Cu32%3E-for-P3"],[915,"impl-PartialEq-for-P5"],[916,"impl-PartialEq%3Cu32%3E-for-P5"],[917,"impl-PartialEq%3Cu32%3E-for-P7"],[918,"impl-PartialEq-for-P7"],[919,"impl-PartialEq-for-ValidPrime"],[920,"impl-PartialEq%3Cu32%3E-for-ValidPrime"],[931,"impl-Display-for-P2"],[932,"impl-Debug-for-P2"],[933,"impl-Display-for-P3"],[934,"impl-Debug-for-P3"],[935,"impl-Display-for-P5"],[936,"impl-Debug-for-P5"],[937,"impl-Debug-for-P7"],[938,"impl-Display-for-P7"],[939,"impl-Debug-for-ValidPrime"],[940,"impl-Display-for-ValidPrime"],[964,"impl-Mul%3Cu32%3E-for-P2"],[965,"impl-Mul-for-P2"],[966,"impl-Mul%3Cu32%3E-for-P3"],[967,"impl-Mul-for-P3"],[968,"impl-Mul-for-P5"],[969,"impl-Mul%3Cu32%3E-for-P5"],[970,"impl-Mul%3Cu32%3E-for-P7"],[971,"impl-Mul-for-P7"],[972,"impl-Mul%3Cu32%3E-for-ValidPrime"],[973,"impl-Mul-for-ValidPrime"],[982,"impl-Rem%3Cu32%3E-for-P2"],[983,"impl-Rem-for-P2"],[984,"impl-Rem-for-P3"],[985,"impl-Rem%3Cu32%3E-for-P3"],[986,"impl-Rem%3Cu32%3E-for-P5"],[987,"impl-Rem-for-P5"],[988,"impl-Rem%3Cu32%3E-for-P7"],[989,"impl-Rem-for-P7"],[990,"impl-Rem-for-ValidPrime"],[991,"impl-Rem%3Cu32%3E-for-ValidPrime"],[997,"impl-Shl-for-P2"],[998,"impl-Shl%3Cu32%3E-for-P2"],[999,"impl-Shl%3Cu32%3E-for-P3"],[1000,"impl-Shl-for-P3"],[1001,"impl-Shl-for-P5"],[1002,"impl-Shl%3Cu32%3E-for-P5"],[1003,"impl-Shl%3Cu32%3E-for-P7"],[1004,"impl-Shl-for-P7"],[1005,"impl-Shl%3Cu32%3E-for-ValidPrime"],[1006,"impl-Shl-for-ValidPrime"],[1007,"impl-Shr-for-P2"],[1008,"impl-Shr%3Cu32%3E-for-P2"],[1009,"impl-Shr%3Cu32%3E-for-P3"],[1010,"impl-Shr-for-P3"],[1011,"impl-Shr%3Cu32%3E-for-P5"],[1012,"impl-Shr-for-P5"],[1013,"impl-Shr-for-P7"],[1014,"impl-Shr%3Cu32%3E-for-P7"],[1015,"impl-Shr-for-ValidPrime"],[1016,"impl-Shr%3Cu32%3E-for-ValidPrime"],[1017,"impl-Sub-for-P2"],[1018,"impl-Sub%3Cu32%3E-for-P2"],[1019,"impl-Sub-for-P3"],[1020,"impl-Sub%3Cu32%3E-for-P3"],[1021,"impl-Sub%3Cu32%3E-for-P5"],[1022,"impl-Sub-for-P5"],[1023,"impl-Sub%3Cu32%3E-for-P7"],[1024,"impl-Sub-for-P7"],[1025,"impl-Sub%3Cu32%3E-for-ValidPrime"],[1026,"impl-Sub-for-ValidPrime"],[1208,"impl-Display-for-FpVector"],[1209,"impl-Debug-for-FpVector"],[1210,"impl-Debug-for-FpSlice%3C\'a%3E"],[1211,"impl-Display-for-FpSlice%3C\'_%3E"],[1213,"impl-From%3CFqVector%3CFp%3CValidPrime%3E%3E%3E-for-FpVector"],[1215,"impl-From%3CFqVector%3CFp%3CP2%3E%3E%3E-for-FpVector"],[1216,"impl-From%3CFqVector%3CFp%3CP3%3E%3E%3E-for-FpVector"],[1217,"impl-From%3CFqVector%3CFp%3CP5%3E%3E%3E-for-FpVector"],[1218,"impl-From%3CFqVector%3CFp%3CP7%3E%3E%3E-for-FpVector"],[1219,"impl-From%3C%26FpVector%3E-for-FpSlice%3C\'a%3E"],[1221,"impl-From%3C%26FpSliceMut%3C\'b%3E%3E-for-FpSlice%3C\'a%3E"],[1222,"impl-From%3C%26FpSlice%3C\'b%3E%3E-for-FpSlice%3C\'a%3E"],[1224,"impl-From%3C%26mut+FpVector%3E-for-FpSliceMut%3C\'a%3E"],[1225,"impl-From%3C%26mut+FpSliceMut%3C\'b%3E%3E-for-FpSliceMut%3C\'a%3E"],[1294,"impl-TryInto%3C%26mut+FqVector%3CFp%3CP5%3E%3E%3E-for-%26mut+FpVector"],[1295,"impl-TryInto%3C%26mut+FqVector%3CFp%3CP7%3E%3E%3E-for-%26mut+FpVector"],[1296,"impl-TryInto%3C%26mut+FqVector%3CFp%3CValidPrime%3E%3E%3E-for-%26mut+FpVector"],[1297,"impl-TryInto%3C%26mut+FqVector%3CFp%3CP3%3E%3E%3E-for-%26mut+FpVector"],[1298,"impl-TryInto%3C%26mut+FqVector%3CFp%3CP2%3E%3E%3E-for-%26mut+FpVector"],[1417,"impl-Display-for-FqVector%3CF%3E"],[1418,"impl-Debug-for-FqVector%3CF%3E"],[1419,"impl-Debug-for-FqSlice%3C\'a,+F%3E"],[1420,"impl-Display-for-FqSlice%3C\'_,+F%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADEFjgAAAAIABAAAAAcACgAUAAIAHAAOAC0AEwBCAAIARgADAEsACQBXAAIAWwABAF4AAQBhAAMAZwAAAGoAAQBtAAAAbwABAHIABgB9AAEAgAACAIQABACKABgApAACAKgABQCvAAcAugAAALwAGQDXAAwA5gADAOwABgD0ABIACAEAAAoBCQAVAQAAFwEHACEBAAAjAQAAJQEPADYBFQBNAQEAUAEAAFIBGABtAQEAcgEEAHkBAAB/AQEAgwEDAIkBAgCOAQEAkQECAJUBDgClAQAApwEAAKkBAACrAQAArQERAMQBAADIAQAAzAEAAM8BAgDTAQAA1wENAOYBBADsAQEA7wEDAPYBAwD8AQIAAAIUABYCDQAlAgAAJwIGADACCwA9AgMAQgIFAEkCEQBcAgYAZQICAGkCAABsAgQAcwIAAHcCEwCMAgAAjgIFAJUCAACYAgIAnAIQAK8CAACxAgAAtAIAALYCAQC7AgYAwwINANICAADUAggA3gIRAPECAQD0AgMA+QICAP4CAgACAwAABQMGABQDAAAZAwQAHwMGACgDAQAsAyYAVANaALQDCgDEA5EAVwRkAL0EAQDABAQAxgQBAMkEAQDNBAIA0QQEANsESAAlBQUALAUNADsFAAA9BQUARgUKAFIFAABUBQEAVwUAAFkFAgBdBQUAZQULAHMFEwCJBQMAjgUEAJQFAQCYBQcAowUEAKkFBgCxBRUAyAUKANQFAgDYBQ0A5wUUAP4FAgADBhYA"}],["lift_hom",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["mahowald_invariant",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["massey",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["maybe_rayon",{"t":"CIHHCHKKRKKIKKKNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNN","n":["concurrent","Scope","in_place_scope","join","prelude","scope","IndexedParallelIterator","IntoMaybeParallelIterator","Item","MaybeIndexedParallelIterator","MaybeIntoParallelRefMutIterator","MaybeIterBridge","MaybeParallelBridge","MaybeParallelIterator","ParallelIterator","all","any","by_exponential_blocks","by_uniform_blocks","chain","chunks","cloned","cmp","collect","collect_into_vec","collect_vec_list","copied","count","drive","drive_unindexed","enumerate","eq","filter","filter_map","find_any","find_first","find_last","find_map_any","find_map_first","find_map_last","flat_map","flat_map_iter","flatten","flatten_iter","fold","fold_chunks","fold_chunks_with","fold_with","for_each","for_each_init","for_each_with","ge","gt","inspect","interleave","interleave_shortest","intersperse","into_maybe_par_iter","le","len","lt","map","map_init","map_with","max","max_by","max_by_key","maybe_par_bridge","maybe_par_iter_mut","min","min_by","min_by_key","ne","opt_len","panic_fuse","partial_cmp","partition","partition_map","position_any","position_first","position_last","positions","product","reduce","reduce_with","rev","skip","skip_any","skip_any_while","step_by","sum","take","take_any","take_any_while","try_fold","try_fold_with","try_for_each","try_for_each_init","try_for_each_with","try_reduce","try_reduce_with","unzip","unzip_into_vecs","update","while_some","with_max_len","with_min_len","with_producer","zip","zip_eq"],"q":[[0,"maybe_rayon"],[1,"maybe_rayon::concurrent"],[6,"maybe_rayon::concurrent::prelude"],[110,"core::ops::function"],[111,"core::marker"],[112,"rayon::iter"],[113,"rayon::iter::blocks"],[114,"rayon::iter::chain"],[115,"rayon::iter::chunks"],[116,"rayon::iter::cloned"],[117,"core::cmp"],[118,"alloc::vec"],[119,"alloc::collections::linked_list"],[120,"rayon::iter::copied"],[121,"rayon::iter::plumbing"],[122,"rayon::iter::enumerate"],[123,"rayon::iter::filter"],[124,"rayon::iter::filter_map"],[125,"core::option"],[126,"rayon::iter::flat_map"],[127,"rayon::iter::flat_map_iter"],[128,"core::iter::traits::collect"],[129,"rayon::iter::flatten"],[130,"rayon::iter::flatten_iter"],[131,"rayon::iter::fold"],[132,"rayon::iter::fold_chunks"],[133,"rayon::iter::fold_chunks_with"],[134,"core::clone"],[135,"rayon::iter::inspect"],[136,"rayon::iter::interleave"],[137,"rayon::iter::interleave_shortest"],[138,"rayon::iter::intersperse"],[139,"rayon::iter::map"],[140,"rayon::iter::map_with"],[141,"rayon::iter::panic_fuse"],[142,"core::default"],[143,"either"],[144,"rayon::iter::positions"],[145,"core::iter::traits::accum"],[146,"rayon::iter::rev"],[147,"rayon::iter::skip"],[148,"rayon::iter::skip_any"],[149,"rayon::iter::skip_any_while"],[150,"rayon::iter::step_by"],[151,"rayon::iter::take"],[152,"rayon::iter::take_any"],[153,"rayon::iter::take_any_while"],[154,"rayon::iter::try_fold"],[155,"rayon::iter::private"],[156,"rayon::iter::update"],[157,"rayon::iter::while_some"],[158,"rayon::iter::len"],[159,"rayon::iter::zip"],[160,"rayon::iter::zip_eq"]],"i":"````````A```````00Ah010101011101001111111111111001111001001En111222222FhFl44434434433334443344343444444444434433333","f":"``{ec{}{{h{{d{b}}}{{f{c}}}}}}{{ei}{{j{cg}}}l{{h{}{{f{c}}}}l}l{{h{}{{f{g}}}}l}}`{ecl{{h{{d{b}}}{{f{c}}}}l}}`````````{{{A`{}{{n{c}}}}e}Abl{{Ad{c}{{f{Ab}}}}Afl}}0{Ah{{Aj{Ah}}}}{{AhAl}{{An{Ah}}}}{{{A`{}{{n{c}}}}e}{{B`{{A`{}{{n{c}}}}}}}l{{Bb{}{{n{c}}}}}}{{AhAl}{{Bd{Ah}}}}{{{A`{}{{n{c}}}}}{{Bf{{A`{}{{n{c}}}}}}}l}{{Ahe}Bh{}{{Bb{}{{n{c}}}}}}{{{A`{}{{n{c}}}}}el{{Bj{c}}}}{{Ah{d{Bl{Bn{c}}}}}C`{}}{{{A`{}{{n{c}}}}}{{Cb{{Bn{c}}}}}l}{{{A`{}{{n{c}}}}}{{Cd{{A`{}{{n{c}}}}}}}l}{{{A`{}{{n{c}}}}}All}{{Ahe}{}{}{{Cf{c}}}}{{{A`{}{{n{c}}}}e}{}l{{Ch{c}}}}{Ah{{Cj{Ah}}}}{{Ahc}AbBb}{{{A`{}{{n{c}}}}e}{{Cl{{A`{}{{n{c}}}}e}}}l{{Ad{{d{c}}}{{f{Ab}}}}Afl}}{{{A`{}{{n{c}}}}g}{{Cn{{A`{}{{n{c}}}}g}}}ll{{Ad{c}{{f{{D`{e}}}}}}Afl}}{{{A`{}{{n{c}}}}e}{{D`{c}}}l{{Ad{{d{c}}}{{f{Ab}}}}Afl}}00{{{A`{}{{n{c}}}}g}{{D`{e}}}ll{{Ad{c}{{f{{D`{e}}}}}}Afl}}00{{{A`{}{{n{c}}}}g}{{Db{{A`{}{{n{c}}}}g}}}lBb{{Ad{c}{{f{e}}}}Afl}}{{{A`{}{{n{c}}}}g}{{Dd{{A`{}{{n{c}}}}g}}}lDf{{Ad{c}{{f{e}}}}Afl}}{{{A`{}{{n{c}}}}}{{Dh{{A`{}{{n{c}}}}}}}l}{{{A`{}{{n{c}}}}}{{Dj{{A`{}{{n{c}}}}}}}l}{{{A`{}{{n{c}}}}gi}{{Dl{{A`{}{{n{c}}}}gi}}}ll{{Ad{}{{f{e}}}}Afl}{{Ad{ec}{{f{e}}}}Afl}}{{AhAlei}{{Dn{Ahei}}}l{{Ad{}{{f{c}}}}lAf}{}{{Ad{cg}{{f{c}}}}lAf}}{{AhAlcg}{{E`{Ahcg}}}{lEb}{}{{Ad{ce}{{f{c}}}}lAf}}{{{A`{}{{n{c}}}}eg}{{Ed{{A`{}{{n{c}}}}eg}}}l{lEb}{{Ad{ec}{{f{e}}}}Afl}}{{{A`{}{{n{c}}}}e}C`l{{Ad{c}}Afl}}{{{A`{}{{n{c}}}}gi}C`l{}{{Ad{}{{f{e}}}}Afl}{{Ad{{d{Ble}}c}}Afl}}{{{A`{}{{n{c}}}}eg}C`l{lEb}{{Ad{{d{Ble}}c}}Afl}}??{{{A`{}{{n{c}}}}e}{{Ef{{A`{}{{n{c}}}}e}}}l{{Ad{{d{c}}}}Afl}}{{Ahe}{{Eh{Ah}}}{}{{Bb{}{{n{c}}}}}}{{Ahe}{{Ej{Ah}}}{}{{Bb{}{{n{c}}}}}}{{{A`{}{{n{c}}}}c}{{El{{A`{}{{n{c}}}}}}}l}{Enc{}}{{Ahc}AbBb}{{{d{Ah}}}Al}1{{{A`{}{{n{c}}}}g}{{F`{{A`{}{{n{c}}}}g}}}ll{{Ad{c}{{f{e}}}}Afl}}{{{A`{}{{n{c}}}}gk}{{Fb{{A`{}{{n{c}}}}gk}}}l{}{{Ad{}{{f{e}}}}Afl}l{{Ad{{d{Ble}}c}{{f{i}}}}Afl}}{{{A`{}{{n{c}}}}ei}{{Fd{{A`{}{{n{c}}}}ei}}}l{lEb}l{{Ad{{d{Ble}}c}{{f{g}}}}Afl}}{{{A`{}{{n{c}}}}}{{D`{c}}}l}{{{A`{}{{n{c}}}}e}{{D`{c}}}l{Afl{Ad{{d{c}}{d{c}}}{{f{Bh}}}}}}{{{A`{}{{n{c}}}}g}{{D`{c}}}l{Ffl}{Afl{Ad{{d{c}}}{{f{e}}}}}}{Fh{{Fj{Fh}}}}{{{d{BlFl}}}c{}}4329{{{d{{A`{}{{n{c}}}}}}}{{D`{Al}}}l}{{{A`{}{{n{c}}}}}{{Fn{{A`{}{{n{c}}}}}}}l}{{Ahc}{{D`{Bh}}}Bb}{{{A`{}{{n{c}}}}e}{{j{gi}}}l{{Ad{{d{c}}}{{f{Ab}}}}Afl}{G`l{Gb{c}}}{G`l{Gb{c}}}}{{{A`{}{{n{c}}}}i}{{j{km}}}lll{{Ad{c}{{f{{Gd{eg}}}}}}Afl}{G`l{Gb{e}}}{G`l{Gb{g}}}}{{Ahe}{{D`{Al}}}{}{{Ad{c}{{f{Ab}}}}Afl}}00{{Ahe}{{Gf{Ahe}}}{}{{Ad{c}{{f{Ab}}}}Afl}}{{{A`{}{{n{c}}}}}el{l{Gh{c}}Gh}}{{{A`{}{{n{c}}}}eg}cl{{Ad{}{{f{c}}}}Afl}{{Ad{cc}{{f{c}}}}Afl}}{{{A`{}{{n{c}}}}e}{{D`{c}}}l{{Ad{cc}{{f{c}}}}Afl}}{Ah{{Gj{Ah}}}}{{AhAl}{{Gl{Ah}}}}{{{A`{}{{n{c}}}}Al}{{Gn{{A`{}{{n{c}}}}}}}l}{{{A`{}{{n{c}}}}e}{{H`{{A`{}{{n{c}}}}e}}}l{{Ad{{d{c}}}{{f{Ab}}}}Afl}}{{AhAl}{{Hb{Ah}}}}{{{A`{}{{n{c}}}}}el{l{Hd{c}}Hd}}{{AhAl}{{Hf{Ah}}}}{{{A`{}{{n{c}}}}Al}{{Hh{{A`{}{{n{c}}}}}}}l}{{{A`{}{{n{c}}}}e}{{Hj{{A`{}{{n{c}}}}e}}}l{{Ad{{d{c}}}{{f{Ab}}}}Afl}}{{{A`{}{{n{c}}}}gk}{{Hl{{A`{}{{n{c}}}}igk}}}l{}{{Ad{}{{f{e}}}}Afl}{{Hn{}{{f{e}}}}l}{{Ad{ec}{{f{i}}}}Afl}}{{{A`{}{{n{c}}}}ei}{{I`{{A`{}{{n{c}}}}gi}}}l{Ebl}{{Hn{}{{f{e}}}}l}{{Ad{ec}{{f{g}}}}Afl}}{{{A`{}{{n{c}}}}g}el{{Hn{}{{f{C`}}}}l}{{Ad{c}{{f{e}}}}Afl}}{{{A`{}{{n{c}}}}gk}il{}{{Ad{}{{f{e}}}}Afl}{{Hn{}{{f{C`}}}}l}{{Ad{{d{Ble}}c}{{f{i}}}}Afl}}{{{A`{}{{n{c}}}}ei}gl{lEb}{{Hn{}{{f{C`}}}}l}{{Ad{{d{Ble}}c}{{f{g}}}}Afl}}{{{A`{}{{n{c}}}}gi}cl{}{{Ad{}{{f{e}}}}Afl}{{Ad{ee}{{f{c}}}}Afl}}{{{A`{}{{n{c}}}}g}{{D`{c}}}l{}{{Ad{ee}{{f{c}}}}Afl}}{{{A`{}{{n{c}}}}}{{j{gk}}}ll{G`l{Gb{e}}}l{G`l{Gb{i}}}}{{Ah{d{Bl{Bn{c}}}}{d{Bl{Bn{e}}}}}C`ll}{{{A`{}{{n{c}}}}e}{{Ib{{A`{}{{n{c}}}}e}}}l{{Ad{{d{Blc}}}}Afl}}{{{A`{}{{n{c}}}}}{{Id{{A`{}{{n{c}}}}}}}l}{{AhAl}{{If{Ah}}}}{{AhAl}{{Ih{Ah}}}}{{Ahe}{}{}{{Ij{c}}}}{{Ahc}{{Il{Ah}}}Bb}{{Ahc}{{In{Ah}}}Bb}","D":"Kn","p":[[8,"Scope",1],[1,"reference"],[17,"Output"],[10,"FnOnce",110],[1,"tuple"],[10,"Send",111],[17,"Item"],[10,"ParallelIterator",6,112],[1,"bool"],[10,"Fn",110],[10,"Sync",111],[10,"IndexedParallelIterator",6,112],[5,"ExponentialBlocks",113],[1,"usize"],[5,"UniformBlocks",113],[5,"Chain",114],[10,"IntoParallelIterator",112],[5,"Chunks",115],[5,"Cloned",116],[6,"Ordering",117],[10,"FromParallelIterator",112],[0,"mut"],[5,"Vec",118],[1,"unit"],[5,"LinkedList",119],[5,"Copied",120],[10,"Consumer",121],[10,"UnindexedConsumer",121],[5,"Enumerate",122],[5,"Filter",123],[5,"FilterMap",124],[6,"Option",125],[5,"FlatMap",126],[5,"FlatMapIter",127],[10,"IntoIterator",128],[5,"Flatten",129],[5,"FlattenIter",130],[5,"Fold",131],[5,"FoldChunks",132],[5,"FoldChunksWith",133],[10,"Clone",134],[5,"FoldWith",131],[5,"Inspect",135],[5,"Interleave",136],[5,"InterleaveShortest",137],[5,"Intersperse",138],[10,"IntoMaybeParallelIterator",6],[5,"Map",139],[5,"MapInit",140],[5,"MapWith",140],[10,"Ord",117],[10,"MaybeParallelBridge",6],[8,"MaybeIterBridge",6],[10,"MaybeIntoParallelRefMutIterator",6],[5,"PanicFuse",141],[10,"Default",142],[10,"ParallelExtend",112],[6,"Either",143],[5,"Positions",144],[10,"Product",145],[5,"Rev",146],[5,"Skip",147],[5,"SkipAny",148],[5,"SkipAnyWhile",149],[5,"StepBy",150],[10,"Sum",145],[5,"Take",151],[5,"TakeAny",152],[5,"TakeAnyWhile",153],[5,"TryFold",154],[10,"Try",155],[5,"TryFoldWith",154],[5,"Update",156],[5,"WhileSome",157],[5,"MaxLen",158],[5,"MinLen",158],[10,"ProducerCallback",121],[5,"Zip",159],[5,"ZipEq",160]],"r":[[6,112],[14,112]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA8ABQAAAAYACAAAAAoABAA6AAAARAABAA=="}],["num_gens",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["once",{"t":"SSFFFFSNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNONNNNNNNONNONNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["DATA_LAYOUT","MAX_OUTER_LENGTH","OnceBiVec","OnceVec","OooTracker","Page","USIZE_LEN","allocate","allocate_for","allocated","as_slice","borrow","","","","borrow_mut","","","","clone","","","clone_into","","","clone_to_uninit","","","data","","deallocate","default","","","deref","","","","deref_mut","","","","drop","","","","","entry_ptr","eq","","extend","","fmt","","from","","","","from_bivec","from_vec","","get","","get_mut","index","","","index_mut","","","init","","","","inner_index","into","","","","is_empty","","iter","","iter_enum","last","","layout","len","","","lock","","max_degree","maybe_par_extend","","maybe_par_iter_enum","min_degree","","new","","ooo","ooo_elements","","page","page_raw","ptr","push","","push_checked","","push_ooo","","range","to_owned","","","try_from","","","","try_into","","","","type_id","","",""],"q":[[0,"once"],[128,"core::clone"],[129,"core::cmp"],[130,"core::ops::function"],[131,"core::fmt"],[132,"bivec"],[133,"alloc::vec"],[134,"core::option"],[135,"core::iter::traits::iterator"],[136,"core::alloc::layout"],[137,"std::sync::mutex"],[138,"core::marker"],[139,"maybe_rayon::concurrent::prelude"],[140,"core::ops::range"],[141,"core::result"],[142,"core::any"]],"i":"```````dl1110AdAf32102102102102033213210321032210220202032100202022202203210`32102020020320220020000202202232020200210321032103210","f":"```````{{{f{b{d{c}}}}h}j{}}{{{f{{l{c}}}}h}j{}}{{{f{{d{c}}}}}n{}}{{{f{{d{c}}}}hh}{{f{{A`{c}}}}}{}}{f{{f{c}}}{}}000{{{f{b}}}{{f{bc}}}{}}000{{{f{{l{c}}}}}{{l{c}}}Ab}{{{f{Ad}}}Ad}{{{f{{Af{c}}}}}{{Af{c}}}Ab}{{f{f{bc}}}j{}}00{fj}00``{{{f{b{d{c}}}}hh}j{}}{{}{{d{c}}}{}}{{}{{l{c}}}{}}{{}Ad}{h{{f{c}}}{}}000{h{{f{bc}}}{}}000{hj}{{{f{b{l{c}}}}}j{}}111{{{f{{l{c}}}}h}{}{}}{{{f{{l{c}}}}{f{{l{c}}}}}nAh}{{{f{{Af{c}}}}{f{{Af{c}}}}}nAh}{{{f{{l{c}}}}he}j{}{{Al{h}{{Aj{c}}}}}}{{{f{{Af{c}}}}Ane}j{}{{Al{An}{{Aj{c}}}}}}{{{f{{l{c}}}}{f{bB`}}}BbBd}{{{f{{Af{c}}}}{f{bB`}}}BbBd}{cc{}}000{{{Bf{c}}}{{Af{c}}}{}}{{{Bh{c}}}{{l{c}}}{}}{{An{Bh{c}}}{{Af{c}}}{}}{{{f{{l{c}}}}h}{{Bj{{f{c}}}}}{}}{{{f{{Af{c}}}}An}{{Bj{{f{c}}}}}{}}{{{f{b{l{c}}}}h}{{Bj{{f{bc}}}}}{}}{{{f{{l{c}}}}Bl}{{f{c}}}{}}{{{f{{l{c}}}}h}{{f{c}}}{}}{{{f{{Af{c}}}}An}{{f{c}}}{}}{{{f{b{l{c}}}}Bl}{{f{bc}}}{}}{{{f{b{l{c}}}}h}{{f{bc}}}{}}{{{f{b{Af{c}}}}An}{{f{bc}}}{}}{{}h}000{h{{Bn{hh}}}}{{}c{}}000{{{f{{l{c}}}}}n{}}{{{f{{Af{c}}}}}n{}}{{{f{{l{c}}}}}{{`{{Cb{}{{C`{{f{c}}}}}}}}}{}}{{{f{{Af{c}}}}}{{`{{Cb{}{{C`{{f{c}}}}}}}}}{}}{{{f{{Af{c}}}}}{{`{{Cb{}{{C`{{Bn{An{f{c}}}}}}}}}}}{}}{{{f{{l{c}}}}}{{Bj{{f{c}}}}}{}}{{{f{{Af{c}}}}}{{Bj{{f{c}}}}}{}}{hCd}{{{f{{l{c}}}}}h{}}{{{f{{Af{c}}}}}An{}}`{{{f{{l{c}}}}}{{Cf{Ad}}}{}}{{{f{{Af{c}}}}}{{Cf{Ad}}}{}}2{{{f{{l{c}}}}he}j{ChCj}{{Cl{h}{{Aj{c}}}}ChCj}}{{{f{{Af{c}}}}Ane}j{ChCj}{{Cl{An}{{Aj{c}}}}ChCj}}{{{f{{Af{c}}}}}{{`{{Cn{}{{C`{{Bn{An{f{c}}}}}}}}D`}}}{ChCj}}5`{{}{{l{c}}}{}}{An{{Af{c}}}{}}`{{{f{{l{c}}}}}{{Bh{h}}}{}}{{{f{{Af{c}}}}}{{Bh{An}}}{}}{{{f{{l{c}}}}h}{{f{{d{c}}}}}{}}{{{f{{l{c}}}}h}d{}}{{{f{{d{c}}}}}{}{}}{{{f{{l{c}}}}c}h{}}{{{f{{Af{c}}}}c}An{}}{{{f{{l{c}}}}ch}j{}}{{{f{{Af{c}}}}cAn}j{}}{{{f{{l{c}}}}ch}{{Db{h}}}{}}{{{f{{Af{c}}}}cAn}{{Db{An}}}{}}{{{f{{Af{c}}}}}{{Db{An}}}{}}{fc{}}00{c{{Dd{e}}}{}{}}000{{}{{Dd{c}}}{}}000{fDf}000","D":"Dh","p":[[0,"mut"],[5,"Page",0],[1,"reference"],[1,"usize"],[1,"unit"],[5,"OnceVec",0],[1,"bool"],[1,"slice"],[10,"Clone",128],[5,"OooTracker",0],[5,"OnceBiVec",0],[10,"PartialEq",129],[17,"Output"],[10,"FnMut",130],[1,"i32"],[5,"Formatter",131],[8,"Result",131],[10,"Debug",131],[5,"BiVec",132],[5,"Vec",133],[6,"Option",134],[1,"u32"],[1,"tuple"],[17,"Item"],[10,"Iterator",135],[5,"Layout",136],[5,"MutexGuard",137],[10,"Send",138],[10,"Sync",138],[10,"Fn",130],[10,"MaybeParallelIterator",139],[10,"MaybeIndexedParallelIterator",139],[5,"Range",140],[6,"Result",141],[5,"TypeId",142]],"r":[],"b":[[64,"impl-Index%3Cu32%3E-for-OnceVec%3CT%3E"],[65,"impl-Index%3Cusize%3E-for-OnceVec%3CT%3E"],[67,"impl-IndexMut%3Cu32%3E-for-OnceVec%3CT%3E"],[68,"impl-IndexMut%3Cusize%3E-for-OnceVec%3CT%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAFwAFAAAAAEAAwAAAAYAAgAKAAAADAASACAADwAxAAEANQABADsAAAA9AAEAQAALAFAAAQBTAAMAWgAAAGAABABnAAAAagAAAGwAAABuAAAAcQAPAA=="}],["query",{"t":"SHHHHH","n":["ARGV","optional","raw","vector","with_default","yes_no"],"q":[[0,"query"],[6,"core::option"],[7,"core::fmt"],[8,"core::result"],[9,"core::ops::function"],[10,"alloc::vec"]],"i":"``````","f":"`{{{d{b}}g}{{f{c}}}{}h{{n{{d{b}}}{{j{{l{ce}}}}}}}}{{{d{b}}g}c{}h{{n{{d{b}}}{{j{{l{ce}}}}}}}}{{{d{b}}A`}{{Ad{Ab}}}}{{{d{b}}{d{b}}g}c{}h{{n{{d{b}}}{{j{{l{ce}}}}}}}}{{{d{b}}}Af}","D":"b","p":[[1,"str"],[1,"reference"],[6,"Option",6],[10,"Display",7],[17,"Output"],[6,"Result",8],[10,"FnMut",9],[1,"usize"],[1,"u32"],[5,"Vec",10],[1,"bool"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAUAAQABAAUA"}],["resolution_size",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["resolve",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["resolve_through_stem",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["resolve_unstable",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["save_bruner",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["secondary",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["secondary_massey",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["secondary_product",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["sq0",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["sseq",{"t":"FFFTFFKCOCCMOOOOOOOOOOOOMOMOCOOOFNNNNNNONNNNNNNNNONNNNNNNEEEECCCHCFNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNONNNNNNNNNFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONFNNNNNNNONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNFONNNNNNNNNNNNNNONONNNNNFNNNNNNONONNNNNONNNNNOONNNNFTFFKNNNNNNNNNONNNNNNNNNMNNONNNNNNNNNNNNNNNNNNOONONNNNNNONONOMNOMNNNNNNNNNNNNNNNNNNOO","n":["Adams","DenseBigradedModule","Differential","MIN_R","Product","Sseq","SseqProfile","bigraded","classes","coordinates","differential","differential_length","differentials","dimensions","error","first_empty_row","invalid","left","matrices","matrix","min_y","p","page_data","permanent_classes","profile","","profile_inverse","source_dim","sseq","target_dim","x","y","DenseBigradedModule","borrow","borrow_mut","defined","deref","deref_mut","dimension","dimensions","drop","from","get_dimension","init","into","max_x","max_y","min_x","min_y","","new","range","set_dimension","try_from","try_into","type_id","vzip","Bidegree","BidegreeElement","BidegreeGenerator","BidegreeRange","bidegree","element","generator","iter_s_t","range","Bidegree","add","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","deref","deref_mut","deserialize","drop","eq","equivalent","","","","fmt","","from","hash","init","into","massey_bidegree","n","n_s","s","","s_t","serialize","sub","t","","t_s","to_owned","to_string","try_from","try_into","try_subtract","type_id","vzip","zero","BidegreeElement","borrow","borrow_mut","clone","clone_into","clone_to_uninit","degree","","deref","deref_mut","deserialize","drop","eq","equivalent","","","","fmt","","from","hash","init","into","into_vec","n","new","s","serialize","t","to_basis_string","to_owned","to_string","to_string_module","try_from","try_into","type_id","vec","","vzip","BidegreeGenerator","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","degree","","deref","deref_mut","deserialize","drop","eq","equivalent","","","","fmt","","from","","hash","idx","","init","into","into_element","n","n_s","new","s","s_t","serialize","t","to_owned","to_string","try_from","","try_into","type_id","vzip","BidegreeRange","aux","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","deref_mut","drop","from","init","into","new","restrict","s","","t","","to_owned","try_from","try_into","type_id","vzip","Differential","add","borrow","borrow_mut","deref","deref_mut","drop","error","evaluate","first_empty_row","from","get_source_target_pairs","inconsistent","init","into","matrix","new","prime","quasi_inverse","reduce_target","set_to_zero","source_dim","target_dim","try_from","try_into","type_id","vzip","Adams","MIN_R","Product","Sseq","SseqProfile","add_differential","add_permanent_class","borrow","","","borrow_mut","","","classes","","clear","complete","defined","deref","","","deref_mut","","","differential_length","","differentials","","differentials_hitting","dimension","drop","","","extend_differential","extend_page_data","from","","","inconsistent","init","","","into","","","invalid","","left","leibniz","matrices","max_x","max_y","min_x","min_y","multiply","new","p","page_data","","permanent_classes","","profile","","","profile_inverse","","range","set_dimension","try_from","","","try_into","","","type_id","","","update","update_bidegree","vzip","","","write_to_graph","x","y"],"q":[[0,"sseq"],[32,"sseq::bigraded"],[57,"sseq::coordinates"],[66,"sseq::coordinates::bidegree"],[108,"sseq::coordinates::element"],[147,"sseq::coordinates::generator"],[189,"sseq::coordinates::range"],[213,"sseq::differential"],[240,"sseq::sseq"],[325,"core::option"],[326,"core::ops::range"],[327,"core::result"],[328,"core::any"],[329,"core::ops::function"],[330,"core::marker"],[331,"serde::de"],[332,"core::fmt"],[333,"core::hash"],[334,"serde::ser"],[335,"alloc::string"],[336,"fp::vector::fp_wrapper"],[337,"algebra::module::free_module"],[338,"algebra::algebra::algebra_trait"],[339,"fp::prime::primes_generic"],[340,"core::convert"],[341,"alloc::vec"],[342,"fp::matrix::subspace"],[343,"alloc::sync"],[344,"bivec"],[345,"core::iter::traits::iterator"],[346,"fp::matrix::subquotient"],[347,"chart"],[348,"core::clone"]],"i":"```Dl````Dj``10jDb02Ef0123334341`100`222222222222222222222222``````````Aj0000000000000000000000000000000000000000`Cb0000000000000000000000000000000000000`Cl0000000000000000000000000000000000000000`Al0000000000000000000000`55555555555555555555555555`8```77F`58058888880580589088880588805880580588858588888888888908908805805805888058855","f":"```````````{{bb}b}````````````{{bbb}{{d{bb}}}}`0``````{f{{f{c}}}{}}{{{f{h}}}{{f{hc}}}{}}{{{f{j}}bb}l}{n{{f{c}}}{}}{n{{f{hc}}}{}}{{{f{j}}bb}n}`{nA`}{cc{}}{{{f{j}}bb}{{Ab{n}}}}{{}n}{{}c{}}{{{f{j}}}b}000`{{bb}j}{{{f{j}}b}{{Ad{b}}}}{{{f{j}}bbn}A`}{c{{Af{e}}}{}{}}{{}{{Af{c}}}{}}{fAh}7```````{{{f{c}}Aj{Al{e}}}A`{{B`{Aj}{{An{{Ad{b}}}}}}Bb}Bb}``{{AjAj}Aj}{f{{f{c}}}{}}{{{f{h}}}{{f{hc}}}{}}{{{f{Aj}}}Aj}{{f{f{hc}}}A`{}}{fA`}{{}Aj}{n{{f{c}}}{}}{n{{f{hc}}}{}}{c{{Af{Aj}}}Bd}{nA`}{{{f{Aj}}{f{Aj}}}l}{{f{f{c}}}l{}}000{{{f{Aj}}{f{hBf}}}Bh}0{cc{}}{{{f{Aj}}{f{hc}}}A`Bj}{{}n}{{}c{}}{{AjAjAj}Aj}{{{f{Aj}}}b}{{bBl}Aj}{{{f{Aj}}}Bl}`{{Blb}Aj}{{{f{Aj}}c}AfBn}{{AjAj}Aj}5`4{fc{}}{fC`}{c{{Af{e}}}{}{}}{{}{{Af{c}}}{}}{{{f{Aj}}Aj}{{Ab{Aj}}}}{fAh}={{}Aj}`{f{{f{c}}}{}}{{{f{h}}}{{f{hc}}}{}}{{{f{Cb}}}Cb}{{f{f{hc}}}A`{}}{fA`}{{{f{Cb}}}Aj}`{n{{f{c}}}{}}{n{{f{hc}}}{}}{c{{Af{Cb}}}Bd}{nA`}{{{f{Cb}}{f{Cb}}}l}{{f{f{c}}}l{}}000{{{f{Cb}}{f{hBf}}}Bh}0{cc{}}{{{f{Cb}}{f{hc}}}A`Bj}{{}n}{{}c{}}{CbCd}{{{f{Cb}}}b}{{AjCd}Cb}{{{f{Cb}}}Bl}{{{f{Cb}}c}AfBn}3{{{f{Cb}}}C`}{fc{}}{fC`}{{{f{Cb}}{f{{Cf{c}}}}l}C`Ch}{c{{Af{e}}}{}{}}{{}{{Af{c}}}{}}{fAh}{{{f{Cb}}}Cj}`=`{f{{f{c}}}{}}{{{f{h}}}{{f{hc}}}{}}{{{f{Cl}}}Cl}{{f{f{hc}}}A`{}}{fA`}{{}Cl}{{{f{Cl}}}Aj}`{n{{f{c}}}{}}{n{{f{hc}}}{}}{c{{Af{Cl}}}Bd}{nA`}{{{f{Cl}}{f{Cl}}}l}{{f{f{c}}}l{}}000{{{f{Cl}}{f{hBf}}}Bh}0{cc{}}{{{d{Ajn}}}Cl}{{{f{Cl}}{f{hc}}}A`Bj}{{{f{Cl}}}n}`{{}n}{{}c{}}{{ClCnn}Cb}{{{f{Cl}}}b}{{bBln}Cl}{{cn}Cl{{D`{Aj}}}}{{{f{Cl}}}Bl}{{Blbn}Cl}{{{f{Cl}}c}AfBn}5{fc{}}{fC`}{Cb{{Af{Clc}}}{}}{c{{Af{e}}}{}{}}{{}{{Af{c}}}{}}{fAh}=``{f{{f{c}}}{}}{{{f{h}}}{{f{hc}}}{}}{{{f{{Al{c}}}}}{{Al{c}}}{}}{{f{f{hc}}}A`{}}{fA`}{n{{f{c}}}{}}{n{{f{hc}}}{}}{nA`}{cc{}}{{}n}{{}c{}}{{{f{c}}Bl{f{B`}}}{{Al{c}}}{}}{{{Al{c}}Bl}{{Al{c}}}{}}{{{f{{Al{c}}}}}Bl{}}`{{{f{{Al{c}}}}Bl}b{}}`{fc{}}{c{{Af{e}}}{}{}}{{}{{Af{c}}}{}}{fAh}8`{{{f{hDb}}Cj{Ab{Cj}}}l}{f{{f{c}}}{}}{{{f{h}}}{{f{hc}}}{}}{n{{f{c}}}{}}{n{{f{hc}}}{}}{nA`}`{{{f{Db}}CjDd}A`}`{cc{}}{{{f{Db}}}{{Df{{d{CdCd}}}}}}{{{f{Db}}}l}{{}n}{{}c{}}`{{Cnnn}Db}{{{f{Db}}}Cn}{{{f{Db}}DdCj}A`}{{{f{hDb}}{f{Dh}}}A`}{{{f{hDb}}}A`}``{c{{Af{e}}}{}{}}{{}{{Af{c}}}{}}{fAh}8`````{{{f{h{Dj{c}}}}bbbCjCj}lDl}{{{f{h{Dj{c}}}}bbCj}lDl}{f{{f{c}}}{}}00{{{f{h}}}{{f{hc}}}{}}00{{{f{{Dj{c}}}}}{{Dn{j}}}Dl}`{{{f{h{Dj{c}}}}}A`Dl}{{{f{{Dj{c}}}}bb}lDl}0{n{{f{c}}}{}}00{n{{f{hc}}}{}}00{{bb}b}0{{{f{{Dj{c}}}}bb}{{f{{E`{Db}}}}}Dl}`{{{f{{Dj{c}}}}bb}{{`{{Ed{}{{Eb{{d{b{f{Db}}}}}}}}}}}Dl}{{{f{{Dj{c}}}}bb}nDl}{nA`}00{{{f{h{Dj{c}}}}bbb}A`Dl}0{cc{}}009{{}n}00{{}c{}}00;``{{{f{h{Dj{c}}}}bbbCj{f{Ef}}{Ab{{f{Ef}}}}}{{Ab{{d{bbbCd}}}}}Dl}`{{{f{{Dj{c}}}}}bDl}000{{{f{{Dj{c}}}}bbCj{f{Ef}}}{{Ab{{d{bbCd}}}}}Dl}{{Cnbb}{{Dj{c}}}Dl}`{{{f{{Dj{c}}}}bb}{{f{{E`{Eh}}}}}Dl}`{{{f{{Dj{c}}}}bb}{{f{Dh}}}Dl}`{{bbb}{{d{bb}}}}0`00{{{f{{Dj{c}}}}b}{{Ad{b}}}Dl}{{{f{h{Dj{c}}}}bbn}A`Dl}{c{{Af{e}}}{}{}}00{{}{{Af{c}}}{}}00{fAh}00{{{f{h{Dj{c}}}}}A`Dl}{{{f{h{Dj{c}}}}bb}{{E`{{Df{{Df{Bl}}}}}}}Dl}>>>{{{f{{Dj{c}}}}eblgi}{{Af{A`}}}DlEj{{Ed{}{{Eb{{f{{d{C`Ef}}}}}}}}El}{{En{{f{he}}}{{An{{Af{A`}}}}}}}}``","D":"Hh","p":[[1,"i32"],[1,"tuple"],[1,"reference"],[0,"mut"],[5,"DenseBigradedModule",32],[1,"bool"],[1,"usize"],[1,"unit"],[6,"Option",325],[5,"Range",326],[6,"Result",327],[5,"TypeId",328],[5,"Bidegree",66],[5,"BidegreeRange",189],[17,"Output"],[10,"Fn",329],[10,"Sync",330],[10,"Deserializer",331],[5,"Formatter",332],[8,"Result",332],[10,"Hasher",333],[1,"u32"],[10,"Serializer",334],[5,"String",335],[5,"BidegreeElement",108],[6,"FpVector",336],[5,"MuFreeModule",337],[10,"MuAlgebra",338],[6,"FpSlice",336],[5,"BidegreeGenerator",147],[5,"ValidPrime",339],[10,"Into",340],[5,"Differential",213],[6,"FpSliceMut",336],[5,"Vec",341],[5,"Subspace",342],[5,"Sseq",240],[10,"SseqProfile",240],[5,"Arc",343],[5,"BiVec",344],[17,"Item"],[10,"Iterator",345],[5,"Product",240],[5,"Subquotient",346],[10,"Backend",347],[10,"Clone",348],[10,"FnOnce",329],[5,"Adams",240]],"r":[[0,240],[1,32],[2,213],[4,240],[5,240],[6,240],[57,66],[58,108],[59,147],[60,189]],"b":[[83,"impl-Debug-for-Bidegree"],[84,"impl-Display-for-Bidegree"],[125,"impl-Display-for-BidegreeElement"],[126,"impl-Debug-for-BidegreeElement"],[165,"impl-Display-for-BidegreeGenerator"],[166,"impl-Debug-for-BidegreeGenerator"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAEBMgAAAAYACAAAAAoAAgAOAAIAEwADABkAEAAsAAAALgAGADYACgBCAAAARAARAFcAAQBbAAIAXwADAGQABABqAAIAbgAFAHUACgCBAAEAhAAFAIsAAQCOAAMAkwAAAJUABgCdAAoAqQACAK0AAACvAA4AwAAHAMkAAADLAAIAzwAAANEABQDYAAUA3wAAAOMAAADlAAIA6gAKAPgABgAAAQAAAgEJAA0BBAAYAQIAHgEAACIBBAAoAQIALAEAAC4BEABAAQIARAEBAA=="}],["steenrod",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["tensor",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["unstable_chart",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["unstable_suspension",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["yoneda",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}]]')); +var searchIndex = new Map(JSON.parse('[["algebra",{"t":"PFPKKGKPPFKPFPKKKFFGGKKCMCMOOMMOOCMMMMMOMMMQOOOOMMCMMMOOOCMCHOOOMMMMMMOOCOMMOMMOOMMMCCOOOFKFPPGMOOOOOOOOOOOOEEEEEEEEEEEEEEEEECCCCCCCCCFKFPPGNMNNNNONONONNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNONONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNONNNNNNNNNNNNNOONNNONHNNNNNNNNNNNNNNNONNNKKKKMMMMNNMMMNNMNNMNNNNMNNMMMNNMNNNNMNNNNMKMMSFSFSNHNNNNNNNNNNNNNONNOHNNONNNNNNNNNOONOOOONHNNNNNNNNHFNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNSOFFKFIFIFIFNONNNONONNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNONNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNOONNNNNNNNNNNONMNONNNNNNNNNNNNNNNNNNNNNNNOOOOONNONNNNONOOHONONNNNNNONNNNNNNNNNNNNNNNNNNNONNNNNNNNNNSRIFKMHHNNONNNMMMNNNNNMOMNNMQNNONQNOKFFMNNNNNNNNNMNONNNNNNNNNNNOMMNNNNMNNNNNONNNNNNNNNNONNNNNNNNNNOMMMMMNNNNNNNNNNONNPPFGPPPPGGKNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNONNMNNNNNNNNNNNNNNNNNNNNNNNSFFHOOHOOOOOOOHHFOOFKFFIFIFOOOOOOOOOOOOMOOOOOOOOOOOOOORFFIFFKFFFFFEFFIKMOMOOOOOOOOOMOCOOOMOCCCOOOOOOOOOOOOOOOCCOOOOOMOMOOOOOCOOOOOOOOOOCOOOCOOOCOCOCOOCMFFNOOONNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNFNNNONNNONNNNNNNNNNNNNNNNNNNNNNNOONNNNNONNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNONNNNONOONNNNONNNOONONNNNNNNNNNIFFFFINNNNOOOOOONNNNNNNNNNNNNONNNNNNNNNNNNNONNNNNNNOOOOONOOOOONOOONNNNNNNNNNNNNNNNNOOOOOOONNOOONOONONONNNNNNNNNNNNNNNNNNNFNNONONNNNNNNNNNNNNNNONONNNNNIFFFKKFFFRRIKNNMNNMOOOOOOOCCCNNCMNOOOOONOOOOOOONOOOOOONNOOOOOCOOMOOOOOOOMOOOOOOMIFINNNNNNNNNNNOOONNNNNNNNOOONNNOOONOOONNNNOOONOOONNNNOOONOOONNNNNFNNNNNNNNONNNNNNNNONNNOONNONNNONONNNNNNFNNNNONNNNNNNNONONNNNNFNNNNNNNNNNONNNOONNNONONONNNNFFNNNNNNNNNNNNNNOONNNNNNNNOONNONNNNNNNNNNRKFNNNNNNMMMNNNNNNMNNNNNNNNNNMNNNNMNNONNNNNNONFNNNNONNNNNNNNNNNNNNONNNNNNNONONNNNNFFNNONNNNNOOHHNNNNNNNNNNNNNNNNNNNNNNOONNOONNNNNNNNNNNNNIHCNHFNNNNNNNNNNNNNNNNNONNNNNNNNONNNNNNNFNNNNNONNNNNNNNNNNONNNNNONNNNNNNKMRFKMOMMMMOMMOOFONNNNNNNNNNNNNNNNNNNONNNNNNNNNNPGGPPGPIIPPPPPPPPHHHHNNNNNNHNNNNNNNNNHNNNNNNHNNNNNNHNNNNNNNNNHHHHHHHHNNNNNNNNNNNNNNNN","n":["Adem","AdemAlgebra","","AdemAlgebraT","Algebra","AlgebraType","Bialgebra","BorrowAdem","BorrowMilnor","Field","GeneratedAlgebra","Milnor","MilnorAlgebra","","MilnorAlgebraT","MuAlgebra","PolynomialAlgebra","PolynomialAlgebraMonomial","PolynomialAlgebraTableEntry","SteenrodAlgebra","SteenrodAlgebraBorrow","SteenrodAlgebraT","UnstableAlgebra","adem_algebra","","algebra","basis_element_from_string","basis_element_to_index_map","","basis_element_to_string","basis_table","","","combinatorics","compute_basis","compute_generating_set","coproduct","decompose","decompose_basis_element","degree","dimension","dimension_unstable","","dispatch_algebra","even_basis_table","excess_table","","ext","exterior_generators_in_degree","exterior_monomials","field","frobenius_on_generator","generating_relations","generators","generic","","index_to_monomial","milnor_algebra","","module","module_gens_from_json","monomial_to_index","multiplication_table","","multiply_basis_element_by_element_unstable","multiply_basis_elements","multiply_basis_elements_unstable","","multiply_element_by_basis_element_unstable","multiply_element_by_element_unstable","p","","pair_algebra","poly","polynomial_generators_in_degree","polynomial_monomials","ppart_table","prime","","","profile","repr_ext_generator","repr_poly_generator","steenrod_algebra","steenrod_evaluator","steenrod_parser","unstable_enabled","","valid","AdemAlgebra","AdemAlgebraT","AdemBasisElement","Bockstein","P","PorBockstein","adem_algebra","basis_element_to_index_map","basis_table","bocksteins","degree","even_basis_table","excess_table","generic","multiplication_table","p","p_or_sq","ps","unstable_enabled","AdemAlgebra","AdemAlgebraT","Algebra","AlgebraType","Bialgebra","Field","GeneratedAlgebra","MilnorAlgebra","MilnorAlgebraT","MuAlgebra","PolynomialAlgebra","PolynomialAlgebraMonomial","PolynomialAlgebraTableEntry","SteenrodAlgebra","SteenrodAlgebraBorrow","SteenrodAlgebraT","UnstableAlgebra","adem_algebra","algebra_trait","bialgebra_trait","combinatorics","field","milnor_algebra","pair_algebra","polynomial_algebra","steenrod_algebra","AdemAlgebra","AdemAlgebraT","AdemBasisElement","Bockstein","P","PorBockstein","a_multiply","adem_algebra","","basis_element_from_index","basis_element_from_string","basis_element_to_index","basis_element_to_index_map","basis_element_to_string","basis_table","beps_pn","bocksteins","borrow","","","borrow_mut","","","clone","clone_into","clone_to_uninit","compute_basis","coproduct","decompose","decompose_basis_element","decompose_basis_element_2","decompose_basis_element_generic","default_filtration_one_products","degree","deref","","","deref_mut","","","dimension","dimension_unstable","","","drop","","","element_from_bytes","element_is_zero","element_to_bytes","eq","equivalent","","","","even_basis_table","excess","excess_table","finalize_element","fmt","","","","from","","","generate_basis2","generate_basis_element_to_index_map","generate_basis_even","generate_basis_generic","generate_excess_table","generate_multiplication_table_2","generate_multiplication_table_2_step","generate_multiplication_table_generic","generate_multiplication_table_generic_step","generating_relations","generator_to_string","generators","generic","","hash","init","","","into","","","iter_filtered","magic","make_mono_admissible","make_mono_admissible_2","make_mono_admissible_generic","multiplication_table","multiply_basis_element_by_element_unstable","","multiply_basis_elements","multiply_basis_elements_unstable","","","multiply_element_by_basis_element_unstable","","multiply_element_by_element_unstable","","multiply_inner","new","new_pair_element","p","p_or_sq","p_tilde","prefix","prime","ps","q","shift_vec","sigma_multiply_basis","tail_of_basis_element_to_index","to_owned","to_string","","try_basis_element_to_index","try_from","","","try_into","","","type_id","","","unstable_enabled","vzip","","","Algebra","GeneratedAlgebra","MuAlgebra","UnstableAlgebra","basis_element_from_string","basis_element_to_string","compute_basis","decompose_basis_element","default_filtration_one_products","","dimension","dimension_unstable","","element_to_string","","generating_relations","generator_to_string","","generators","magic","","multiply_basis_element_by_element","","multiply_basis_element_by_element_unstable","","","multiply_basis_elements","multiply_basis_elements_unstable","","multiply_element_by_basis_element","","multiply_element_by_basis_element_unstable","","","multiply_element_by_element","","multiply_element_by_element_unstable","","","prefix","","prime","Bialgebra","coproduct","decompose","MAX_XI_TAU","PartitionIterator","TAU_DEGREES","TruncatedPolynomialMonomialBasis","XI_DEGREES","add_gens_and_calculate_parts","adem_relation_coefficient","borrow","","borrow_mut","","deref","","deref_mut","","drop","","from","","gen_deg_idx_to_internal_idx","gen_degrees","generators","generators_up_to_degree","gens","inadmissible_pairs","init","","initial","internal_idx_to_gen_deg","into","","into_iter","multiunzip","","new","","next","p","partition","parts","","","parts_by_max","remaining","search","tau_degrees","try_from","","try_into","","type_id","","vzip","","xi_degrees","Field","basis_element_from_string","basis_element_to_string","borrow","borrow_mut","compute_basis","coproduct","decompose","default_filtration_one_products","deref","deref_mut","dimension","dimension_unstable","drop","element_to_string","fmt","from","init","into","multiply_basis_element_by_element_unstable","multiply_basis_elements","multiply_basis_elements_unstable","multiply_element_by_basis_element_unstable","multiply_element_by_element_unstable","new","prime","","to_string","try_from","try_into","type_id","vzip","ALLOCATION","M","Matrix2D","MilnorAlgebra","MilnorAlgebraT","MilnorBasisElement","MilnorHashMap","MilnorProfile","PPart","PPartAllocation","PPartEntry","PPartMultiplier","a_multiply","ans","basis_element_from_index","basis_element_from_string","basis_element_to_index","basis_element_to_index_map","basis_element_to_string","basis_table","beps_pn","borrow","","","","","","borrow_mut","","","","","","clone","clone_into","","clone_to_uninit","cols","","compute_basis","compute_degree","compute_ppart","coproduct","decompose","decompose_basis_element","decompose_basis_element_ppart","decompose_basis_element_qpart","default","","","","default_filtration_one_products","degree","deref","","","","","","deref_mut","","","","","","deserialize","diag_num","diagonal","","dimension","dimension_unstable","","","drop","","","","","","element_from_bytes","element_is_zero","element_to_bytes","eq","","equivalent","","","","","","","","excess","excess_table","finalize_element","fmt","","","","","","from","","","","","","from_p","generate_basis_2","generate_basis_generic","generate_excess_table","generating_relations","generator_to_string","generators","generic","","get_p_part","hash","increment_p_part","index","index_mut","init","","","","","","","inner","into","","","","","","into_allocation","into_iter","is_an","is_trivial","is_valid","m","magic","milnor_algebra","","multiplication_table","multiply","multiply_basis_by_element","multiply_basis_by_element_with_allocation","multiply_basis_element_by_element","multiply_basis_element_by_element_unstable","","multiply_basis_elements","multiply_basis_elements_unstable","","","multiply_element_by_basis_element_unstable","","multiply_element_by_element","multiply_element_by_element_unstable","","multiply_qpart","multiply_with_allocation","new","new_from_allocation","new_pair_element","new_with_profile","next","next_val","p","","p_part","","","p_tilde","ppart_table","","prefix","prime","","profile","","q","q_part","","q_part_default","r","reset","rows","serialize","sigma_multiply_basis","to_owned","to_string","","","truncated","try_basis_element_to_index","try_beps_pn","try_from","","","","","","try_into","","","","","","type_id","","","","","","unstable_enabled","update","vzip","","","","","","with_capacity","","with_local","AY_CACHE","Element","HashMap","MilnorPairElement","PairAlgebra","a_multiply","a_y_cached","a_y_inner","borrow","borrow_mut","degree","deref","deref_mut","drop","element_from_bytes","element_is_zero","element_to_bytes","finalize_element","","from","init","into","new_pair_element","ones","p_tilde","sigma_multiply","","sigma_multiply_basis","sub","try_from","try_into","twos","type_id","unsub","vzip","ys","PolynomialAlgebra","PolynomialAlgebraMonomial","PolynomialAlgebraTableEntry","basis_table","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","compute_basis_step","","compute_generating_set","default","degree","deref","","deref_mut","","drop","","eq","equivalent","","","","ext","exterior_generators_in_degree","exterior_monomials","fmt","","frobenius_monomial","","frobenius_on_generator","from","","hash","index_to_monomial","","","init","","into","","max_computed_degree","","min_degree","","monomial_to_index","","","multiply_monomial_by_polynomial","","multiply_monomials","","multiply_polynomial_by_monomial","","multiply_polynomials","","new","","poly","polynomial_generators_in_degree","polynomial_monomials","prime","repr_ext_generator","repr_poly_generator","set_monomial_degree","","to_owned","to_string","try_from","","try_into","","type_id","","valid","vzip","","Adem","AdemAlgebra","AlgebraSpec","AlgebraType","BorrowAdem","BorrowMilnor","Milnor","MilnorAlgebra","SteenrodAlgebra","SteenrodAlgebraBorrow","SteenrodAlgebraT","a_multiply","adem_algebra","algebra","basis_element_from_string","basis_element_to_string","borrow","","","","borrow_mut","","","","clone","clone_into","clone_to_uninit","compute_basis","coproduct","decompose","decompose_basis_element","default_filtration_one_products","deref","","","","deref_mut","","","","deserialize","dimension","dimension_unstable","","","dispatch_steenrod","drop","","","","element_from_bytes","element_is_zero","element_to_bytes","element_to_string","eq","equivalent","","","","finalize_element","fmt","","","","from","","","","from_json","from_str","generating_relations","generator_to_string","generators","init","","","","into","","","","magic","milnor_algebra","multiply_basis_element_by_element","multiply_basis_element_by_element_unstable","","","multiply_basis_elements","multiply_basis_elements_unstable","","","multiply_element_by_basis_element","multiply_element_by_basis_element_unstable","","","multiply_element_by_element","multiply_element_by_element_unstable","","","new_pair_element","p","p_tilde","prefix","prime","profile","sigma_multiply","sigma_multiply_basis","steenrod_algebra","","to_owned","to_string","","try_from","","","","","try_into","","","","","","type_id","","","","vzip","","","","MAX_XI_TAU","PartitionIterator","TruncatedPolynomialMonomialBasis","adem_relation_coefficient","gen_degrees","gens","inadmissible_pairs","initial","p","partition","parts","","parts_by_max","remaining","tau_degrees","xi_degrees","Field","prime","M","MilnorAlgebra","MilnorAlgebraT","MilnorBasisElement","MilnorProfile","PPart","PPartAllocation","PPartEntry","PPartMultiplier","ans","basis_element_to_index_map","basis_table","cols","degree","diag_num","diagonal","","excess_table","generic","init","m","milnor_algebra","multiplication_table","p","","p_part","","","ppart_table","profile","q_part","","r","rows","truncated","unstable_enabled","Algebra","FDModule","FPModule","FreeModule","GeneratorData","HomModule","Module","ModuleFailedRelationError","MuFreeModule","OperationGeneratorPair","QuotientModule","RealProjectiveSpace","SteenrodModule","SuspensionModule","TensorModule","UnstableFreeModule","ZeroModule","act_on_basis","actions","algebra","","","","","","","basis_element_to_opgen","","","basis_element_to_string","basis_list","block_structure","block_structures","","clear_bottom","dimension","end","finite_dimensional_module","finitely_presented_module","free_module","gen_deg","gen_deg_idx_to_internal_idx","","","gen_names","","","","generator_degree","generator_index","generator_to_index","","","generators","graded_dimension","hom_module","homomorphism","index_table","inner","left","map","max","max_computed_degree","min","min_degree","","","","","module","module_trait","name","","","","","num_gens","","","operation_degree","operation_index","quotient_module","relation","relations","right","rpn","shift","source","start","steenrod_module","subspaces","suspension_module","target","tensor_module","truncation","value","zero_module","","BlockStructure","GeneratorBasisEltPair","add_block","basis_element_to_block_idx","basis_index","blocks","borrow","","borrow_mut","","deref","","deref_mut","","drop","","fmt","","from","","generator_basis_elt_to_index","generator_degree","generator_index","generator_to_block","index_to_generator_basis_elt","init","","into","","new","total_dimension","try_from","","try_into","","type_id","","vzip","","FiniteDimensionalModule","act_on_basis","action","action_mut","actions","actions_to_json","add_generator","algebra","","allocate_actions","basis_element_to_string","borrow","borrow_mut","check_validity","clone","clone_into","clone_to_uninit","compute_basis","deref","deref_mut","dimension","drop","eq","equivalent","","","","extend_actions","fmt","from","","from_json","gen_names","graded_dimension","init","into","max_computed_degree","max_degree","min_degree","name","new","parse_action","set_action","set_basis_element_name","string_to_basis_element","test_equal","to_json","to_owned","to_string","try_from","try_into","type_id","vzip","zero_module","FPMIndexTable","FinitelyPresentedModule","act_on_basis","add_generators","add_relations","algebra","basis_element_to_string","borrow","","borrow_mut","","compute_basis","deref","","deref_mut","","dimension","drop","","eq","equivalent","","","","fmt","fp_idx_to_gen_idx","","from","","from_json","gen_idx_to_fp_idx","","generators","","index_table","init","","into","","map","max_computed_degree","max_generator_degree","min_degree","","name","new","relations","to_string","try_from","","try_into","","type_id","","vzip","","zero_module","FreeModule","GeneratorData","MuFreeModule","OffsetIterator","OperationGeneratorPair","UnstableFreeModule","act","act_on_basis","add_generators","algebra","","","","basis_element_to_opgen","","","basis_element_to_string","borrow","","","","borrow_mut","","","","clone","clone_into","clone_to_uninit","compute_basis","degree","deref","","","","deref_mut","","","","dimension","drop","","","","end","extend_by_zero","fmt","","from","","","","gen_deg","","gen_deg_idx_to_internal_idx","","","gen_names","","","","generator_degree","generator_index","generator_offset","generator_to_index","","","index_to_op_gen","init","","","","internal_generator_offset","into","","","","into_iter","iter_gen_offsets","iter_gens","iter_slices","max_computed_degree","max_generator_degree","min_degree","","","","module","name","","","new","next","num_gens","","","number_of_gens_in_degree","offset","operation_degree","operation_generator_to_index","operation_index","slice_vector","start","to_owned","to_string","try_from","","","","try_into","","","","type_id","","","","vzip","","","","zero_module","HomModule","act_on_basis","algebra","","basis_element_to_string","block_structures","borrow","borrow_mut","compute_basis","deref","deref_mut","dimension","drop","fmt","from","init","into","max_computed_degree","min_degree","new","source","","target","","to_string","try_from","try_into","type_id","vzip","FreeModuleHomomorphism","FullModuleHomomorphism","GenericZeroHomomorphism","HomPullback","IdentityHomomorphism","ModuleHomomorphism","MuFreeModuleHomomorphism","QuotientHomomorphism","QuotientHomomorphismSource","Source","Target","UnstableFreeModuleHomomorphism","ZeroHomomorphism","apply","apply_quasi_inverse","apply_to_basis_element","auxiliary_data","compute_auxiliary_data_through_degree","degree_shift","","","","","","f","","free_module_homomorphism","full_module_homomorphism","generic_zero_homomorphism","get_matrix","get_partial_matrix","hom_pullback","identity_homomorphism","image","images","","","","","kernel","kernels","","","","","map","matrices","min_degree","","","","outputs","","","prime","quasi_inverse","quasi_inverses","","","","","quotient_homomorphism","s","","source","","","","","","","t","target","","","","","","","zero_homomorphism","FreeModuleHomomorphism","MuFreeModuleHomomorphism","UnstableFreeModuleHomomorphism","add_generators_from_big_vector","add_generators_from_matrix_rows","add_generators_from_rows","add_generators_from_rows_ooo","apply_to_basis_element","apply_to_generator","borrow","borrow_mut","compute_auxiliary_data_through_degree","degree_shift","","","","","deref","deref_mut","differential_density","drop","extend_by_zero","from","hom_k","image","images","","","init","into","kernel","kernels","","","min_degree","","","","new","next_degree","ooo_outputs","output","outputs","","","quasi_inverse","quasi_inverses","","","set_image","set_kernel","set_quasi_inverse","source","","","","target","","","","try_from","try_into","type_id","vzip","zero_homomorphism","FullModuleHomomorphism","apply_to_basis_element","borrow","borrow_mut","clone","clone_into","clone_to_uninit","compute_auxiliary_data_through_degree","degree_shift","","deref","deref_mut","drop","from","","from_matrices","identity_homomorphism","image","images","init","into","kernel","kernels","matrices","new","quasi_inverse","quasi_inverses","replace_source","replace_target","source","","target","","to_owned","try_from","try_into","type_id","vzip","zero_homomorphism","GenericZeroHomomorphism","apply_to_basis_element","borrow","borrow_mut","degree_shift","","deref","deref_mut","drop","from","init","into","new","source","","target","","try_from","try_into","type_id","vzip","zero_homomorphism","HomPullback","apply_to_basis_element","borrow","borrow_mut","compute_auxiliary_data_through_degree","degree_shift","deref","deref_mut","drop","from","image","images","init","into","kernel","kernels","map","min_degree","new","quasi_inverse","quasi_inverses","source","","target","","try_from","try_into","type_id","vzip","QuotientHomomorphism","QuotientHomomorphismSource","apply_to_basis_element","","borrow","","borrow_mut","","degree_shift","","deref","","deref_mut","","drop","","f","","from","","init","","into","","new","","s","","source","","t","target","","try_from","","try_into","","type_id","","vzip","","Algebra","Module","ModuleFailedRelationError","act","","act_by_element","","act_by_element_on_basis","","act_on_basis","algebra","basis_element_to_string","borrow","borrow_mut","compute_basis","","deref","deref_mut","dimension","drop","element_to_string","","fmt","","from","init","into","is_unit","","max_computed_degree","max_degree","","max_generator_degree","","min_degree","prime","","relation","to_string","total_dimension","","try_from","try_into","type_id","value","vzip","QuotientModule","act_on_basis","act_on_original_basis","algebra","basis_element_to_string","basis_list","borrow","borrow_mut","deref","deref_mut","dimension","drop","flush","fmt","from","init","into","max_computed_degree","max_degree","min_degree","module","new","old_basis_to_new","quotient","quotient_all","quotient_basis_elements","quotient_vectors","reduce","subspaces","to_string","truncation","try_from","try_into","type_id","vzip","zero_module","RPSpec","RealProjectiveSpace","act_on_basis","algebra","","basis_element_to_string","borrow","","borrow_mut","","clear_bottom","","coef_adem","coef_milnor","deref","","deref_mut","","deserialize","dimension","drop","","eq","equivalent","","","","fmt","","from","","from_json","init","","into","","max","","max_computed_degree","max_degree","min","","min_degree","new","to_json","to_string","try_from","","try_into","","type_id","","vzip","","zero_module","SteenrodModule","from_json","json","zero_module","from_json","SuspensionModule","act","act_by_element","act_by_element_on_basis","act_on_basis","algebra","basis_element_to_string","borrow","borrow_mut","compute_basis","deref","deref_mut","dimension","drop","element_to_string","fmt","from","init","inner","into","is_unit","max_computed_degree","max_degree","max_generator_degree","min_degree","new","prime","shift","to_string","total_dimension","try_from","try_into","type_id","vzip","zero_module","TensorModule","act","act_helper","act_on_basis","algebra","basis_element_to_string","block_structures","borrow","borrow_mut","compute_basis","deref","deref_mut","dimension","drop","fmt","from","init","into","left","max_computed_degree","max_degree","min_degree","new","offset","right","seek_module_num","to_string","try_from","try_into","type_id","vzip","zero_module","ZeroModule","zero_module","Element","MilnorPairElement","PairAlgebra","a_multiply","degree","element_from_bytes","element_is_zero","element_to_bytes","new_pair_element","ones","p_tilde","sigma_multiply_basis","twos","ys","SteenrodEvaluator","adem","adem_q","adem_to_milnor","adem_to_milnor_on_basis","borrow","borrow_mut","compute_basis","deref","deref_mut","dimension","drop","evaluate_algebra_adem","evaluate_algebra_milnor","evaluate_algebra_node","evaluate_basis_element","evaluate_module_adem","evaluate_p_or_b_list","from","init","into","milnor","milnor_to_adem","milnor_to_adem_on_basis","milnor_to_adem_on_basis_2","milnor_to_adem_on_basis_generic","new","prime","try_from","try_into","type_id","vzip","AList","AlgebraBasisElt","AlgebraNode","BasisElt","Bockstein","BocksteinOrSq","Err","IResult","ModuleNode","Ok","P","PList","Product","Q","Scalar","Sq","Sum","algebra_expr","algebra_factor","algebra_generator","algebra_term","borrow","","","borrow_mut","","","brackets","clone","","","clone_into","","","clone_to_uninit","","","convert_error","deref","","","deref_mut","","","digits","drop","","","fmt","","","fold_separated","from","","","init","","","into","","","module_expr","module_generator","module_term","p_or_sq","parse_algebra","parse_module","scalar","space","to_adem_basis_elt","to_owned","","","try_from","","","try_into","","","type_id","","","vzip","",""],"q":[[0,"algebra"],[89,"algebra::adem_algebra"],[108,"algebra::algebra"],[134,"algebra::algebra::adem_algebra"],[267,"algebra::algebra::algebra_trait"],[309,"algebra::algebra::bialgebra_trait"],[312,"algebra::algebra::combinatorics"],[367,"algebra::algebra::field"],[399,"algebra::algebra::milnor_algebra"],[625,"algebra::algebra::pair_algebra"],[661,"algebra::algebra::polynomial_algebra"],[742,"algebra::algebra::steenrod_algebra"],[873,"algebra::combinatorics"],[889,"algebra::field"],[891,"algebra::milnor_algebra"],[927,"algebra::module"],[1025,"algebra::module::block_structure"],[1064,"algebra::module::finite_dimensional_module"],[1118,"algebra::module::finitely_presented_module"],[1175,"algebra::module::free_module"],[1296,"algebra::module::hom_module"],[1325,"algebra::module::homomorphism"],[1405,"algebra::module::homomorphism::free_module_homomorphism"],[1470,"algebra::module::homomorphism::full_module_homomorphism"],[1509,"algebra::module::homomorphism::generic_zero_homomorphism"],[1531,"algebra::module::homomorphism::hom_pullback"],[1560,"algebra::module::homomorphism::quotient_homomorphism"],[1601,"algebra::module::module_trait"],[1647,"algebra::module::quotient_module"],[1683,"algebra::module::rpn"],[1738,"algebra::module::steenrod_module"],[1742,"algebra::module::steenrod_module::json"],[1743,"algebra::module::suspension_module"],[1778,"algebra::module::tensor_module"],[1810,"algebra::module::zero_module"],[1812,"algebra::pair_algebra"],[1826,"algebra::steenrod_evaluator"],[1858,"algebra::steenrod_parser"],[1943,"core::option"],[1944,"alloc::string"],[1945,"once"],[1946,"alloc::vec"],[1947,"serde_json::value"],[1948,"bivec"],[1949,"anyhow"],[1950,"core::ops::function"],[1951,"fp::vector::fp_wrapper"],[1952,"fp::prime::primes_generic"],[1953,"std::io::error"],[1954,"std::io"],[1955,"core::fmt"],[1956,"core::hash"],[1957,"core::iter::traits::iterator"],[1958,"core::result"],[1959,"core::any"],[1960,"serde::de"],[1961,"serde::ser"],[1962,"core::marker"],[1963,"alloc::sync"],[1964,"core::ops::range"],[1965,"fp::matrix::subspace"],[1966,"fp::matrix::quasi_inverse"],[1967,"fp::matrix::matrix_inner"],[1968,"alloc::collections::btree::map"],[1969,"nom::error"],[1970,"nom::internal"],[1971,"core::str::traits"],[1972,"core::clone"]],"i":"Hj`Hh````Db0``2`1``````````b`hfBn2Af21`30An0BbHf6BfBh`776255`53376Ah`Bl``1982:322298`4778:7Fh988D```;:6```Ed0`><>>9>>>76>>9999>>>>677>76>>677>>677>>>`::`````Bj`0Ff101010101011111`10011000010010110100`10101010``5555555555555555555555555555555`Gh``````````?0????????0FnFjG`GbBn543213333520300000043210305432105432145510000054321000434444333330004332205432130000000043022054321520543215544410<00000000000000000000500550543100000500043`52540303240005432105432105432105054321211`H````0``On0000011111000101111`0000`00```AfHfAh101112220110101011111122112221012201010222222022222222101222222211101010110HjHh``Db021```11Hl2212301230333222221230123002222`1230222233333223301230232221230123022222222222222222220222022D`34342344123334123412341````Bj0`Ff101010```FhGh````````0>>0Fj11GbBn031Bl114Fn4322045502I`````````````````0Il10JbA@`JdMhK`4326Md`1N`38Jl```07658765Jf0876J`:``0Mn417<7<1:985`;1:98:9822`In25`174`6`7`60`Id``If0Ih1010101010101011001101011101010101`?????????????????????????????????????????????????????``55555A@b6066060660666666660066606660606666666666060606066``````====?>=?>===8Jn8>908888>0>908>908>>9089>>8>90890JbA@`Jd0210;;021000<3;00<3;300000021032100321003;0;0<;00<3;0<3;0<3;0<3;0`????????????????????????????`````````Kf0``000000LnA@dLdLhLjM`Mb```77`L`87654Ll9876500598768769987650`32987654039876540Lb```77777777777987777777779877779877987777798779877777987798777777`66666666666666666666666666666666666666`555555555555555555555`1111111111111111111111111111``434343434343434343434343434344343434343I```000000000In011001011000001111111111001100000`Md0000000000000000000000000000000000``Mh0000Mj1010``10100110111111010110101011101111101010101```Ml``Mn000000000000000000000000000000000`N`000000000000000000000000000000`IdH```0On111101100`Nb000000000000000000000000000000Nf``NdNj`A@f``03323212````321321`321321321`321321`321321`321321321````````1321321321321321","f":"````````````````````````{{{d{b}}}{{d{f}}}}`{{{d{h}}{d{j}}}{{Ab{{A`{ln}}}}}}``{{{d{h}}ln}Ad}{{{d{Af}}}{{d{{Aj{Ah}}}}}}```{{{d{h}}l}Al}{{{d{Af}}l}Al}{{{d{An}}ln}{{B`{{A`{lnln}}}}}}{{{d{An}}ln}{{B`{{A`{ln}}}}}}{{{d{Bb}}ln}{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}`{{{d{h}}l}n}{{{d{Bf}}ll}n}{{{d{Bh}}ll}n}`````{{{d{Af}}l}n}{{{d{Af}}}{{d{Bj}}}}`{{{d{Af}}ln}{{Ab{n}}}}{{{d{Bb}}l}{{B`{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}}}{{{d{Bb}}l}{{B`{n}}}}````{{{d{Bl}}}{{d{Bn}}}}`{{{d{C`}}}{{A`{{Cb{n}}{Cb{{B`{Ad}}}}{`{{Ch{{d{j}}}{{Cd{{Cf{{A`{ln}}}}}}}}}}}}}}```{{{d{Bh}}CjBdlnlCll}Al}{{{d{h}}CjBdlnln}Al}{{{d{Bf}}CjBdlnlnl}Al}{{{d{Bh}}CjBdlnlnl}Al}{{{d{Bh}}CjBdlCllnl}Al}{{{d{Bh}}CjBdlCllCll}Al}````<;`{{{d{h}}}Cn}{{{d{Af}}}Cn}``{{{d{Af}}ln}Ad}{{{d{Af}}ln}{{A`{AdBd}}}}{{{d{D`}}}Db}```````````{{{d{b}}}{{d{f}}}}````````````````````````````````````````````{{{d{f}}CjBdlCll{d{c}}}Al{}}1{{{d{f}}}{{d{f}}}}{{{d{f}}ln}{{d{Dd}}}}{{{d{f}}{d{j}}}{{Ab{{A`{ln}}}}}}{{{d{f}}{d{Dd}}}n}`{{{d{f}}ln}Ad}`{{{d{f}}BdBd}{{A`{ln}}}}`{d{{d{c}}}{}}00{{{d{Df}}}{{d{Dfc}}}{}}00{{{d{Dd}}}Dd}{{d{d{Dfc}}}Al{}}{dAl}{{{d{f}}l}Al}{{{d{f}}ln}{{B`{{A`{lnln}}}}}}{{{d{f}}ln}{{B`{{A`{ln}}}}}}{{{d{f}}ln}{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}00{{{d{f}}}{{B`{{A`{Adln}}}}}}`{n{{d{c}}}{}}00{n{{d{Dfc}}}{}}00{{{d{f}}l}n}{{dll}n}{{{d{f}}ll}n}1{nAl}00{{{d{f}}l{d{Dfc}}}{{Dh{e}}}Dj{}}{{{d{c}}}Dl{}}{{{d{f}}{d{c}}{d{Dfe}}}{{Dh{Al}}}{}Dn}{{{d{Dd}}{d{Dd}}}Dl}{{d{d{c}}}Dl{}}000`{{{d{Dd}}Cn}Bd}`{{{d{Dfc}}}Al{}}{{{d{f}}{d{DfE`}}}Eb}{{{d{Dd}}{d{DfE`}}}Eb}0{{{d{Ed}}{d{DfE`}}}Eb}{cc{}}00{{{d{f}}l}Al}00000{{{d{f}}{d{{Eh{{B`{Ef}}}}}}lln}Ef}10{{{d{f}}l}{{B`{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}}}{{{d{f}}ln}Ad}{{{d{f}}l}{{B`{n}}}}{{{d{f}}}Dl}`{{{d{Dd}}{d{Dfc}}}AlEj}{{}n}00{{}c{}}00{{{d{Dd}}}{{`{{En{}{{El{Ed}}}}}}}}{{{d{f}}}Bd}{{{d{f}}CjBd{d{DfDd}}l}Al}{{{d{f}}Cj{d{DfDd}}lllDl}Al}{{{d{f}}CjBd{d{DfDd}}lllDl}Al}`{{dCjBdlnlCll}Al}0{{{d{f}}CjBdlnln}Al}{{dCjBdlnlnl}Al}0{{{d{f}}CjBdlnlnl}Al}{{dCjBdlCllnl}Al}0{{dCjBdlCllCll}Al}02{{CnDl}f}{{{d{f}}l}c{}}``{{{d{f}}}n}{{{d{f}}}{{d{j}}}}{{{d{f}}}Cn}`{{{d{f}}}l}{{{d{Df{B`{c}}}}F`}Al{}}{{{d{f}}{d{Dfc}}Bdlnln}Al{}}{{{d{f}}{d{DfDd}}BdBd}n}{dc{}}{dAd}0{{{d{f}}{d{Dd}}}{{Ab{n}}}}{c{{Fb{e}}}{}{}}00{{}{{Fb{c}}}{}}00{dFd}00`{{}c{}}00````{{{d{h}}{d{j}}}{{Ab{{A`{ln}}}}}}{{{d{h}}ln}Ad}{{{d{h}}l}Al}{{{d{Bb}}ln}{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}{{{d{h}}}{{B`{{A`{Adln}}}}}}0{{{d{h}}l}n}{{{d{Bf}}ll}n}{{{d{Bh}}ll}n}{{{d{h}}lCl}Ad}0{{{d{Bb}}l}{{B`{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}}}{{{d{Bb}}ln}Ad}0{{{d{Bb}}l}{{B`{n}}}}{{{d{h}}}Bd}0{{{d{h}}CjBdlnlCl}Al}0{{{d{Bh}}CjBdlnlCll}Al}{{{d{Bf}}CjBdlnlCll}Al}0{{{d{h}}CjBdlnln}Al}{{{d{Bf}}CjBdlnlnl}Al}{{{d{Bh}}CjBdlnlnl}Al}{{{d{h}}CjBdlClln}Al}0{{{d{Bh}}CjBdlCllnl}Al}{{{d{Bf}}CjBdlCllnl}Al}0{{{d{h}}CjBdlCllCl}Al}0{{{d{Bh}}CjBdlCllCll}Al}{{{d{Bf}}CjBdlCllCll}Al}0{{{d{h}}}{{d{j}}}}0{{{d{h}}}Cn}`{{{d{An}}ln}{{B`{{A`{lnln}}}}}}{{{d{An}}ln}{{B`{{A`{ln}}}}}}`````{{{d{Bj}}ln}Al}{{CnBdBdBdBdBd}Bd}{d{{d{c}}}{}}0{{{d{Df}}}{{d{Dfc}}}{}}0{n{{d{c}}}{}}0{n{{d{Dfc}}}{}}0{nAl}0{cc{}}0{{{d{Bj}}ln}n}`{{{d{Bj}}l}n}0`{{CnDll}{{B`{{A`{BdBdBd}}}}}}{{}n}0`{{{d{Bj}}n}{{A`{ln}}}}{{}c{}}00{{}{{A`{ce}}}{}{}}0{CnBj}{{lBd{d{{Eh{l}}}}}Ff}{{{d{DfFf}}}{{Ab{c}}}{}}``{{{d{Bj}}l}{{d{{B`{Ef}}}}}}````{{{d{DfFf}}}Dl}{Cn{{d{{Eh{l}}}}}}{c{{Fb{e}}}{}{}}0{{}{{Fb{c}}}{}}0{dFd}0::3`{{{d{Fh}}{d{j}}}{{Ab{{A`{ln}}}}}}{{{d{Fh}}ln}Ad}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{Fh}}l}Al}{{{d{Fh}}ln}{{B`{{A`{lnln}}}}}}{{{d{Fh}}ln}{{B`{{A`{ln}}}}}}{{{d{Fh}}}{{B`{{A`{Adln}}}}}}{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{Fh}}l}n}{{dll}n}{nAl}{{{d{Fh}}lCl}Ad}{{{d{Fh}}{d{DfE`}}}Eb}{cc{}}{{}n}{{}c{}}{{dCjBdlnlCll}Al}{{{d{Fh}}CjBdlnln}Al}{{dCjBdlnlnl}Al}{{dCjBdlCllnl}Al}{{dCjBdlCllCll}Al}{CnFh}{{{d{Fh}}}Cn}`{dAd}{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd};````````````{{{d{Bn}}CjBdlCll{d{c}}}Al{}}`{{{d{Bn}}ln}{{d{Fj}}}}{{{d{Bn}}{d{j}}}{{Ab{{A`{ln}}}}}}{{{d{Bn}}{d{Fj}}}n}`{{{d{Bn}}ln}Ad}`{{{d{Bn}}BdFl}{{A`{ln}}}}{d{{d{c}}}{}}00000{{{d{Df}}}{{d{Dfc}}}{}}00000{{{d{Fj}}}Fj}{{{d{Fj}}{d{DfFj}}}Al}{{d{d{Dfc}}}Al{}}{dAl}``{{{d{Bn}}l}Al}{{{d{DfFj}}Cn}Al}1{{{d{Bn}}ln}{{B`{{A`{lnln}}}}}}{{{d{Bn}}ln}{{B`{{A`{ln}}}}}}{{{d{Bn}}ln}{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}00{{}Fn}{{}Fj}{{}G`}{{}Gb}{{{d{Bn}}}{{B`{{A`{Adln}}}}}}`{n{{d{c}}}{}}00000{n{{d{Dfc}}}{}}00000{c{{Fb{Fn}}}Gd}```{{{d{Bn}}l}n}{{dll}n}0{{{d{Bn}}ll}n}{nAl}00000{{{d{Bn}}l{d{Dfc}}}{{Dh{e}}}Dj{}}{{{d{c}}}Dl{}}{{{d{Bn}}{d{c}}{d{Dfe}}}{{Dh{Al}}}{}Dn}{{{d{Fn}}{d{Fn}}}Dl}{{{d{Fj}}{d{Fj}}}Dl}{{d{d{c}}}Dl{}}0000000{{{d{Fj}}Cn}Bd}`{{{d{Dfc}}}Al{}}{{{d{Bn}}{d{DfE`}}}Eb}{{{d{Fn}}{d{DfE`}}}Eb}{{{d{Fj}}{d{DfE`}}}Eb}0{{{d{G`}}{d{DfE`}}}Eb}0{cc{}}00000{{Gfl}Fj}{{{d{Bn}}l}Al}00{{{d{Bn}}l}{{B`{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}}}{{{d{Bn}}ln}Ad}{{{d{Bn}}l}{{B`{n}}}}{{{d{Bn}}}Dl}`{{{d{Fn}}n}Fl}{{{d{Fj}}{d{Dfc}}}AlEj}{{{d{DfGf}}{d{{Eh{Fl}}}}}Dl}{{{d{G`}}n}{{d{c}}}{}}{{{d{DfG`}}n}{{d{Dfc}}}{}}{{}n}00000``{{}c{}}00000{GhGb}1{{{d{Fn}}Dl}Dl}{{{d{Fn}}}Dl}0`{{{d{Bn}}}Bd}{{{d{Bl}}}{{d{Bn}}}}{{{d{Bn}}}{{d{Bn}}}}`{{{d{Bn}}CjBd{d{Fj}}{d{Fj}}}Al}{{{d{Bn}}CjBd{d{Fj}}lCl}Al}{{{d{Bn}}CjBd{d{Fj}}lClGb}Gb}{{{d{Bn}}CjBdlnlCl}Al}{{dCjBdlnlCll}Al}0{{{d{Bn}}CjBdlnln}Al}{{dCjBdlnlnl}Al}0{{{d{Bn}}CjBdlnlnl}Al}{{dCjBdlCllnl}Al}0{{{d{Bn}}CjBdlCllCl}Al}{{dCjBdlCllCll}Al}0{{{d{Bn}}{d{Fj}}Bd}{{B`{{A`{BdFj}}}}}}{{{d{Bn}}CjBd{d{Fj}}{d{Fj}}lGb}Gb}{{CnDl}Bn}{{Cn{d{Gf}}{d{Gf}}GbBdl}Gh}{{{d{Bn}}l}c{}}{{CnFnDl}Bn}{{{d{DfGh}}}{{Ab{Bd}}}}{{{d{Gh}}FlFlFl}Fl}`````{{{d{Bn}}}n}{{{d{Bn}}l}{{d{{Eh{Gf}}}}}}`{{{d{Bn}}}{{d{j}}}}{{{d{Bn}}}Cn}{{{d{Gh}}}Cn}{{{d{Bn}}}{{d{Fn}}}}`{{{d{Bn}}}l}``{{}Bd}`{{{d{DfG`}}nn}Al}`{{{d{Fn}}c}FbGj}{{{d{Bn}}{d{Dfc}}Bdlnln}Al{}}{dc{}}{dAd}00`{{{d{Bn}}{d{Fj}}}{{Ab{n}}}}{{{d{Bn}}BdFl}{{Ab{{A`{ln}}}}}}{c{{Fb{e}}}{}{}}00000{{}{{Fb{c}}}{}}00000{dFd}00000`{{{d{DfGh}}}Dl}{{}c{}}00000{{nn}G`}{nGb}{cAl{{Gl{Gb}{{Cd{Gb}}}}}}`````{{{d{{H`{}{{Gn{c}}}}}}CjBdlCll{d{c}}}Al{HbHd}}{{{d{Bn}}{d{Fj}}nnc}Al{{Gl{{d{Ef}}}}}}{{{d{Bn}}{d{Fj}}nn}Ef}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}`{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{nAl}{{{d{{H`{}{{Gn{c}}}}}}l{d{Dfe}}}{{Dh{c}}}{HbHd}Dj}{{{d{c}}}Dl{}}{{{d{{H`{}{{Gn{c}}}}}}{d{c}}{d{Dfe}}}{{Dh{Al}}}{HbHd}Dn}{{{d{Dfc}}}Al{}}0{cc{}}{{}n}{{}c{}}{{{d{{H`{}{{Gn{c}}}}}}l}c{HbHd}}`{{{d{{H`{}{{Gn{c}}}}}}}n{HbHd}}{{{d{{H`{}{{Gn{c}}}}}}{d{Dfc}}BdlCllCl}Al{HbHd}}0{{{d{{H`{}{{Gn{c}}}}}}{d{Dfc}}Bdlnln}Al{HbHd}}`{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}`{dFd}`7````{{{d{Af}}}{{d{{Aj{Ah}}}}}}{d{{d{c}}}{}}0{{{d{Df}}}{{d{Dfc}}}{}}0{{{d{Hf}}}Hf}{{d{d{Dfc}}}Al{}}{dAl}{{{d{Af}}l}Al}00{{}Ah}`{n{{d{c}}}{}}0{n{{d{Dfc}}}{}}0{nAl}0{{{d{Hf}}{d{Hf}}}Dl}{{d{d{c}}}Dl{}}000`{{{d{Af}}l}n}{{{d{Af}}}{{d{Bj}}}}{{{d{Hf}}{d{DfE`}}}Eb}0{{{d{Af}}{d{DfEf}}{d{Ef}}}Al}0{{{d{Af}}ln}{{Ab{n}}}}{cc{}}0{{{d{Hf}}{d{Dfc}}}AlEj}{{{d{Af}}ln}{{d{Hf}}}}0`{{}n}0{{}c{}}0{{{d{Af}}}l}000{{{d{Af}}{d{Hf}}}n}0`{{{d{Af}}{d{DfEf}}Bd{d{Hf}}l{d{Ef}}}Al}0{{{d{Af}}{d{DfHf}}{d{Hf}}}{{Ab{Bd}}}}0{{{d{Af}}{d{DfEf}}Bdl{d{Ef}}{d{Hf}}}Al}0{{{d{Af}}{d{DfEf}}Bdl{d{Ef}}l{d{Ef}}}Al}0{CnHf}{{}Ah}`{{{d{Af}}l}n}{{{d{Af}}}{{d{Bj}}}}{{{d{Af}}}Cn}{{{d{Af}}ln}Ad}{{{d{Af}}ln}{{A`{AdBd}}}}{{{d{Af}}{d{DfHf}}l}Al}0{dc{}}{dAd}{c{{Fb{e}}}{}{}}0{{}{{Fb{c}}}{}}0{dFd}0`{{}c{}}0```````````{{{d{Hh}}CjBdlCll{d{c}}}Al{}}{d{{d{f}}}}`{{{d{Hh}}{d{j}}}{{Ab{{A`{ln}}}}}}{{{d{Hh}}ln}Ad}{d{{d{c}}}{}}000{{{d{Df}}}{{d{Dfc}}}{}}000{{{d{Hj}}}Hj}{{d{d{Dfc}}}Al{}}{dAl}{{{d{Hh}}l}Al}{{{d{Hh}}ln}{{B`{{A`{lnln}}}}}}{{{d{Hh}}ln}{{B`{{A`{ln}}}}}}{{{d{Hh}}ln}{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}{{{d{Hh}}}{{B`{{A`{Adln}}}}}}{n{{d{c}}}{}}000{n{{d{Dfc}}}{}}000{c{{Fb{Hl}}}Gd}{{{d{Hh}}l}n}{{dll}n}{{{d{Hh}}ll}n}1`{nAl}000{{{d{Hh}}l{d{Dfc}}}{{Dh{e}}}Dj{}}{{{d{c}}}Dl{}}{{{d{Hh}}{d{c}}{d{Dfe}}}{{Dh{Al}}}{}Dn}{{{d{Hh}}lCl}Ad}{{{d{Hj}}{d{Hj}}}Dl}{{d{d{c}}}Dl{}}000{{{d{Dfc}}}Al{}}{{{d{Hh}}{d{DfE`}}}Eb}{{{d{Hj}}{d{DfE`}}}Eb}0{{{d{Hl}}{d{DfE`}}}Eb}{cc{}}000{{{d{C`}}HjDl}{{Cf{Hh}}}}{{{d{j}}}{{Fb{Hjc}}}{}}{{{d{Hh}}l}{{B`{{B`{{A`{Bd{A`{ln}}{A`{ln}}}}}}}}}}{{{d{Hh}}ln}Ad}{{{d{Hh}}l}{{B`{n}}}}{{}n}000{{}c{}}000{{{d{Hh}}}Bd}{d{{d{Bn}}}}{{{d{Hh}}CjBdlnlCl}Al}{{{d{Hh}}CjBdlnlCll}Al}{{dCjBdlnlCll}Al}0{{{d{Hh}}CjBdlnln}Al}{{dCjBdlnlnl}Al}0{{{d{Hh}}CjBdlnlnl}Al}{{{d{Hh}}CjBdlClln}Al}{{{d{Hh}}CjBdlCllnl}Al}{{dCjBdlCllnl}Al}0{{{d{Hh}}CjBdlCllCl}Al}{{{d{Hh}}CjBdlCllCll}Al}{{dCjBdlCllCll}Al}0{{{d{Hh}}l}c{}}`{{{d{Hh}}}n}{{{d{Hh}}}{{d{j}}}}{{{d{Hh}}}Cn}`{{{d{Hh}}{d{Dfc}}BdlCllCl}Al{}}{{{d{Hh}}{d{Dfc}}Bdlnln}Al{}}{{{d{D`}}}Db}{{{d{Hh}}}Db}{dc{}}{dAd}0{c{{Fb{e}}}{}{}}00{{{d{j}}}{{Fb{Hjc}}}{}}1{{}{{Fb{c}}}{}}{{{d{Hh}}}{{Fb{{d{f}}c}}}{}}1{{{d{Hh}}}{{Fb{{d{Bn}}c}}}{}}22{dFd}000{{}c{}}000```{{CnBdBdBdBdBd}Bd}``{{CnDll}{{B`{{A`{BdBdBd}}}}}}```````{Cn{{d{{Eh{l}}}}}}0```````````````````````{{{d{Bl}}}{{d{Bn}}}}```````````````````````````````{{{d{{I`{}{{Hn{c}}}}}}CjBdlnln}Alh}`{{{d{{I`{}{{Hn{c}}}}}}}{{Ib{c}}}h}`````````{{{d{{I`{}{{Hn{c}}}}}}ln}Adh}`````{{{d{{I`{}{{Hn{c}}}}}}l}nh}``````````````````````````{{{d{{I`{}{{Hn{c}}}}}}}lh}`0````````````````````````````````{{{Ib{c}}l}Id{}}``{{{d{If}}CjBdlnCl}Al}```{d{{d{c}}}{}}0{{{d{Df}}}{{d{Dfc}}}{}}0{n{{d{c}}}{}}0{n{{d{Dfc}}}{}}0{nAl}0{{{d{Ih}}{d{DfE`}}}Eb}{{{d{If}}{d{DfE`}}}Eb}{cc{}}0{{{d{If}}lnn}n}``{{{d{If}}ln}{{Ij{n}}}}{{{d{If}}n}{{d{Ih}}}}{{}n}0{{}c{}}0{{{d{{Cb{{B`{n}}}}}}}If}{{{d{If}}}n}{c{{Fb{e}}}{}{}}0{{}{{Fb{c}}}{}}0{dFd}055`{{{d{{Il{c}}}}CjBdlnln}Alh}{{{d{{Il{c}}}}lnln}{{d{Ef}}}h}{{{d{Df{Il{c}}}}lnln}{{d{DfEf}}}h}`{{{d{{Il{c}}}}}C`Bb}{{{d{Df{Il{c}}}}lAd}Alh}{{{d{{Il{c}}}}}{{Ib{e}}}h{}}`{{{d{{Ib{c}}}}{d{{Cb{n}}}}}{{Cb{{Cb{{B`{{B`{Ef}}}}}}}}}h}{{{d{{Il{c}}}}ln}Adh}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{Il{c}}}}ll}{{Fb{AlIn}}}Bb}{{{d{{Il{c}}}}}{{Il{c}}}h}{{d{d{Dfc}}}Al{}}{dAl}{{{d{{Il{c}}}}l}Alh}{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{{Il{c}}}}l}nh}{nAl}{{{d{{Il{c}}}}{d{{Il{c}}}}}Dlh}{{d{d{c}}}Dl{}}000{{{d{Df{Il{c}}}}ll}AlBb}{{{d{{Il{c}}}}{d{DfE`}}}Ebh}{{{d{c}}}IlI`}{cc{}}{{{Ib{c}}{d{C`}}}{{Cf{{Il{c}}}}}Bb}``{{}n}{{}c{}}{{{d{{Il{c}}}}}lh}{{{d{{Il{c}}}}}{{Ab{l}}}h}1`{{{Ib{c}}Ad{Cb{n}}}{{Il{c}}}h}{{{d{Df{Il{c}}}}e{d{j}}Dl}{{Cf{Al}}}Bb{{Ch{{d{j}}}{{Cd{{Cf{{A`{ln}}}}}}}}}}{{{d{Df{Il{c}}}}lnln{d{{Eh{Bd}}}}}Alh}{{{d{Df{Il{c}}}}lnAd}Alh}{{{d{{Il{c}}}}{d{j}}}{{Ab{{A`{ln}}}}}h}{{{d{{Il{c}}}}{d{{Il{c}}}}}{{Fb{AlAd}}}h}{{{d{{Il{c}}}}{d{DfC`}}}AlBb}{dc{}}{dAd}{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}>{{{Ib{c}}l}{{Il{c}}}h}``{{{d{{J`{c}}}}CjBdlnln}Alh}{{{d{Df{J`{c}}}}l{B`{Ad}}}Alh}{{{d{Df{J`{c}}}}l{B`{Ef}}}Alh}{{{d{{J`{c}}}}}{{Ib{c}}}h}{{{d{{J`{c}}}}ln}Adh}{d{{d{c}}}{}}0{{{d{Df}}}{{d{Dfc}}}{}}0{{{d{{J`{c}}}}l}Alh}{n{{d{c}}}{}}0{n{{d{Dfc}}}{}}0{{{d{{J`{c}}}}l}nh}{nAl}0{{{d{{J`{c}}}}{d{{J`{c}}}}}Dlh}{{d{d{c}}}Dl{}}000{{{d{{J`{c}}}}{d{DfE`}}}Ebh}{{{d{{J`{c}}}}ln}nh}`{cc{}}0{{{Ib{c}}{d{C`}}}{{Cf{{J`{c}}}}}h}{{{d{{J`{c}}}}ln}F`h}`{{{d{{J`{c}}}}}{{Ib{{Jb{c}}}}}h}``{{}n}0{{}c{}}0`{{{d{{J`{c}}}}}lh}{{{d{{J`{c}}}}}{{Ab{l}}}h}1``{{{Ib{c}}Adl}{{J`{c}}}h}`{dAd}{c{{Fb{e}}}{}{}}0{{}{{Fb{c}}}{}}0{dFd}077{{{Ib{c}}l}{{J`{c}}}h}``````{{{d{{Jd{c}}}}CjBdlnlCl}AlBh}{{{d{{Jd{c}}}}CjBdlnln}AlBh}{{{d{{Jd{c}}}}ln{Ab{{B`{Ad}}}}}AlBh}{{{d{{Jd{c}}}}}{{Ib{c}}}Bh}``````{{{d{{Jd{c}}}}ln}AdBh}{d{{d{c}}}{}}000{{{d{Df}}}{{d{Dfc}}}{}}000{{{d{Jf}}}Jf}{{d{d{Dfc}}}Al{}}{dAl}{{{d{{Jd{c}}}}l}AlBh}`{n{{d{c}}}{}}000{n{{d{Dfc}}}{}}000{{{d{{Jd{c}}}}l}nBh}{nAl}000`4{{{d{{Jd{c}}}}{d{DfE`}}}EbBh}{{{d{Jf}}{d{DfE`}}}Eb}{cc{}}000`````{{{d{{Jd{c}}}}}{{d{{Jh{{B`{Ad}}}}}}}Bh}`````{{{d{{Jd{c}}}}lln}nBh}```{{{d{{Jd{c}}}}ln}{{d{Jf}}}Bh}{{}n}000{{{d{{Jd{c}}}}ln}nBh}{{}c{}}0000{{{d{{Jd{c}}}}{Jj{l}}}{{`{{En{}{{El{Jl}}}}}}}Bh}{{{d{{Jd{c}}}}l}{{`{{En{}{{El{{A`{ln}}}}}}}}}Bh}{{{d{{Jd{c}}}}lCl}{{`{{En{}{{El{{A`{lnlCl}}}}}}}}}Bh}{{{d{{Jd{c}}}}}lBh}{{{d{{Jd{c}}}}}{{Ab{l}}}Bh}1```````{{{Ib{c}}Adl}{{Jd{c}}}Bh}{{{d{Df{Jn{ce}}}}}{{Ab{g}}}Bh{{En{}{{El{l}}}}}{}}```{{{d{{Jd{c}}}}l}nBh}``{{{d{{Jd{c}}}}lnln}nBh}`{{{d{{Jd{c}}}}llnCl}ClBh}`{dc{}}{dAd}{c{{Fb{e}}}{}{}}000{{}{{Fb{c}}}{}}000{dFd}000????{{{Ib{c}}l}{{Jd{c}}}Bh}`{{{d{{K`{c}}}}CjBdlnln}AlI`}{{{d{{K`{c}}}}}{{Ib{e}}}I`{}}`{{{d{{K`{c}}}}ln}AdI`}`{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{K`{c}}}}l}AlI`}{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{{K`{c}}}}l}nI`}{nAl}{{{d{{K`{c}}}}{d{DfE`}}}EbI`}{cc{}}{{}n}{{}c{}}{{{d{{K`{c}}}}}lI`}0{{{Ib{Jb}}{Ib{c}}}{{K`{c}}}I`}{{{d{{K`{c}}}}}{{Ib{Jb}}}I`}`{{{d{{K`{c}}}}}{{Ib{c}}}I`}`{dAd}{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}8`````````````{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}CjBdlCl}AlI`{{I`{}{{Hn{}}}}}}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}CjlCl}DlI`{{I`{}{{Hn{}}}}}}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}CjBdln}AlI`{{I`{}{{Hn{}}}}}}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}l}{{A`{KhKhKj}}}I`{{I`{}{{Hn{}}}}}}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}l}AlI`{{I`{}{{Hn{}}}}}}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}}lI`{{I`{}{{Hn{}}}}}}``````````{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}Kll}AlI`{{I`{}{{Hn{}}}}}}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}l{d{{Eh{n}}}}}KnI`{{I`{}{{Hn{}}}}}}`{{{Ib{c}}}L`I`}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}l}{{Ab{{d{Kh}}}}}I`{{I`{}{{Hn{}}}}}}`````0```````4``````{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}}CnI`{{I`{}{{Hn{}}}}}}{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}l}{{Ab{{d{Kj}}}}}I`{{I`{}{{Hn{}}}}}}````````{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}}{{Ib{c}}}I`{{I`{}{{Hn{}}}}}}```````{{{d{{Kf{}{{Kb{c}}{Kd{e}}}}}}}{{Ib{e}}}I`{{I`{}{{Hn{}}}}}}``````{{{Ib{c}}{Ib{e}}l}LbI`{{I`{}{{Hn{}}}}}}```{{{d{{Ld{c}}}}lCl}AlI`}{{{d{{Ld{c}}}}lKl}AlI`}{{{d{{Ld{c}}}}l{B`{Ef}}}AlI`}{{{d{{Ld{c}}}}l{B`{Ef}}}{{Ij{l}}}I`}{{{d{{Ld{c}}}}CjBdln}AlI`}{{{d{{Ld{c}}}}{d{DfEf}}Bdln}AlI`}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{Ld{c}}}}l}AlI`}{{{d{{Ld{c}}}}}lI`}0```{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{{Ld{c}}}}l}LfI`}{nAl}5{cc{}}{{{d{{Ld{{Jd{c}}}}}}l}{{B`{{B`{Bd}}}}}Bh}{{{d{{Ld{c}}}}l}{{Ab{{d{Kh}}}}}I`}```{{}n}{{}c{}}2```9```{{{Ib{Jd}}{Ib{c}}l}{{Ld{c}}}I`}:{{{d{{Ld{c}}}}}{{B`{l}}}I`}{{{d{{Ld{c}}}}ln}{{d{Ef}}}I`}```{{{d{{Ld{c}}}}l}{{Ab{{d{Kj}}}}}I`}```{{{d{{Ld{c}}}}l{Ab{Kh}}}AlI`}0{{{d{{Ld{c}}}}l{Ab{Kj}}}AlI`}{{{d{{Ld{c}}}}}{{Ib{e}}}I`{}}```0```{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}:9`{{{d{{Lh{ce}}}}CjBdln}AlI`{{I`{}{{Hn{}}}}}}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{Lh{ce}}}}}{{Lh{ce}}}I`{{I`{}{{Hn{}}}}}}{{d{d{Dfc}}}Al{}}{dAl}{{{d{{Lh{ce}}}}l}AlI`{{I`{}{{Hn{}}}}}}{{{d{{Lh{ce}}}}}lI`{{I`{}{{Hn{}}}}}}`{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{nAl}{cc{}}{{{d{i}}}{{Lh{eg}}}h{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}{{Kf{}{{Kb{e}}{Kd{g}}}}}}{{{Ib{e}}{Ib{g}}l{Cb{Kn}}}{{Lh{eg}}}h{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{Ib{c}}}{{Lh{cc}}}I`}{{{d{{Lh{ce}}}}l}{{Ab{{d{Kh}}}}}I`{{I`{}{{Hn{}}}}}}`{{}n}{{}c{}}2``{{{Ib{e}}{Ib{g}}l}{{Lh{eg}}}h{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{d{{Lh{ce}}}}l}{{Ab{{d{Kj}}}}}I`{{I`{}{{Hn{}}}}}}`{{{Lh{eg}}{Ib{i}}}{{Lh{ig}}}h{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{Lh{eg}}{Ib{i}}}{{Lh{ei}}}h{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{d{{Lh{ce}}}}}{{Ib{g}}}I`{{I`{}{{Hn{}}}}}{}}`0`{dc{}}{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}9{{{Ib{c}}{Ib{e}}l}{{Lh{ce}}}I`{{I`{}{{Hn{}}}}}}`{{{d{{Lj{ce}}}}CjBdln}AlI`{{I`{}{{Hn{}}}}}}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{Lj{ce}}}}}lI`{{I`{}{{Hn{}}}}}}`{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{nAl}{cc{}}{{}n}{{}c{}}{{{Ib{c}}{Ib{e}}l}{{Lj{ce}}}I`{{I`{}{{Hn{}}}}}}{{{d{{Lj{ce}}}}}{{Ib{g}}}I`{{I`{}{{Hn{}}}}}{}}`0`?>=21`{{{d{{Ll{c}}}}CjBdln}AlI`};:{{{d{{Ll{c}}}}l}AlI`}{{{d{{Ll{c}}}}}lI`}:987{{{d{{Ll{c}}}}l}{{Ab{{d{Kh}}}}}I`}`760``1{{{Ib{{K`{c}}}}{Ib{{K`{c}}}}{Ib{{Ln{Jb}}}}}{{Ll{c}}}I`}{{{d{{Ll{c}}}}l}{{Ab{{d{Kj}}}}}I`}`{{{d{{Ll{c}}}}}{{Ib{e}}}I`{}}`0`{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}<``{{{d{{M`{c}}}}CjBdln}AlKf}{{{d{{Mb{c}}}}CjBdln}AlKf}{d{{d{c}}}{}}0{{{d{Df}}}{{d{Dfc}}}{}}0{{{d{{M`{c}}}}}lKf}{{{d{{Mb{c}}}}}lKf}{n{{d{c}}}{}}0{n{{d{Dfc}}}{}}0{nAl}0``{cc{}}0{{}n}0{{}c{}}0{{{Ib{c}}{Ib{Md}}{Ib{Md}}}{{M`{c}}}Kf}{{{Ib{c}}{Ib{Md}}}{{Mb{c}}}Kf}``{{{d{{M`{c}}}}}{{Ib{e}}}Kf{}}{{{d{{Mb{c}}}}}{{Ib{e}}}Kf{}}`10{c{{Fb{e}}}{}{}}0{{}{{Fb{c}}}{}}0{dFd}077```{{{d{{I`{}{{Hn{c}}}}}}CjBdlnlCl}Alh}0{{{d{{I`{}{{Hn{c}}}}}}CjBdlCllCl}Alh}0{{{d{{I`{}{{Hn{c}}}}}}CjBdlClln}Alh}0{{{d{{I`{}{{Hn{c}}}}}}CjBdlnln}Alh}{{{d{{I`{}{{Hn{c}}}}}}}{{Ib{c}}}h}{{{d{{I`{}{{Hn{c}}}}}}ln}Adh}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{I`{}{{Hn{c}}}}}}l}Alh}0{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{{I`{}{{Hn{c}}}}}}l}nh}{nAl}{{{d{{I`{}{{Hn{c}}}}}}lCl}Adh}0{{{d{In}}{d{DfE`}}}Eb}0{cc{}}{{}n}{{}c{}}{{{d{{I`{}{{Hn{c}}}}}}}Dlh}0{{{d{{I`{}{{Hn{c}}}}}}}lh}{{{d{{I`{}{{Hn{c}}}}}}}{{Ab{l}}}h}0001{{{d{{I`{}{{Hn{c}}}}}}}Cnh}0`{dAd}{{{d{{I`{}{{Hn{c}}}}}}}nh}0{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}`9`{{{d{{Md{c}}}}CjBdlnln}AlI`}0{{{d{{Md{c}}}}}{{Ib{e}}}I`{}}{{{d{{Md{c}}}}ln}AdI`}`{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{{Md{c}}}}l}nI`}{nAl}{{{d{Df{Md{c}}}}l}AlI`}{{{d{{Md{c}}}}{d{DfE`}}}EbI`}{cc{}}{{}n}{{}c{}}{{{d{{Md{c}}}}}lI`}{{{d{{Md{c}}}}}{{Ab{l}}}I`}1`{{{Ib{c}}l}{{Md{c}}}I`}{{{d{{Md{c}}}}lCjCl}AlI`}{{{d{Df{Md{c}}}}lCl}AlI`}9{{{d{Df{Md{c}}}}le}AlI`{{En{}{{El{n}}}}}}{{{d{Df{Md{c}}}}le}AlI`{{Mf{Cj}{{Cd{{Ab{Al}}}}}}}}{{{d{{Md{c}}}}lCj}AlI`}`{dAd}`{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}<{{Ibl}{{Md{c}}}Id}``{{{d{{Mh{c}}}}CjBdlnln}Alh}{{{d{{Mh{c}}}}}{{Ib{c}}}h}`{{{d{{Mh{c}}}}ln}Adh}{d{{d{c}}}{}}0{{{d{Df}}}{{d{Dfc}}}{}}0``{{{d{f}}lnl}Dl}{{{d{Bn}}lnl}Dl}{n{{d{c}}}{}}0{n{{d{Dfc}}}{}}0{c{{Fb{Mj}}}Gd}{{{d{{Mh{c}}}}l}nh}{nAl}0{{{d{{Mh{c}}}}{d{{Mh{c}}}}}Dlh}{{d{d{c}}}Dl{}}000{{{d{{Mh{c}}}}{d{DfE`}}}Ebh}{{{d{Mj}}{d{DfE`}}}Eb}{cc{}}0{{{Ib{c}}{d{C`}}}{{Cf{{Mh{c}}}}}h}{{}n}0{{}c{}}0``{{{d{{Mh{c}}}}}lh}{{{d{{Mh{c}}}}}{{Ab{l}}}h}``1{{{Ib{c}}l{Ab{l}}Dl}{{Mh{c}}}h}{{{d{{Mh{c}}}}{d{DfC`}}}Alh}{dAd}{c{{Fb{e}}}{}{}}0{{}{{Fb{c}}}{}}0{dFd}088{{{Ib{c}}l}{{Mh{c}}}h}`{{{Ib{Hh}}{d{C`}}}{{Cf{Ml}}}}`{{{Ib{Hh}}l}Ml}1`{{{d{{Mn{c}}}}CjBdlnlCl}AlI`}{{{d{{Mn{c}}}}CjBdlCllCl}AlI`}{{{d{{Mn{c}}}}CjBdlClln}AlI`}{{{d{{Mn{c}}}}CjBdlnln}AlI`}{{{d{{Mn{c}}}}}{{Ib{e}}}I`{}}{{{d{{Mn{c}}}}ln}AdI`}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{Mn{c}}}}l}AlI`}{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{{Mn{c}}}}l}nI`}{nAl}{{{d{{Mn{c}}}}lCl}AdI`}{{{d{{Mn{c}}}}{d{DfE`}}}EbI`}{cc{}}{{}n}`{{}c{}}{{{d{{Mn{c}}}}}DlI`}{{{d{{Mn{c}}}}}lI`}{{{d{{Mn{c}}}}}{{Ab{l}}}I`}01{{{Ib{c}}l}{{Mn{c}}}I`}{{{d{{Mn{c}}}}}CnI`}`{dAd}{{{d{{Mn{c}}}}}nI`}{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}:{{{Ib{c}}l}{{Mn{e}}}{}Id}`{{{d{{N`{eg}}}}CjBdlnlCl}Al{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}0{{{d{{N`{eg}}}}CjBdlnln}Al{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{d{{N`{eg}}}}}{{Ib{c}}}{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{d{{N`{eg}}}}ln}Ad{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}`{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{{N`{eg}}}}l}Al{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{{N`{eg}}}}l}n{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{nAl}{{{d{{N`{ce}}}}{d{DfE`}}}EbI`{{I`{}{{Hn{}}}}}}{cc{}}{{}n}{{}c{}}`{{{d{{N`{eg}}}}}l{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{d{{N`{eg}}}}}{{Ab{l}}}{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}1{{{Ib{e}}{Ib{g}}}{{N`{eg}}}{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{{{d{{N`{eg}}}}ll}n{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}`{{{d{{N`{eg}}}}ln}l{hAn}{{I`{}{{Hn{c}}}}}{{I`{}{{Hn{c}}}}}}{dAd}{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}9{{{Ib{c}}l}{{N`{eg}}}{hAn}{{I`{}{{Hn{c}}}}Id}{{I`{}{{Hn{c}}}}Id}}`{{{Ib{c}}l}Id{}}```{{{d{{H`{}{{Gn{c}}}}}}CjBdlCll{d{c}}}Al{HbHd}}`{{{d{{H`{}{{Gn{c}}}}}}l{d{Dfe}}}{{Dh{c}}}{HbHd}Dj}{{{d{c}}}Dl{}}{{{d{{H`{}{{Gn{c}}}}}}{d{c}}{d{Dfe}}}{{Dh{Al}}}{HbHd}Dn}{{{d{{H`{}{{Gn{c}}}}}}l}c{HbHd}}`{{{d{{H`{}{{Gn{c}}}}}}}n{HbHd}}{{{d{{H`{}{{Gn{c}}}}}}{d{Dfc}}Bdlnln}Al{HbHd}}````{{{d{Nb}}{d{DfEf}}BdBd}Al}{{{d{Nb}}{d{DfEf}}Bdl{d{Ef}}}Al}{{{d{Nb}}{d{DfEf}}Bdln}Al}{d{{d{c}}}{}}{{{d{Df}}}{{d{Dfc}}}{}}{{{d{Nb}}l}Al}{n{{d{c}}}{}}{n{{d{Dfc}}}{}}{{{d{Nb}}l}n}{nAl}{{{d{Nb}}{d{j}}}{{Cf{{A`{lEf}}}}}}0{{{d{Nb}}{Ab{l}}Nd}{{Cf{{A`{lEf}}}}}}{{{d{Nb}}{Ab{l}}Nf}{{Cf{{A`{lEf}}}}}}{{{d{Nb}}{d{j}}}{{Cf{{Nh{Ad{A`{lEf}}}}}}}}{{{d{Nb}}{d{{Eh{Nj}}}}}{{A`{lEf}}}}{cc{}}{{}n}{{}c{}}`{{{d{Nb}}{d{DfEf}}Bdl{d{Ef}}}Al}{{{d{Nb}}{d{DfEf}}Bdln}Al}00{CnNb}{{{d{Nb}}}Cn}{c{{Fb{e}}}{}{}}{{}{{Fb{c}}}{}}{dFd}7`````````````````{{{d{j}}}{{Nn{{d{j}}Nd{Nl{{d{j}}}}}}}}0{{{d{j}}}{{Nn{{d{j}}Nf{Nl{{d{j}}}}}}}}1{d{{d{c}}}{}}00{{{d{Df}}}{{d{Dfc}}}{}}00{g{{`{{Mf{{d{j}}}{{Cd{{Nn{{d{j}}ce}}}}}}}}}{}{{O`{{d{j}}}}}{{Ob{{d{j}}ce}}}}{{{d{Nf}}}Nf}{{{d{Nd}}}Nd}{{{d{Nj}}}Nj}{{d{d{Dfc}}}Al{}}00{dAl}00{{{d{j}}}{{`{{Gl{{Od{{Nl{{d{j}}}}}}}{{Cd{Of}}}}}}}}{n{{d{c}}}{}}00{n{{d{Dfc}}}{}}00{{{d{j}}}{{Nn{{d{j}}c{Nl{{d{j}}}}}}}{OhOj}}{nAl}00{{{d{Nf}}{d{DfE`}}}Eb}{{{d{Nd}}{d{DfE`}}}Eb}{{{d{Nj}}{d{DfE`}}}Eb}{{imo}{{`{{Mf{c}{{Cd{{Nn{ckg}}}}}}}}}Ol{}{}{{Ob{ceg}}}{}{{Ob{ckg}}}{{Mf{kk}{{Cd{k}}}}}}{cc{}}00{{}n}00{{}c{}}00{{{d{j}}}{{Nn{{d{j}}{B`{{A`{NdAd}}}}{Nl{{d{j}}}}}}}}{{{d{j}}}{{Nn{{d{j}}Ad{Nl{{d{j}}}}}}}}1{{{d{j}}}{{Nn{{d{j}}{d{j}}{Nl{{d{j}}}}}}}}{{{d{j}}}{{Cf{Nd}}}}{{{d{j}}}{{Cf{{B`{{A`{NdAd}}}}}}}}{{{d{j}}}{{Nn{{d{j}}l{Nl{{d{j}}}}}}}}{g{{`{{Mf{{d{j}}}{{Cd{{Nn{{d{j}}ce}}}}}}}}}{}{{O`{{d{j}}}}}{{Ob{{d{j}}ce}}}}{{Njl}Dd}{dc{}}00{c{{Fb{e}}}{}{}}00{{}{{Fb{c}}}{}}00{dFd}00<<<","D":"BKj","p":[[10,"AdemAlgebraT",134],[1,"reference"],[5,"AdemAlgebra",134],[10,"Algebra",267],[1,"str"],[1,"i32"],[1,"usize"],[1,"tuple"],[6,"Option",1943],[5,"String",1944],[10,"PolynomialAlgebra",661],[5,"PolynomialAlgebraTableEntry",661],[5,"OnceVec",1945],[1,"unit"],[10,"Bialgebra",309],[5,"Vec",1946],[10,"GeneratedAlgebra",267],[1,"u32"],[10,"UnstableAlgebra",267],[10,"MuAlgebra",267],[5,"TruncatedPolynomialMonomialBasis",312],[10,"MilnorAlgebraT",399],[5,"MilnorAlgebra",399],[6,"Value",1947],[5,"BiVec",1948],[17,"Output"],[8,"Result",1949],[10,"Fn",1950],[6,"FpSliceMut",1951],[6,"FpSlice",1951],[5,"ValidPrime",1952],[10,"SteenrodAlgebraT",742],[6,"SteenrodAlgebraBorrow",742],[5,"AdemBasisElement",134],[0,"mut"],[8,"Result",1953],[10,"Read",1954],[1,"bool"],[10,"Write",1954],[5,"Formatter",1955],[8,"Result",1955],[6,"PorBockstein",134],[6,"FpVector",1951],[1,"slice"],[10,"Hasher",1956],[17,"Item"],[10,"Iterator",1957],[1,"isize"],[6,"Result",1958],[5,"TypeId",1959],[5,"PartitionIterator",312],[5,"Field",367],[5,"MilnorBasisElement",399],[8,"PPartEntry",399],[5,"MilnorProfile",399],[5,"Matrix2D",399],[5,"PPartAllocation",399],[10,"Deserializer",1960],[8,"PPart",399],[5,"PPartMultiplier",399],[10,"Serializer",1961],[10,"FnOnce",1950],[17,"Element"],[10,"PairAlgebra",625],[10,"Send",1962],[10,"Sync",1962],[5,"PolynomialAlgebraMonomial",661],[6,"SteenrodAlgebra",742],[6,"AlgebraType",742],[5,"AlgebraSpec",742],[17,"Algebra"],[10,"Module",1601],[5,"Arc",1963],[10,"ZeroModule",1810],[5,"BlockStructure",1025],[5,"GeneratorBasisEltPair",1025],[5,"Range",1964],[5,"FiniteDimensionalModule",1064],[5,"ModuleFailedRelationError",1601],[5,"FinitelyPresentedModule",1118],[8,"FreeModule",1175],[5,"MuFreeModule",1175],[5,"OperationGeneratorPair",1175],[5,"OnceBiVec",1945],[1,"array"],[5,"GeneratorData",1175],[5,"OffsetIterator",1175],[5,"HomModule",1296],[17,"Source"],[17,"Target"],[10,"ModuleHomomorphism",1325],[5,"Subspace",1965],[5,"QuasiInverse",1966],[5,"MatrixSliceMut",1967],[5,"Matrix",1967],[10,"IdentityHomomorphism",1325],[10,"ZeroHomomorphism",1325],[5,"MuFreeModuleHomomorphism",1405],[1,"f32"],[5,"FullModuleHomomorphism",1470],[5,"GenericZeroHomomorphism",1509],[5,"HomPullback",1531],[8,"FreeModuleHomomorphism",1405],[5,"QuotientHomomorphism",1560],[5,"QuotientHomomorphismSource",1560],[5,"QuotientModule",1647],[10,"FnMut",1950],[5,"RealProjectiveSpace",1683],[5,"RPSpec",1683],[8,"SteenrodModule",1738],[5,"SuspensionModule",1743],[5,"TensorModule",1778],[5,"SteenrodEvaluator",1826],[6,"AlgebraNode",1858],[6,"AlgebraBasisElt",1858],[5,"BTreeMap",1968],[6,"BocksteinOrSq",1858],[5,"VerboseError",1969],[8,"IResult",1970],[10,"ParseError",1969],[10,"Parser",1970],[6,"Err",1970],[5,"Error",1949],[10,"FromStr",1971],[10,"Copy",1962],[10,"Clone",1972],[5,"MilnorPairElement",625],[8,"UnstableFreeModule",1175],[5,"FPMIndexTable",1118],[8,"UnstableFreeModuleHomomorphism",1405],[8,"IResult",1858]],"r":[[1,134],[3,134],[4,267],[5,742],[6,309],[9,367],[10,267],[12,399],[14,399],[15,267],[16,661],[17,661],[18,661],[19,742],[20,742],[21,742],[22,267],[23,108],[33,108],[50,108],[57,108],[72,108],[89,134],[90,134],[91,134],[94,134],[108,134],[109,134],[110,267],[111,742],[112,309],[113,367],[114,267],[115,399],[116,399],[117,267],[118,661],[119,661],[120,661],[121,742],[122,742],[123,742],[124,267],[873,312],[874,312],[875,312],[876,312],[879,312],[887,312],[888,312],[889,367],[892,399],[893,399],[894,399],[895,399],[896,399],[897,399],[898,399],[899,399],[930,1175],[931,1175],[932,1296],[933,1601],[934,1601],[935,1175],[936,1175],[937,1647],[938,1683],[939,1738],[940,1743],[941,1778],[942,1175],[943,1810],[1325,1405],[1326,1470],[1327,1509],[1328,1531],[1331,1405],[1332,1560],[1333,1560],[1336,1405],[1739,1742],[1813,625],[1814,625]],"b":[[194,"impl-Display-for-AdemBasisElement"],[195,"impl-Debug-for-AdemBasisElement"],[496,"impl-Debug-for-MilnorBasisElement"],[497,"impl-Display-for-MilnorBasisElement"],[498,"impl-Debug-for-Matrix2D"],[499,"impl-Display-for-Matrix2D"],[691,"impl-Debug-for-PolynomialAlgebraMonomial"],[692,"impl-Display-for-PolynomialAlgebraMonomial"],[803,"impl-Display-for-AlgebraType"],[804,"impl-Debug-for-AlgebraType"],[860,"impl-TryInto%3C%26AdemAlgebra%3E-for-%26SteenrodAlgebra"],[862,"impl-TryInto%3C%26MilnorAlgebra%3E-for-%26SteenrodAlgebra"],[1417,"impl-ModuleHomomorphism-for-MuFreeModuleHomomorphism%3CU,+M%3E"],[1418,"impl-MuFreeModuleHomomorphism%3CU,+M%3E"],[1623,"impl-Debug-for-ModuleFailedRelationError"],[1624,"impl-Display-for-ModuleFailedRelationError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADoGwQABAAAAAwAAAAYAAAAIAAEADAADABEABgAZAAAAHwAAACIAAAAkAAAAKAAAACoACAA0AAAANwAHAEEAAABDAAEARwABAEoAAgBPAAYAVwACAF0AAQBgAAAAZQACAGkAAABsABEAfwACAIMAAACFAAEAigABAI0ABQCUAAAAlgAAAJgADwCpABwAyQAHANMABwDfAAEA4gAAAOQACgDwAAEA8wACAPcAAAD5ABIADwEAABcBAQAjAQAAJwEBADkBAQA8AQAAPgELAEwBAABOAQEAUQEEAFgBCgBkAQsAcQEOAIEBAACDAQQAiQEMAJcBAQCaAQYAogEAAKUBEgC5ATQA7wEFAPsBCgAHAgkAFwIBABoCAAAcAgMAIQIVADgCAQA7AgIAQAIFAEcCCgBTAhQAaQIGAHECAQB0AgEAegIIAIYCAACJAgAAjgIqALsCBQDDAmMAKwMIADgDNQBwAwUAdwMCAHsDBgCDAwIAiAMJAJMDAQCWAwEAmQMAAJsDAgCfAwUApwMAAKkDAACsAwYAtAMIAL8DAwDEAwQAzAMFANUDCADfAwAA4QMDAOYDEwD7AwIA/wMCAAMEAAAFBA4AFwQBABsEAQAfBAsALQQYAEgEAwBNBCwAfAQHAIYEEwCbBCsAywQBANAEBQDaBAQA5AQAAOgEEwD9BBMAEgUMACAFAAAiBQwAMAUAADIFAAA0BQcAPwUBAEQFBgBNBQ4AXQUkAIMFAACFBQYAjwUEAJYFBACcBQkApwUXAMAFCwDNBQUA1AUBANcFAgDcBRIA8AUAAPIFCQD9BQcABgYCAAoGIAAtBgEAMQYRAEQGAABHBgQATgYBAFIGAQBVBgAAWAYBAFsGAABnBggAcQYDAHYGBwB/BgAAgQYCAIUGBACLBgAAjQYAAI8GBQCWBhoAswYCALgGJwDhBgEA5AYdAAMHAAAFBw8AFgcAABkHAwAeBwAAIQcDACYHAAAoBwoANAcAADYHAAA4BxAASgcBAE0HEABfBxcAegcCAIAHBgCIBw8A"}],["algebra_dim",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["bivec",{"t":"FNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNN","n":["BiVec","borrow","borrow_mut","clone","clone_into","clone_to_uninit","data","default","deserialize","eq","extend","extend_negative","extend_with","fmt","from","from_vec","get","get_max","index","index_mut","into","into_iter","","","into_iter_enum","into_vec","is_empty","iter","iter_enum","iter_mut","iter_mut_enum","last","len","max_degree","min_degree","","new","push","range","reserve","serialize","split_borrow_mut","to_owned","try_from","try_into","type_id","with_capacity"],"q":[[0,"bivec"],[47,"core::clone"],[48,"core::result"],[49,"serde::de"],[50,"core::cmp"],[51,"core::iter::traits::collect"],[52,"core::ops::function"],[53,"core::fmt"],[54,"alloc::vec"],[55,"core::option"],[56,"core::iter::traits::double_ended"],[57,"core::slice::iter"],[58,"core::ops::range"],[59,"serde::ser"],[60,"core::any"]],"i":"`f000000000000000000000000000000000000000000000","f":"`{b{{b{c}}}{}}{{{b{d}}}{{b{dc}}}{}}{{{b{{f{c}}}}}{{f{c}}}h}{{b{b{dc}}}j{}}{bj}`{{}{{f{c}}}{}}{c{{l{{f{e}}}}}nA`}{{{b{{f{c}}}}{b{{f{c}}}}}AbAd}{{{b{d{f{c}}}}e}j{}{{Ah{}{{Af{c}}}}}}{{{b{d{f{c}}}}Ajc}jh}{{{b{d{f{c}}}}Aje}j{}{{An{Aj}{{Al{c}}}}}}{{{b{{f{c}}}}{b{dB`}}}BbBd}{cc{}}{{Aj{Bf{c}}}{{f{c}}}{}}{{{b{{f{c}}}}Aj}{{Bh{{b{c}}}}}{}}{{{b{{f{c}}}}Aj}{{b{c}}}{}}0{{{b{d{f{c}}}}Aj}{{b{dc}}}{}}{{}c{}}{{{f{c}}}e{}{}}{{{b{d{f{c}}}}}e{}{}}{{{b{{f{c}}}}}e{}{}}{{{f{c}}}{{`{{Bl{}{{Af{{Bj{Ajc}}}}}}}}}{}}{{{f{c}}}{{Bf{c}}}{}}{{{b{{f{c}}}}}Ab{}}{{{b{{f{c}}}}}{{Bn{c}}}{}}{{{b{{f{c}}}}}{{`{{Bl{}{{Af{{Bj{Aj{b{c}}}}}}}}}}}{}}{{{b{d{f{c}}}}}{{C`{c}}}{}}{{{b{d{f{c}}}}}{{`{{Bl{}{{Af{{Bj{Aj{b{dc}}}}}}}}}}}{}}{{{b{{f{c}}}}}{{Bh{{b{c}}}}}{}}{{{b{{f{c}}}}}Aj{}}00`{Aj{{f{c}}}{}}{{{b{d{f{c}}}}c}j{}}{{{b{{f{c}}}}}{{Cb{Aj}}}{}}{{{b{d{f{c}}}}Cd}j{}}{{{b{{f{c}}}}e}lCfCh}{{{b{d{f{c}}}}AjAj}{{Bj{{b{dc}}{b{dc}}}}}{}}{bc{}}{c{{l{e}}}{}{}}{{}{{l{c}}}{}}{bCj}{{AjAj}{{f{c}}}{}}","D":"Ab","p":[[1,"reference"],[0,"mut"],[5,"BiVec",0],[10,"Clone",47],[1,"unit"],[6,"Result",48],[10,"Deserializer",49],[10,"Deserialize",49],[1,"bool"],[10,"PartialEq",50],[17,"Item"],[10,"IntoIterator",51],[1,"i32"],[17,"Output"],[10,"FnMut",52],[5,"Formatter",53],[8,"Result",53],[10,"Debug",53],[5,"Vec",54],[6,"Option",55],[1,"tuple"],[10,"DoubleEndedIterator",56],[5,"Iter",57],[5,"IterMut",57],[5,"Range",58],[1,"usize"],[10,"Serialize",59],[10,"Serializer",59],[5,"TypeId",60]],"r":[],"b":[[21,"impl-IntoIterator-for-BiVec%3CT%3E"],[22,"impl-IntoIterator-for-%26mut+BiVec%3CT%3E"],[23,"impl-IntoIterator-for-%26BiVec%3CT%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAACYACAAAAAAAAgAJAA4AAAAQAAEAEwABABYACgAjAAYAKwAEAA=="}],["bruner",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["chart",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["chart",{"t":"PKPTRTTPTGSPTFFNNNNNNNNNNNNNMNNNNNNNMNNOOOONNMNNOOOOMNNNMNNNNNNNNNNN","n":["Above","Backend","Below","EXT","Error","GRID_WIDTH","HEADER","Left","MARGIN","Orientation","PATTERNS","Right","STYLES","SvgBackend","TikzBackend","borrow","","","borrow_mut","","","drop","","from","","","get_coords","","header","","","init","into","","","legend","line","","","max_x","","max_y","","new","","node","","","num_nodes","","out","","structline","","","structline_matrix","text","","","try_from","","","try_into","","","type_id","",""],"q":[[0,"chart"],[68,"std::io"],[69,"core::result"],[70,"std::io::error"],[71,"core::option"],[72,"alloc::vec"],[73,"core::fmt"],[74,"core::any"]],"i":"Bf`0Ah0fl31``31``31031010310102102310121010101021010102102210310310310","f":"```````````````{b{{b{c}}}{}}00{{{b{d}}}{{b{dc}}}{}}00{{{b{d{f{c}}}}}hj}{{{b{d{l{c}}}}}hj}{cc{}}00{{{b{{f{c}}}}nnA`}{{Ad{AbAbAb}}}j}{{{b{{l{c}}}}nnA`}{{Ad{AbAbAb}}}j}{{{b{d{Ah{}{{Af{c}}}}}}nn}{{Aj{hc}}}{}}{{{b{d{f{c}}}}nn}{{Aj{he}}}j{}}{{{b{d{l{c}}}}nn}{{Aj{he}}}j{}}2{{}c{}}00{c{{Al{h}}}j}{{{b{d{Ah{}{{Af{c}}}}}}nnnn{b{An}}}{{Aj{hc}}}{}}{{{b{d{f{c}}}}nnnn{b{An}}}{{Aj{he}}}j{}}{{{b{d{l{c}}}}nnnn{b{An}}}{{Aj{he}}}j{}}````{c{{f{c}}}j}{c{{l{c}}}j}{{{b{d{Ah{}{{Af{c}}}}}}nnA`}{{Aj{hc}}}{}}{{{b{d{f{c}}}}nnA`}{{Aj{he}}}j{}}{{{b{d{l{c}}}}nnA`}{{Aj{he}}}j{}}````{{{b{d{Ah{}{{Af{c}}}}}}{Ad{nnA`}}{Ad{nnA`}}{B`{{b{An}}}}}{{Aj{hc}}}{}}{{{b{d{f{c}}}}{Ad{nnA`}}{Ad{nnA`}}{B`{{b{An}}}}}{{Aj{he}}}j{}}{{{b{d{l{c}}}}{Ad{nnA`}}{Ad{nnA`}}{B`{{b{An}}}}}{{Aj{he}}}j{}}{{{b{d{Ah{}{{Af{c}}}}}}{Ad{nn}}{Ad{nn}}{Bd{{Bd{Bb}}}}{B`{{b{An}}}}}{{Aj{hc}}}{}}{{{b{d{Ah{}{{Af{c}}}}}}nneBf}{{Aj{hc}}}{}Bh}{{{b{d{f{c}}}}nneBf}{{Aj{hg}}}jBh{}}{{{b{d{l{c}}}}nneBf}{{Aj{hg}}}jBh{}}{c{{Aj{e}}}{}{}}00{{}{{Aj{c}}}{}}00{bBj}00","D":"Ad","p":[[1,"reference"],[0,"mut"],[5,"SvgBackend",0],[1,"unit"],[10,"Write",68],[5,"TikzBackend",0],[1,"i32"],[1,"usize"],[1,"f32"],[1,"tuple"],[17,"Error"],[10,"Backend",0],[6,"Result",69],[8,"Result",70],[1,"str"],[6,"Option",71],[1,"u32"],[5,"Vec",72],[6,"Orientation",0],[10,"Display",73],[5,"TypeId",74]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADoABAAAAAMABQASAB0AAwAlAB8A"}],["d2_charts",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["define_module",{"t":"HHHH","n":["gens_to_json","get_gens","interactive_module_define_fdmodule","interactive_module_define_fpmodule"],"q":[[0,"define_module"],[4,"alloc::string"],[5,"alloc::vec"],[6,"bivec"],[7,"serde_json::value"],[8,"anyhow"],[9,"fp::prime::primes_generic"]],"i":"````","f":"{{{h{{f{{d{b}}}}}}}j}{{}{{l{{f{{d{b}}}}}}}}{{{h{nj}}A`}{{l{Ab}}}}0","D":"`","p":[[5,"String",4],[5,"Vec",5],[5,"BiVec",6],[1,"reference"],[6,"Value",7],[8,"Result",8],[0,"mut"],[5,"ValidPrime",9],[1,"unit"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAQAEAAAAAAAAQACAAMABAA="}],["differentials",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["ext",{"t":"ICCCCCCCCRKKKGEFRPFFKPRRFRMNNNNNNNNNNNNNNNNMNOMNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNMNNMNNMNNNNMNNNNNONNMNNNNNNNNNNNNNNNNNMNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFIINNNNNNNNNNNNNNNNNOOONNNNNNNNOOONNNNNFIINNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOONNNPPPFFPPPPPPPGFGPPPPOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOORITJFFKFRRRNNNNMNNNNNNNNMNNNNNMNNNNNNNNNNNNNNNNNNNNMNONNNNNMNNNNMNNNNNMNMNOMNOMNONNNNNNNNNNMNFFINNNNNNNHHHNNNNNNNNNNNHNNNNHNNHNNNHNHHHHHHNNNNNNNNNNHNIHHH","n":["CCC","chain_complex","nassau","resolution","resolution_homomorphism","save","secondary","utils","yoneda","Algebra","AugmentedChainComplex","BoundedChainComplex","ChainComplex","ChainComplexGrading","ChainHomotopy","ChainMap","","Cohomological","FiniteAugmentedChainComplex","FiniteChainComplex","FreeChainComplex","Homological","Homomorphism","Module","StemIterator","TargetComplex","algebra","","","apply_quasi_inverse","augment","borrow","","","","","borrow_mut","","","","","boundary_string","ccdz","chain_map","","chain_maps","compute_through_bidegree","","","deref","","","","","deref_mut","","","","","differential","","","drop","","","","","euler_characteristic","filtration_one_product","filtration_one_products","from","","","","","","graded_dimension_string","has_computed_bidegree","","","init","","","","","into","","","","","into_iter","iter_nonzero_stem","iter_stem","map","","max_s","","","min_degree","","","module","","","new","next","next_homological_degree","","","number_of_gens_in_bidegree","pop","prime","s_shift","save_dir","save_file","target","","to_sseq","try_from","","","","","try_into","","","","","type_id","","","","","zero_module","","","Resolution","algebra","apply_quasi_inverse","borrow","borrow_mut","chain_map","compute_through_bidegree","compute_through_stem","deref","deref_mut","differential","drop","from","has_computed_bidegree","init","into","min_degree","module","name","new","new_with_save","next_homological_degree","prime","save_dir","set_name","target","try_from","try_into","type_id","zero_module","MuResolution","Resolution","UnstableResolution","algebra","apply_quasi_inverse","borrow","borrow_mut","chain_map","compute_through_bidegree","compute_through_bidegree_with_callback","compute_through_stem","compute_through_stem_with_callback","deref","deref_mut","differential","drop","from","has_computed_bidegree","init","into","load_quasi_inverse","","","min_degree","module","name","new","new_with_save","next_homological_degree","save_dir","set_name","should_save","","","target","try_from","try_into","type_id","zero_module","MuResolutionHomomorphism","ResolutionHomomorphism","UnstableResolutionHomomorphism","act","algebra","borrow","borrow_mut","deref","deref_mut","drop","extend","extend_all","extend_profile","extend_step","extend_step_raw","extend_through_stem","from","from_class","from_module_homomorphism","get_map","init","into","name","new","next_homological_degree","save_dir","shift","","","source","","","target","","","try_from","try_into","type_id","AugmentationQi","ChainHomotopy","ChainMap","ChecksumReader","ChecksumWriter","Combined","Differential","Kernel","NassauDifferential","NassauQi","None","ResQi","SaveDirectory","SaveFile","SaveKind","SecondaryComposite","SecondaryHomotopy","SecondaryIntermediate","Split","algebra","b","borrow","","","","","borrow_mut","","","","","clone","","clone_into","","clone_to_uninit","","create_dir","create_file","delete_file","deref","","","","","deref_mut","","","","","drop","","","","","","","eq","","equivalent","","","","","","","","exists","flush","fmt","","from","","","","","","idx","init","","","","","into","","","","","is_none","is_some","kind","magic","name","nassau_data","new","","open_file","push","read","","read_exact","resolution_data","secondary_data","to_owned","","try_from","","","","","try_into","","","","","type_id","","","","","write","","write_all","read","write","Algebra","CompositeData","HIT_GENERATOR","LAMBDA_BIDEGREE","SecondaryComposite","SecondaryHomotopy","SecondaryLift","SecondaryResolution","Source","Target","Underlying","act","","add_composite","","algebra","","","borrow","","","borrow_mut","","","composite","","","compute_composites","compute_homotopies","compute_homotopy_step","compute_intermediate","","compute_intermediates","compute_partial","deref","","","deref_mut","","","drop","","","e3_page","extend_all","finalize","from","","","from_bytes","get_intermediate","homotopies","","","homotopy","init","","","initialize_homotopies","intermediates","","into","","","max","","new","","","prime","save_dir","","shift","","shift_t","source","","","target","","","to_bytes","try_from","","","try_into","","","type_id","","","underlying","","Config","LogWriter","QueryModuleResolution","borrow","","borrow_mut","","clone","clone_into","clone_to_uninit","construct","construct_nassau","construct_standard","deref","","deref_mut","","drop","","eq","equivalent","","","","ext_tracing_subscriber","flush","fmt","from","","get_unit","init","","init_logging","into","","into_throughput","load_module_json","new","parse_module_name","query_module","query_module_only","query_unstable_module","query_unstable_module_only","secondary_job","to_owned","try_from","","","","","try_into","","type_id","","unicode_num","write","Yoneda","yoneda_representative","yoneda_representative_element","yoneda_representative_with_strategy"],"q":[[0,"ext"],[9,"ext::chain_complex"],[136,"ext::nassau"],[166,"ext::resolution"],[205,"ext::resolution_homomorphism"],[243,"ext::save"],[366,"ext::save::SaveDirectory"],[368,"ext::secondary"],[461,"ext::utils"],[517,"ext::yoneda"],[521,"alloc::sync"],[522,"algebra::algebra::algebra_trait"],[523,"algebra::module::module_trait"],[524,"algebra::module::homomorphism"],[525,"ext::chain_complex::finite_chain_complex"],[526,"sseq::coordinates::bidegree"],[527,"alloc::vec"],[528,"sseq::coordinates::generator"],[529,"alloc::string"],[530,"algebra::module::zero_module"],[531,"core::option"],[532,"sseq::sseq"],[533,"core::iter::traits::iterator"],[534,"algebra::module::homomorphism::full_module_homomorphism"],[535,"core::ops::function"],[536,"core::marker"],[537,"fp::prime::primes_generic"],[538,"core::result"],[539,"core::any"],[540,"algebra::algebra::milnor_algebra"],[541,"anyhow"],[542,"core::convert"],[543,"fp::vector::fp_wrapper"],[544,"sseq::coordinates::range"],[545,"fp::matrix::matrix_inner"],[546,"core::ops::range"],[547,"algebra::module::homomorphism::free_module_homomorphism"],[548,"std::path"],[549,"std::io"],[550,"std::io::error"],[551,"core::fmt"],[552,"alloc::boxed"],[553,"algebra::algebra::pair_algebra"],[554,"algebra::module::free_module"],[555,"once"],[556,"dashmap"],[557,"algebra::module::finite_dimensional_module"],[558,"tracing_core::subscriber"],[559,"ext::utils::logging"],[560,"serde_json::value"],[561,"algebra::algebra::steenrod_algebra"],[562,"algebra::module::steenrod_module"],[563,"fp::matrix::subspace"],[564,"ext::chain_complex::chain_homotopy"]],"i":"`````````h``````CdMf```022`12AhAj41102DjLn32410Bf4631743435214352174343521Cl11554632185454632546323185405485485453854158288741546325463254632854`Fd0000000000000000000000000000```Fn0000000000000000MhLh22222222210222222```G`0000000000000000000000MjMl2102102222Eh00``Ef111101```1110Ej0HhHj2341023434343442210234102341100234343333444421341023342102341023433244410230304434102341023410234131Mn0Jj`0`````000IhIn1021Jl210210310333303321021021003221023301021033021030210330301301301221021021030```L`Kb10000```10101000000`1010`10`101`1``````0100001010`1````","f":"``````````````````````````{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{l{c}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{ce}}}}}{{l{g}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{}}{{{j{{Aj{cegi}}}}}lA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}{j{Al{An{i}}}}B`{j{{An{k}}}}}Bbn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}{}{}}{{{Ah{ce}}{l{g}}{Bd{{l{i}}}}}{{Aj{ceig}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{h{}{{b{}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}}{j{{j{c}}}{}}0000{{{j{Al}}}{{j{Alc}}}{}}0000{{{j{Bf}}BhBb}Bj}{{{l{c}}}{{Ah{ce}}}{A`Bl}{{Af{}{{Ab{c}}{Ad{c}}}}{Bn{cc}}}}{{{j{{Cd{}{{C`{c}}{Cb{g}}}}}}Cf}{{l{g}}}{{h{}{{b{e}}}}}{}{{Af{}{{Ab{i}}{Ad{}}}}}{}}{{{j{{Aj{cegi}}}}Cf}{{l{k}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}{}}`{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}B`}Chn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{ce}}}}B`}ChA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Aj{cegi}}}}B`}ChA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{Cj{{j{c}}}{}}0000{Cj{{j{Alc}}}{}}0000{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}Cf}{{l{g}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{ce}}}}Cf}{{l{g}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{}}7{CjCh}0000{{{j{Cl}}Cn}D`}{{{j{Bf}}CnCjB`}{{Db{{Bd{{Bd{Cf}}}}}}}}{{{j{Bf}}CnCj}Dd}{cc{}}{{{Aj{cegi}}}{{Ah{ce}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}1111{{{j{Bf}}}Bj}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}B`}Bbn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{ce}}}}B`}BbA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Aj{cegi}}}}B`}BbA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{{}Cj}0000{{}c{}}00000{{{j{Bf}}}{{`{{Dh{}{{Df{B`}}}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{Dj{{h{}{{b{c}}{d{e}}{f{g}}}}}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{c{Dl{c}}}}}}g}{{Ah{e{Dl{e}}}}}A`{{A`{}{{b{}}}}}{{E`{{j{c}}}{{Dn{e}}}}}}{{{j{{Aj{c{Dl{c}}{Dl{c}}e}}}}i}{{Aj{g{Dl{g}}{Dl{g}}e}}}A`{{h{}{{b{}}}}}{{A`{}{{b{}}}}}{{E`{{j{c}}}{{Dn{g}}}}}}{{{j{Cl}}}Cf}{{{j{{Ah{ce}}}}}CfA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Aj{cegi}}}}}CfA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}Cnn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{ce}}}}}CnA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Aj{cegi}}}}}CnA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}Cf}{{l{e}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{ce}}}}Cf}{{l{g}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{}}{{{j{{Aj{cegi}}}}Cf}{{l{k}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}{}}{{{Bd{{l{c}}}}{Bd{{l{e}}}}}{{Ah{ce}}}{A`Bl}{{Af{}{{Ab{c}}{Ad{c}}}}{Bn{cc}}}}{{{j{Al{Dj{c}}}}}{{Db{e}}}{hEb}{}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}Cfn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}:9{{{j{Bf}}B`}Cj}{{{j{Al{Ah{ce}}}}}ChA`{{Af{}{{Ab{c}}{Ad{c}}}}{Bn{cc}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}Edn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}`{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{j{Ef}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}EhB`}{{Ej{c}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Cd{}{{C`{c}}{Cb{g}}}}}}}{{l{c}}}{{h{}{{b{e}}}}}{}{{Af{}{{Ab{i}}{Ad{}}}}}{}}{{{j{{Aj{cegi}}}}}{{l{k}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}{}}{{{j{Bf}}}{{En{El}}}}{c{{F`{e}}}{}{}}0000{{}{{F`{c}}}{}}0000{jFb}0000{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{l{e}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Ah{ce}}}}}{{l{g}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{}}6`{{{j{{Fd{c}}}}}{{l{e}}}{{Bl{}{{b{Ff}}}}}{}}{{{j{{Fd{c}}}}{j{Al{An{e}}}}B`{j{{An{g}}}}}Bb{{Bl{}{{b{Ff}}}}}{}{}}{j{{j{c}}}{}}{{{j{Al}}}{{j{Alc}}}{}}{{{j{{Fd{c}}}}Cf}{{l{e}}}{{Bl{}{{b{Ff}}}}}{}}{{{j{{Fd{c}}}}B`}Ch{{Bl{}{{b{Ff}}}}}}0{Cj{{j{c}}}{}}{Cj{{j{Alc}}}{}}3{CjCh}{cc{}}{{{j{{Fd{c}}}}B`}Bb{{Bl{}{{b{Ff}}}}}}{{}Cj}{{}c{}}{{{j{{Fd{c}}}}}Cn{{Bl{}{{b{Ff}}}}}}9{{{j{{Fd{c}}}}}{{j{Fh}}}{{Bl{}{{b{Ff}}}}}}{{{l{c}}}{{Fd{c}}}{{Bl{}{{b{Ff}}}}}}{{{l{c}}e}{{Fj{{Fd{c}}}}}{{Bl{}{{b{Ff}}}}}{{Fl{Ef}}}}{{{j{{Fd{c}}}}}Cf{{Bl{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}}Ed{{Bl{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}}{{j{Ef}}}{{Bl{}{{b{Ff}}}}}}{{{j{Al{Fd{c}}}}Bj}Ch{{Bl{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}}{{l{e}}}{{Bl{}{{b{Ff}}}}}{}}{c{{F`{e}}}{}{}}{{}{{F`{c}}}{}}{jFb}3```{{{j{{Fn{c}}}}}{{l{e}}}h{}}{{{j{{Fn{c}}}}{j{Al{An{e}}}}B`{j{{An{g}}}}}Bbh{}{}}{j{{j{c}}}{}}{{{j{Al}}}{{j{Alc}}}{}}{{{j{{Fn{c}}}}Cf}{{l{e}}}h{}}{{{j{{Fn{c}}}}B`}Chh}{{{j{{Fn{c}}}}B`e}Chh{{E`{B`}}}}10{Cj{{j{c}}}{}}{Cj{{j{Alc}}}{}}4{CjCh}{cc{}}{{{j{{Fn{c}}}}B`}Bbh}{{}Cj}{{}c{}}```{{{j{{Fn{c}}}}}Cnh}:{{{j{{Fn{c}}}}}{{j{Fh}}}h}{{{l{c}}}{{Fn{c}}}h}{{{l{c}}e}{{Fj{{Fn{c}}}}}h{{Fl{Ef}}}}{{{j{{Fn{c}}}}}Cfh}{{{j{{Fn{c}}}}}{{j{Ef}}}h}{{{j{Al{Fn{c}}}}Bj}Chh}```{{{j{{Fn{c}}}}}{{l{e}}}h{}}{c{{F`{e}}}{}{}}{{}{{F`{c}}}{}}{jFb}3```{{{j{{G`{ce}}}}GbCfBh}ChBf{{Bf{}{{b{}}}}}}{{{j{{G`{ce}}}}}lBf{{h{}{{b{}}}}}}{j{{j{c}}}{}}{{{j{Al}}}{{j{Alc}}}{}}{Cj{{j{c}}}{}}{Cj{{j{Alc}}}{}}{CjCh}{{{j{{G`{ce}}}}B`}ChBf{{h{}{{b{}}}}}}{{{j{{G`{ce}}}}}ChBf{{h{}{{b{}}}}}}{{{j{{G`{ce}}}}{Gd{g}}}ChBf{{h{}{{b{}}}}}Gf}{{{j{{G`{ce}}}}B`{Db{{j{Gh}}}}}{{Gj{Cn}}}Bf{{Cd{}{{b{}}}}}}{{{j{{G`{ce}}}}B`{Db{{Bd{Gl}}}}}{{Gj{Cn}}}Bf{{h{}{{b{}}}}}}4{cc{}}{{Bj{l{c}}{l{e}}B`{j{{An{Cf}}}}}{{G`{ce}}}Bf{{Cd{}{{b{}}}}}}{{Bj{l{c}}{l{e}}{j{g}}}{{G`{ce}}}{CdBf}{{Cd{}{{b{}}}}}{{Af{}{{Ab{}}{Ad{}}}}}}{{{j{{G`{ce}}}}Cf}{{l{Gn}}}Bf{{h{}{{b{}}}}}}{{}Cj}{{}c{}}{{{j{{G`{ce}}}}}{{j{Fh}}}Bf{{h{}{{b{}}}}}}{{Bj{l{c}}{l{e}}B`}{{G`{ce}}}Bf{{h{}{{b{}}}}}}{{{j{{G`{ce}}}}}CnBf{{h{}{{b{}}}}}}{{{j{{G`{ce}}}}}{{j{Ef}}}Bf{{h{}{{b{}}}}}}`````````{c{{F`{e}}}{}{}}{{}{{F`{c}}}{}}{jFb}`````````````````````{j{{j{c}}}{}}0000{{{j{Al}}}{{j{Alc}}}{}}0000{{{j{Ef}}}Ef}{{{j{Eh}}}Eh}{{j{j{Alc}}}Ch{}}0{jCh}0{{Eh{j{H`}}}{{Fj{Ch}}}}{{{j{{Ej{c}}}}HbBb}{{`{Hd}}}n}{{{j{{Ej{c}}}}Hb}{{Hf{Ch}}}n}{Cj{{j{c}}}{}}0000{Cj{{j{Alc}}}{}}0000{{{j{Al{Hh{c}}}}}ChHd}{CjCh}0{{{j{Al{Hj{c}}}}}ChHl}111{{{j{Ef}}{j{Ef}}}Bb}{{{j{Eh}}{j{Eh}}}Bb}{{j{j{c}}}Bb{}}0000000{{{j{{Ej{c}}}}Hb}Bbn}{{{j{Al{Hh{c}}}}}{{Hf{Ch}}}Hd}{{{j{Ef}}{j{AlHn}}}I`}{{{j{Eh}}{j{AlHn}}}I`}{cc{}}000{{{Db{Hb}}}Ef}1`{{}Cj}0000{{}c{}}0000{{{j{Ef}}}Bb}0`{EhCf}{Eh{{j{Fh}}}}{{}{{`{{Dh{}{{Df{Eh}}}}}}}}{{Hbc}{{Hh{c}}}Hd}{c{{Hj{c}}}Hl}{{{j{{Ej{c}}}}Hb}{{Db{{Ib{Hl}}}}}n}{{{j{AlEf}}c}Ch{{Id{H`}}}}{{{j{Al{Hj{c}}}}{j{Al{An{If}}}}}{{Hf{Cj}}}Hl}{{{j{Ef}}}{{Db{{j{Hb}}}}}}{{{j{Al{Hj{c}}}}{j{Al{An{If}}}}}{{Hf{Ch}}}Hl}77{jc{}}0{c{{F`{e}}}{}{}}0000{{}{{F`{c}}}{}}0000{jFb}0000{{{j{Al{Hh{c}}}}{j{{An{If}}}}}{{Hf{Cj}}}Hd}6{{{j{Al{Hh{c}}}}{j{{An{If}}}}}{{Hf{Ch}}}Hd}`````````````{{{j{{Ih{c}}}}GbCfCnIj}ChIl}{{{j{{In{c}}}}GbCfCnIjBb}Ch{IlJ`Gf}}{{{j{Al{Ih{c}}}}CfCnCj{j{{Jd{{Jb{c}}}}}}{j{{Jd{{Jb{c}}}}}}}ChIl}{{{j{{In{c}}}}CfCn{Jf{c}}{j{Ef}}}Ch{IlJ`Gf}}{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{l{c}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Ih{c}}}}}{{l{c}}}Il}{{{j{{Jl{c}}}}}{{l{e}}}Bf{}}{j{{j{c}}}{}}00{{{j{Al}}}{{j{Alc}}}{}}00{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}Cf}{{Jf{c}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{In{c}}}}CnCj}{{j{{Ih{c}}}}}{IlJ`Gf}}{{{j{{Jl{c}}}}Cf}JfBf}{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}ChIl{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}0{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}B`}{{Gj{Cn}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}Bh}GlIl{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}Bh}GlBf}3{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}Cf}ChIl{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{Cj{{j{c}}}{}}00{Cj{{j{Alc}}}{}}00{CjCh}00{{{j{{Jl{c}}}}}{{En{El}}}Bf}8{{{j{Al{Ih{c}}}}}ChIl}{cc{}}00{{{l{{Jb{c}}}}CnBb{j{Ale}}}{{Hf{{Ih{c}}}}}IlHl}9{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{j{{Jn{{In{c}}}}}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}}{{j{{Jn{In}}}}}Bf}`{{{j{{Jl{c}}}}Cf}{{j{In}}}Bf}{{}Cj}00?{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{j{{K`{BhGl}}}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}}{{j{{K`{BhGl}}}}}Bf}{{}c{}}00{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{Gd{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}}{{Gd{{Jl{c}}}}}Bf}{{{l{{Jb{c}}}}CnBb}{{Ih{c}}}Il}{{{l{{Jb{c}}}}{l{{Jb{c}}}}CnBb}{{In{c}}}{IlJ`Gf}}{{{l{c}}}{{Jl{c}}}Bf}{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}EdIl{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{j{Ef}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}}{{j{Ef}}}Bf}{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}B`Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}}B`Bf}`{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{l{e}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}}{{l{e}}}Bf{}}`{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{l{g}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}1`{{{j{{Ih{c}}}}{j{Ale}}}{{Hf{Ch}}}IlHd}{c{{F`{e}}}{}{}}00{{}{{F`{c}}}{}}00{jFb}00{{{j{{Jj{}{{b{c}}{Ab{e}}{Ad{g}}{Jh{i}}}}}}}{{l{i}}}Il{{Bf{}{{b{c}}}}}{{Bf{}{{b{c}}}}}{}}{{{j{{Jl{c}}}}}{{l{c}}}Bf}```{j{{j{c}}}{}}0{{{j{Al}}}{{j{Alc}}}{}}0{{{j{Kb}}}Kb}{{j{j{Alc}}}Ch{}}{jCh}{{eg}{{Fj{Kd}}}{}{{Kh{Kb}{{Kf{c}}}}}{{Fl{Ef}}}}{{eg}{{Fj{{Fd{{Kj{Ff}}}}}}}{}{{Kh{Kb}{{Kf{c}}}}}{{Fl{Ef}}}}{{eg}{{Fj{{Fn{Kl}}}}}{}{{Kh{Kb}{{Kf{c}}}}}{{Fl{Ef}}}}{Cj{{j{c}}}{}}0{Cj{{j{Alc}}}{}}0{CjCh}0{{{j{Kb}}{j{Kb}}}Bb}{{j{j{c}}}Bb{}}000{{}{{`{Kn}}}}{{{j{Al{L`{c}}}}}{{Hf{Ch}}}Hd}{{{j{Kb}}{j{AlHn}}}I`}{cc{}}0{{{l{Kd}}}{{Fj{{Lb{Bb{l{Kd}}}}}}}}{{}Cj}0{{}Ch}{{}c{}}0`{{{j{Fh}}}{{Fj{Ld}}}}{c{{L`{c}}}{}}1{{{Db{Lf}}Bb}{{Fj{Kd}}}}{{{j{Fh}}{Db{Lf}}Bb}{{Fj{Kd}}}}{Bb{{Fj{{Lh{Kl}}}}}}{{}{{Fj{Lj}}}}{{}{{Db{Cf}}}}{jc{}}{c{{F`{e}}}{}{}}{{{j{Fh}}}{{F`{Kbc}}}{}}{{{Lb{{j{Fh}}e}}}{{F`{Kbg}}}{}{{Kh{Lf}{{Kf{c}}}}}{}}{{{Lb{Ldc}}}{{F`{Kbe}}}{{Kh{Lf}}}{}}3{{}{{F`{c}}}{}}0{jFb}0{CjLl}{{{j{Al{L`{c}}}}{j{{An{If}}}}}{{Hf{Cj}}}Hd}`{{{l{c}}{Ln{{Jd{e}}}}}{{M`{c}}}{Bf{Cd{}{{Cb{Jd}}}}}{{A`{}{{b{}}}}}}{{{l{c}}B`{j{{An{Cf}}}}}{{M`{c}}}{Bf{Cd{}{{Cb{Jd}}}}}}{{{l{c}}{Ln{{Jd{e}}}}g}{{M`{c}}}{Bf{Cd{}{{Cb{Jd}}}}}{{A`{}{{b{}}}}}{{Md{j{j{Mb}}CnCj}{{Dn{Cn}}}}}}","D":"N`","p":[[17,"Algebra"],[17,"Module"],[17,"Homomorphism"],[10,"ChainComplex",9],[1,"reference"],[5,"Arc",521],[10,"Algebra",522],[10,"Module",523],[17,"Source"],[17,"Target"],[10,"ModuleHomomorphism",524],[5,"FiniteChainComplex",9,525],[5,"FiniteAugmentedChainComplex",9,525],[0,"mut"],[1,"slice"],[5,"Bidegree",526],[1,"bool"],[5,"Vec",527],[10,"FreeChainComplex",9],[5,"BidegreeGenerator",528],[5,"String",529],[10,"ZeroModule",530],[10,"ZeroHomomorphism",524],[17,"TargetComplex"],[17,"ChainMap"],[10,"AugmentedChainComplex",9],[1,"u32"],[1,"unit"],[1,"usize"],[10,"BoundedChainComplex",9],[1,"i32"],[1,"isize"],[6,"Option",531],[5,"Product",532],[17,"Item"],[10,"Iterator",533],[5,"StemIterator",9],[5,"FullModuleHomomorphism",534],[17,"Output"],[10,"FnMut",535],[10,"Sized",536],[5,"ValidPrime",537],[6,"SaveDirectory",243],[6,"SaveKind",243],[5,"SaveFile",243],[5,"Adams",532],[5,"Sseq",532],[6,"Result",538],[5,"TypeId",539],[5,"Resolution",136],[5,"MilnorAlgebra",540],[1,"str"],[8,"Result",541],[10,"Into",542],[5,"MuResolution",166],[5,"MuResolutionHomomorphism",205],[6,"FpSliceMut",543],[5,"BidegreeRange",544],[10,"Sync",536],[5,"Matrix",545],[5,"Range",546],[6,"FpVector",543],[5,"MuFreeModuleHomomorphism",547],[5,"Path",548],[5,"PathBuf",548],[10,"Write",549],[8,"Result",550],[5,"ChecksumWriter",243],[5,"ChecksumReader",243],[10,"Read",549],[5,"Formatter",551],[8,"Result",551],[5,"Box",552],[10,"AsRef",542],[1,"u8"],[5,"SecondaryComposite",368],[6,"FpSlice",543],[10,"PairAlgebra",553],[5,"SecondaryHomotopy",368],[10,"Send",536],[8,"FreeModule",554],[8,"FreeModuleHomomorphism",547],[8,"CompositeData",368],[17,"Underlying"],[10,"SecondaryLift",368],[5,"SecondaryResolution",368],[5,"OnceBiVec",555],[5,"DashMap",556],[5,"Config",461],[8,"QueryModuleResolution",461],[17,"Error"],[10,"TryInto",542],[5,"FiniteDimensionalModule",557],[8,"CCC",0],[10,"Subscriber",558],[5,"LogWriter",461,559],[1,"tuple"],[6,"Value",560],[6,"AlgebraType",561],[8,"UnstableResolution",166],[8,"SteenrodModule",562],[1,"char"],[5,"ChainMap",9],[8,"Yoneda",517],[5,"Subspace",563],[10,"Fn",535],[6,"ChainComplexGrading",9],[8,"Resolution",166],[8,"ResolutionHomomorphism",205],[8,"UnstableResolutionHomomorphism",205],[15,"Split",366]],"r":[[14,564],[18,525],[19,525],[462,559],[485,559],[493,559]],"b":[[507,"impl-TryFrom%3C%26str%3E-for-Config"],[508,"impl-TryFrom%3C(%26str,+T)%3E-for-Config"],[509,"impl-TryFrom%3C(Value,+T)%3E-for-Config"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJkBPAABAAEABgABAAkAAQAOAAEAEQAHABoAAwAfAAoAKwABAC4AAAAwAAsAPQAHAEYAAABIAAAATQAAAE8ABgBbAAAAXgAMAGwABQB0ABQAigAFAJEAAwCWAAEAmQANAKgACACyAAQAuAABAL4ABwDJAAQAzwABANIABQDfAAAA4gAAAOQADwD3AAAA+QAAAP4AAAAAAQIABgETABsBHwA/AQAAQQEFAEwBJgB0AQAAdgEAAHgBBAB+AQAAgAEeAKIBAwCnAQYAsQEJALwBEQDPAQAA0QEGANsBDQDsAQIA8wEAAPcBAQD6AQkABQIBAAgCAQA="}],["ext",{"t":"ICOOCCCCCCCORKKKGEFRPFFKPRRFRMNNNNNNNNOOCMOOMONNNNNNMONNNNNNCNNNNMNNNNNNNNNMOMMONMNNONNMONNNNNNNNNNNNNMOFFNNNNNNNONNONNNNNNNNONNNNNNNNNNNNNNNNNNNONNNNNONNNNNNNNNNOPPTSGFFFPFFNNONNNNNNNNNNNNNONNNNNOOONNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNONONNNNNNNNNNNONONONONNNNNNNNNONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONSFIFINNONNNNNOOOOOONNNNNNNNNOOONNNNNNNNNNNOOOOOOOOONNOOONOOONONNNOOONONOOONNNNNNNNNNNOOOFIINNNNNNNNNNNNNNNNNNNNOOONOOONNNOOOOOOOOOOOONNNNPPPFFPPPPPPPGFGPPPPOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNONNNNNHNHONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOORITJFFKFRRRNNNNMNNNNNNNNMNNOONNNMNNNONNNNNNNNNNNNNNNNNOMNOONNNNNMNONNNMNNNNNMNMNOMNOMNOONNNNNNNNNNMNONNNFFISONNOONNNHHHNNONNNNNNHNNHNHNHOCOOOOHHHHHOHOONNNNNNNHNOOFFNNNNONNNNNNHNNNNNNHNNNNONNNNNNNNNNOSIOOHHHHHOHHH","n":["CCC","chain_complex","differentials","modules","nassau","resolution","resolution_homomorphism","save","secondary","utils","yoneda","zero_module","Algebra","AugmentedChainComplex","BoundedChainComplex","ChainComplex","ChainComplexGrading","ChainHomotopy","ChainMap","","Cohomological","FiniteAugmentedChainComplex","FiniteChainComplex","FreeChainComplex","Homological","Homomorphism","Module","StemIterator","TargetComplex","algebra","apply_quasi_inverse","borrow","","","borrow_mut","","","boundary_string","cc","","chain_homotopy","chain_map","chain_maps","","compute_through_bidegree","current","deref","","","deref_mut","","","differential","differentials","drop","","","euler_characteristic","filtration_one_product","filtration_one_products","finite_chain_complex","from","","","graded_dimension_string","has_computed_bidegree","init","","","into","","","into_iter","iter_nonzero_stem","iter_stem","max_s","","min_degree","module","modules","next","next_homological_degree","number_of_gens_in_bidegree","prime","s_shift","save_dir","save_file","target","target_cc","to_sseq","try_from","","","try_into","","","type_id","","","vzip","","","zero_module","","FiniteAugmentedChainComplex","FiniteChainComplex","algebra","","augment","borrow","","borrow_mut","","cc","ccdz","chain_map","chain_maps","compute_through_bidegree","","deref","","deref_mut","","differential","","differentials","drop","","from","","","has_computed_bidegree","","init","","into","","map","","max_s","","min_degree","","module","","modules","new","next_homological_degree","","pop","target","target_cc","try_from","","try_into","","type_id","","vzip","","zero_module","","","End","Fix","INFINITY","MAX_NEW_GENS","Magic","MilnorSubalgebra","Resolution","SenderData","Signature","SignatureIterator","SubalgebraIterator","algebra","apply_quasi_inverse","b","borrow","","","","","","borrow_mut","","","","","","chain_map","chain_maps","clone","clone_into","clone_to_uninit","compute_through_bidegree","compute_through_stem","current","","degree","deref","","","","","","deref_mut","","","","","","differential","differentials","drop","","","","","","extend_through_degree","fmt","from","","","","","","from_bytes","has_computed_bidegree","has_signature","init","","","","","","into","","","","","","into_iter","","iter_signatures","lock","max_degree","min_degree","module","modules","name","","new","","","","new_with_save","next","","next_homological_degree","optimal_for","par_bridge","prime","profile","save_dir","","send","sender","set_name","signature_degree","signature_from_bytes","signature_mask","signature_matrix","signature_to_bytes","step0","step1","step_resolution","step_resolution_with_result","step_resolution_with_subalgebra","subalgebra","target","","to_bytes","to_owned","to_string","top_degree","try_from","","","","","","try_into","","","","","","type_id","","","","","","vzip","","","","","","write_differential","write_qi","zero_algebra","zero_module","","zero_signature","MAX_NEW_GENS","MuResolution","Resolution","SenderData","UnstableResolution","algebra","apply_quasi_inverse","b","borrow","","borrow_mut","","chain_map","chain_maps","","","complex","","","compute_through_bidegree","compute_through_bidegree_with_callback","compute_through_stem","compute_through_stem_with_callback","deref","","deref_mut","","differential","differentials","","","drop","","extend_through_degree","from","","get_kernel","has_computed_bidegree","init","","into","","kernels","","","load_quasi_inverse","","","lock","","","min_degree","module","modules","","","name","","","","new","","new_with_save","next_homological_degree","save_dir","","","","send","sender","set_name","should_save","","","step_resolution","target","try_from","","try_into","","type_id","","vzip","","zero_module","","","","MuResolutionHomomorphism","ResolutionHomomorphism","UnstableResolutionHomomorphism","act","algebra","borrow","borrow_mut","deref","deref_mut","drop","extend","extend_all","extend_profile","extend_step","extend_step_raw","extend_through_stem","from","from_class","from_module_homomorphism","get_map","get_map_ensure_length","init","into","maps","","","name","","","","new","next_homological_degree","save_dir","","","","shift","","","source","","","target","","","try_from","try_into","type_id","vzip","AugmentationQi","ChainHomotopy","ChainMap","ChecksumReader","ChecksumWriter","Combined","Differential","Kernel","NassauDifferential","NassauQi","None","ResQi","SaveDirectory","SaveFile","SaveKind","SecondaryComposite","SecondaryHomotopy","SecondaryIntermediate","Split","adler","","algebra","b","borrow","","","","","borrow_mut","","","","","clone","","clone_into","","clone_to_uninit","","create_dir","create_file","delete_file","deref","","","","","deref_mut","","","","","drop","","","","","","","eq","","equivalent","","","","","","","","exists","flush","fmt","","from","","","","","","get_save_path","idx","init","","","","","into","","","","","is_none","is_some","kind","magic","name","nassau_data","new","","open_file","","open_files","path","push","read","","read_exact","reader","resolution_data","secondary_data","to_owned","","try_from","","","","","try_into","","","","","type_id","","","","","validate_header","vzip","","","","","write","","write_all","write_header","writer","read","write","Algebra","CompositeData","HIT_GENERATOR","LAMBDA_BIDEGREE","SecondaryComposite","SecondaryHomotopy","SecondaryLift","SecondaryResolution","Source","Target","Underlying","act","","add_composite","","algebra","","","borrow","","","borrow_mut","","","composite","","","","composites","compute_composites","compute_homotopies","compute_homotopy_step","compute_intermediate","","compute_intermediates","compute_partial","degree","deref","","","deref_mut","","","drop","","","e3_page","extend_all","finalize","from","","","from_bytes","get_intermediate","hit_generator","homotopies","","","","homotopy","init","","","initialize_homotopies","intermediates","","","into","","","max","","new","","","prime","save_dir","","shift","","shift_t","source","","","target","","","","to_bytes","try_from","","","try_into","","","type_id","","","underlying","","","vzip","","","Config","LogWriter","QueryModuleResolution","STATIC_MODULES_PATH","algebra","borrow","borrow_mut","bytes","chain_maps","clone","clone_into","clone_to_uninit","construct","construct_nassau","construct_standard","deref","deref_mut","differentials","drop","eq","equivalent","","","","ext_tracing_subscriber","fmt","from","get_unit","init","init_logging","into","load_module_json","lock","logging","max_degree","module","modules","name","parse_module_name","query_module","query_module_only","query_unstable_module","query_unstable_module_only","save_dir","secondary_job","start","target","to_owned","try_from","","","","try_into","type_id","unicode_num","vzip","writer","zero_module","LogWriter","Throughput","borrow","","borrow_mut","","bytes","deref","","deref_mut","","drop","","ext_tracing_subscriber","flush","fmt","from","","init","","init_logging","into","","into_throughput","new","start","to_string","try_from","","try_into","","type_id","","vzip","","write","writer","PENALTY_UNIT","Yoneda","cc","chain_maps","compute_kernel_image","rate_adem_operation","rate_milnor_operation","rate_operation","split_mut_borrow","target_cc","yoneda_representative","yoneda_representative_element","yoneda_representative_with_strategy"],"q":[[0,"ext"],[12,"ext::chain_complex"],[104,"ext::chain_complex::finite_chain_complex"],[163,"ext::nassau"],[316,"ext::resolution"],[404,"ext::resolution_homomorphism"],[453,"ext::save"],[591,"ext::save::SaveDirectory"],[593,"ext::secondary"],[697,"ext::utils"],[755,"ext::utils::logging"],[792,"ext::yoneda"],[805,"alloc::sync"],[806,"algebra::algebra::algebra_trait"],[807,"algebra::module::module_trait"],[808,"algebra::module::homomorphism"],[809,"sseq::coordinates::bidegree"],[810,"sseq::coordinates::generator"],[811,"alloc::string"],[812,"alloc::vec"],[813,"core::option"],[814,"sseq::sseq"],[815,"core::iter::traits::iterator"],[816,"core::marker"],[817,"fp::prime::primes_generic"],[818,"core::result"],[819,"core::any"],[820,"algebra::module::zero_module"],[821,"algebra::module::homomorphism::full_module_homomorphism"],[822,"core::ops::function"],[823,"algebra::algebra::milnor_algebra"],[824,"core::fmt"],[825,"std::io::error"],[826,"std::io"],[827,"anyhow"],[828,"core::convert"],[829,"rayon::iter::par_bridge"],[830,"std::sync::mpsc"],[831,"algebra::module::free_module"],[832,"algebra::module::homomorphism::free_module_homomorphism"],[833,"fp::matrix::matrix_inner"],[834,"fp::vector::fp_wrapper"],[835,"fp::matrix::subspace"],[836,"sseq::coordinates::range"],[837,"core::ops::range"],[838,"std::path"],[839,"alloc::boxed"],[840,"std::collections::hash::set"],[841,"std::sync::mutex"],[842,"algebra::algebra::pair_algebra"],[843,"once"],[844,"dashmap"],[845,"algebra::module::finite_dimensional_module"],[846,"tracing_core::subscriber"],[847,"serde_json::value"],[848,"algebra::algebra::steenrod_algebra"],[849,"algebra::module::steenrod_module"],[850,"algebra::module::quotient_module"],[851,"algebra::algebra::adem_algebra"],[852,"ext::chain_complex::chain_homotopy"]],"i":"``Mf0```````0h``````BjOd```022`1220DbNn210B`Eh3`502634324326Ef543Cb33`6543865465453805881583848872365465465465481``121121221221212121211211212121212121212111212212121212121Of0Fh`````1``Fd0Hb0GfGh5342105343344433100210534210534332105343421053443421053421053410433333331034310341343322304444333330334444210534210534210534210534334334`````Ib0If01011OhN`3103333323233103233233323231031031033310331033233310322310333232323233103```Ih0000000000000000000OjOl221022221021021021022222Dj00``Dh111101```1110JhJjDl02103421034343434400210342103422110343433334444023421033400210342103433044421`0`231311443421034210342103402103423202On0Ld`0`````000KfKl1021Lf21021031021333303322102102100322102313010021033002103021033030130130212210210210300210````Ll00NfLn222```220222222`22`2`2`0`0200`````0`102222222`210``1Nh202202020`202020`2022202020202022``O`0`````0```","f":"`````````````````````````````{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{l{c}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}{j{Ah{Aj{i}}}}Al{j{{Aj{k}}}}}Ann{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}{}{}}{j{{j{c}}}{}}00{{{j{Ah}}}{{j{Ahc}}}{}}00{{{j{B`}}BbAn}Bd}```{{{j{{Bj{}{{Bf{c}}{Bh{g}}}}}}Bl}{{l{g}}}{{h{}{{b{e}}}}}{}{{Af{}{{Ab{i}}{Ad{}}}}}{}}``{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}Al}Bnn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}`{C`{{j{c}}}{}}00{C`{{j{Ahc}}}{}}00{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}Bl}{{l{g}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}`{C`Bn}00{{{j{Cb}}Cd}Cf}{{{j{B`}}CdC`Al}{{Cj{{Ch{{Ch{Bl}}}}}}}}{{{j{B`}}CdC`}Cl}`{cc{}}00{{{j{B`}}}Bd}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}Al}Ann{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{}C`}00{{}c{}}000{{{j{B`}}}{{`{{D`{}{{Cn{Al}}}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{Db{{h{}{{b{c}}{d{e}}{f{g}}}}}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{Cb}}}Bl}`{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}Cdn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}Bl}{{l{e}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}`{{{j{Ah{Db{c}}}}}{{Cj{e}}}{hDd}{}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}Bln{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{B`}}Al}C`}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}Dfn{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}`{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{j{Dh}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}DjAl}{{Dl{c}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}{{{j{{Bj{}{{Bf{c}}{Bh{g}}}}}}}{{l{c}}}{{h{}{{b{e}}}}}{}{{Af{}{{Ab{i}}{Ad{}}}}}{}}`{{{j{B`}}}{{E`{Dn}}}}{c{{Eb{e}}}{}{}}00{{}{{Eb{c}}}{}}00{jEd}00{{}c{}}00{{{j{{h{}{{b{c}}{d{e}}{f{g}}}}}}}{{l{e}}}n{{A`{}{{b{c}}}}}{{Af{}{{Ab{e}}{Ad{e}}}}}}```{{{j{{Ef{ce}}}}}{{l{g}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{}}{{{j{{Eh{cegi}}}}}lA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{{{Ef{ce}}{l{g}}{Ch{{l{i}}}}}{{Eh{ceig}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{h{}{{b{}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}}{j{{j{c}}}{}}0{{{j{Ah}}}{{j{Ahc}}}{}}0`{{{l{c}}}{{Ef{ce}}}{A`Ej}{{Af{}{{Ab{c}}{Ad{c}}}}{El{cc}}}}{{{j{{Eh{cegi}}}}Bl}{{l{k}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}{}}`{{{j{{Ef{ce}}}}Al}BnA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Eh{cegi}}}}Al}BnA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{C`{{j{c}}}{}}0{C`{{j{Ahc}}}{}}0{{{j{{Ef{ce}}}}Bl}{{l{g}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{}}5`{C`Bn}0{{{Eh{cegi}}}{{Ef{ce}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{cc{}}0{{{j{{Ef{ce}}}}Al}AnA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Eh{cegi}}}}Al}AnA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{{}C`}0{{}c{}}0{{{j{{Ef{c{En{c}}}}}}g}{{Ef{e{En{e}}}}}A`{{A`{}{{b{}}}}}{{Fb{{j{c}}}{{F`{e}}}}}}{{{j{{Eh{c{En{c}}{En{c}}e}}}}i}{{Eh{g{En{g}}{En{g}}e}}}A`{{h{}{{b{}}}}}{{A`{}{{b{}}}}}{{Fb{{j{c}}}{{F`{g}}}}}}{{{j{{Ef{ce}}}}}BlA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Eh{cegi}}}}}BlA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}{{{j{{Ef{ce}}}}}CdA`{{Af{}{{Ab{c}}{Ad{c}}}}}}{{{j{{Eh{cegi}}}}}CdA`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}}={{{j{{Eh{cegi}}}}Bl}{{l{k}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}{}}`{{{Ch{{l{c}}}}{Ch{{l{e}}}}}{{Ef{ce}}}{A`Ej}{{Af{}{{Ab{c}}{Ad{c}}}}{El{cc}}}}54{{{j{Ah{Ef{ce}}}}}BnA`{{Af{}{{Ab{c}}{Ad{c}}}}{El{cc}}}}{{{j{{Eh{cegi}}}}}{{l{k}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{{Af{}{{Ab{c}}{Ad{}}}}}{{h{}{{b{}}}}}{}}`{c{{Eb{e}}}{}{}}0{{}{{Eb{c}}}{}}0{jEd}0=={{{j{{Ef{ce}}}}}{{l{g}}}A`{{Af{}{{Ab{c}}{Ad{c}}}}}{}}4````````````{{{j{{Fd{c}}}}}{{l{e}}}{{Ej{}{{b{Ff}}}}}{}}{{{j{{Fd{c}}}}{j{Ah{Aj{e}}}}Al{j{{Aj{g}}}}}An{{Ej{}{{b{Ff}}}}}{}{}}`{j{{j{c}}}{}}00000{{{j{Ah}}}{{j{Ahc}}}{}}00000{{{j{{Fd{c}}}}Bl}{{l{e}}}{{Ej{}{{b{Ff}}}}}{}}`{{{j{Fh}}}Fh}{{j{j{Ahc}}}Bn{}}{jBn}{{{j{{Fd{c}}}}Al}Bn{{Ej{}{{b{Ff}}}}}}0```{C`{{j{c}}}{}}00000{C`{{j{Ahc}}}{}}000006`{C`Bn}00000{{{j{{Fd{c}}}}Bl}Bn{{Ej{}{{b{Ff}}}}}}{{{j{Fh}}{j{AhFj}}}{{Eb{BnFl}}}}{cc{}}00000{{{j{Ahc}}}{{Fn{Fh}}}G`}{{{j{{Fd{c}}}}Al}An{{Ej{}{{b{Ff}}}}}}{{{j{Fh}}{j{{Aj{Gb}}}}{j{{Aj{Gb}}}}}An}{{}C`}00000{{}c{}}0000000{{{j{Fh}}Cd}{{`{{D`{}{{Cn{{Ch{Gb}}}}}}}}}}``{{{j{{Fd{c}}}}}Cd{{Ej{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}Bl}{{l{e}}}{{Ej{}{{b{Ff}}}}}{}}`{{{j{{Fd{c}}}}}{{j{Gd}}}{{Ej{}{{b{Ff}}}}}}`{{}Gf}{{{j{Fh}}Cd}Gh}{{{l{c}}}{{Fd{c}}}{{Ej{}{{b{Ff}}}}}}{{{Ch{Gj}}}Fh}{{{l{c}}e}{{Gl{{Fd{c}}}}}{{Ej{}{{b{Ff}}}}}{{Gn{Dh}}}}{{{j{AhGf}}}{{Cj{c}}}{}}{{{j{AhGh}}}{{Cj{c}}}{}}{{{j{{Fd{c}}}}}Bl{{Ej{}{{b{Ff}}}}}}{AlFh}{{}{{H`{c}}}{}}{{{j{{Fd{c}}}}}Df{{Ej{}{{b{Ff}}}}}}`{{{j{{Fd{c}}}}}{{j{Dh}}}{{Ej{}{{b{Ff}}}}}}`{{Al{Hd{Hb}}}Bn}`{{{j{Ah{Fd{c}}}}Bd}Bn{{Ej{}{{b{Ff}}}}}}`{{{j{Fh}}{j{Ahc}}}{{Fn{{Ch{Gb}}}}}G`}{{{j{Fh}}{j{Ff}}{j{{Hf{Ff}}}}Cd{j{{Aj{Gb}}}}}{{`{{D`{}{{Cn{C`}}}}}}}}{{{j{Fh}}{j{{Hh{{Hf{Ff}}}}}}Cd{j{{Aj{Gb}}}}}Hj}{{{j{{Aj{Gb}}}}{j{Ahc}}}{{Fn{Bn}}}Hl}{{{j{{Fd{c}}}}Cd}Bn{{Ej{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}Cd}{{Gl{Bn}}}{{Ej{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}Al}Bn{{Ej{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}Al}{{Gl{Bn}}}{{Ej{}{{b{Ff}}}}}}{{{j{{Fd{c}}}}AlFh}{{Gl{Bn}}}{{Ej{}{{b{Ff}}}}}}`{{{j{{Fd{c}}}}}{{l{e}}}{{Ej{}{{b{Ff}}}}}{}}`{{{j{Fh}}{j{Ahc}}}{{Fn{Bn}}}Hl}{jc{}}{jBd}{{{j{Fh}}}Cd}{c{{Eb{e}}}{}{}}00000{{}{{Eb{c}}}{}}00000{jEd}00000{{}c{}}00000{{{j{{Fd{c}}}}AlC`C`}{{Gl{Bn}}}{{Ej{}{{b{Ff}}}}}}{{{j{Ah{Cj{c}}}}{j{AhHn}}{j{{Aj{Gb}}}}{j{{Aj{C`}}}}{j{Hj}}{j{I`}}}{{Fn{Bn}}}Hl}{{}Fh};`{{{j{Fh}}}{{Ch{Gb}}}}`````{{{j{{Ib{c}}}}}{{l{e}}}h{}}{{{j{{Ib{c}}}}{j{Ah{Aj{e}}}}Al{j{{Aj{g}}}}}Anh{}{}}`{j{{j{c}}}{}}0{{{j{Ah}}}{{j{Ahc}}}{}}0{{{j{{Ib{c}}}}Bl}{{l{e}}}h{}}``````{{{j{{Ib{c}}}}Al}Bnh}{{{j{{Ib{c}}}}Ale}Bnh{{Fb{Al}}}}10{C`{{j{c}}}{}}0{C`{{j{Ahc}}}{}}04```{C`Bn}0{{{j{{Ib{c}}}}Bl}Bnh}{cc{}}0{{{j{{Ib{c}}}}Al}Idh}{{{j{{Ib{c}}}}Al}Anh}{{}C`}0{{}c{}}0`````````{{{j{{Ib{c}}}}}Cdh}<```{{{j{{Ib{c}}}}}{{j{Gd}}}h}```{{{l{c}}}{{Ib{c}}}h}`{{{l{c}}e}{{Gl{{Ib{c}}}}}h{{Gn{Dh}}}}{{{j{{Ib{c}}}}}Blh}{{{j{{Ib{c}}}}}{{j{Dh}}}h}```{{AlAn{Hd{If}}}Bn}`{{{j{Ah{Ib{c}}}}Bd}Bnh}```{{{j{{Ib{c}}}}Al}Bnh}{{{j{{Ib{c}}}}}{{l{e}}}h{}}{c{{Eb{e}}}{}{}}0{{}{{Eb{c}}}{}}0{jEd}0==3``````{{{j{{Ih{ce}}}}IjBlBb}BnB`{{B`{}{{b{}}}}}}{{{j{{Ih{ce}}}}}lB`{{h{}{{b{}}}}}}{j{{j{c}}}{}}{{{j{Ah}}}{{j{Ahc}}}{}}{C`{{j{c}}}{}}{C`{{j{Ahc}}}{}}{C`Bn}{{{j{{Ih{ce}}}}Al}BnB`{{h{}{{b{}}}}}}{{{j{{Ih{ce}}}}}BnB`{{h{}{{b{}}}}}}{{{j{{Ih{ce}}}}{Il{g}}}BnB`{{h{}{{b{}}}}}In}{{{j{{Ih{ce}}}}Al{Cj{{j{Hj}}}}}{{J`{Cd}}}B`{{Bj{}{{b{}}}}}}{{{j{{Ih{ce}}}}Al{Cj{{Ch{Hn}}}}}{{J`{Cd}}}B`{{h{}{{b{}}}}}}4{cc{}}{{Bd{l{c}}{l{e}}Al{j{{Aj{Bl}}}}}{{Ih{ce}}}B`{{Bj{}{{b{}}}}}}{{Bd{l{c}}{l{e}}{j{g}}}{{Ih{ce}}}{BjB`}{{Bj{}{{b{}}}}}{{Af{}{{Ab{}}{Ad{}}}}}}{{{j{{Ih{ce}}}}Bl}{{l{Jb}}}B`{{h{}{{b{}}}}}}{{{j{{Ih{ce}}}}Bl}{{j{Jb}}}B`{{h{}{{b{}}}}}}{{}C`}{{}c{}}```{{{j{{Ih{ce}}}}}{{j{Gd}}}B`{{h{}{{b{}}}}}}```{{Bd{l{c}}{l{e}}Al}{{Ih{ce}}}B`{{h{}{{b{}}}}}}{{{j{{Ih{ce}}}}}CdB`{{h{}{{b{}}}}}}{{{j{{Ih{ce}}}}}{{j{Dh}}}B`{{h{}{{b{}}}}}}````````````{c{{Eb{e}}}{}{}}{{}{{Eb{c}}}{}}{jEd}7```````````````````````{j{{j{c}}}{}}0000{{{j{Ah}}}{{j{Ahc}}}{}}0000{{{j{Dh}}}Dh}{{{j{Dj}}}Dj}{{j{j{Ahc}}}Bn{}}0{jBn}0{{Dj{j{Jd}}}{{Gl{Bn}}}}{{{j{{Dl{c}}}}JfAn}{{`{Hl}}}n}{{{j{{Dl{c}}}}Jf}{{Fn{Bn}}}n}{C`{{j{c}}}{}}0000{C`{{j{Ahc}}}{}}0000{C`Bn}{{{j{Ah{Jh{c}}}}}BnHl}{{{j{Ah{Jj{c}}}}}BnG`}2222{{{j{Dh}}{j{Dh}}}An}{{{j{Dj}}{j{Dj}}}An}{{j{j{c}}}An{}}0000000{{{j{{Dl{c}}}}Jf}Ann}{{{j{Ah{Jh{c}}}}}{{Fn{Bn}}}Hl}{{{j{Dh}}{j{AhFj}}}Jl}{{{j{Dj}}{j{AhFj}}}Jl}{cc{}}000{{{Cj{Jf}}}Dh}1{{{j{{Dl{c}}}}Jf}Jfn}`{{}C`}0000{{}c{}}0000{{{j{Dh}}}An}0`{DjBl}{Dj{{j{Gd}}}}{{}{{`{{D`{}{{Cn{Dj}}}}}}}}{{Jfc}{{Jh{c}}}Hl}{c{{Jj{c}}}G`}{Jf{{Cj{{Jn{G`}}}}}}{{{j{{Dl{c}}}}Jf}{{Cj{{Jn{G`}}}}}n}{{}{{j{{Kb{{K`{Jf}}}}}}}}`{{{j{AhDh}}c}Bn{{Kd{Jd}}}}{{{j{Ah{Jj{c}}}}{j{Ah{Aj{Gj}}}}}{{Fn{C`}}}G`}{{{j{Dh}}}{{Cj{{j{Jf}}}}}}{{{j{Ah{Jj{c}}}}{j{Ah{Aj{Gj}}}}}{{Fn{Bn}}}G`}`99{jc{}}0{c{{Eb{e}}}{}{}}0000{{}{{Eb{c}}}{}}0000{jEd}0000{{{j{{Dl{c}}}}{j{Ahe}}}{{Fn{Bn}}}nG`}{{}c{}}0000{{{j{Ah{Jh{c}}}}{j{{Aj{Gj}}}}}{{Fn{C`}}}Hl}8{{{j{Ah{Jh{c}}}}{j{{Aj{Gj}}}}}{{Fn{Bn}}}Hl}{{{j{{Dl{c}}}}{j{Ahe}}}{{Fn{Bn}}}nHl}``````````````{{{j{{Kf{c}}}}IjBlCdKh}BnKj}{{{j{{Kl{c}}}}IjBlCdKhAn}Bn{KjKnIn}}{{{j{Ah{Kf{c}}}}BlCdC`{j{{Hh{{Hf{c}}}}}}{j{{Hh{{Hf{c}}}}}}}BnKj}{{{j{{Kl{c}}}}BlCd{L`{c}}{j{Dh}}}Bn{KjKnIn}}{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{l{c}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Kf{c}}}}}{{l{c}}}Kj}{{{j{{Lf{c}}}}}{{l{e}}}B`{}}{j{{j{c}}}{}}00{{{j{Ah}}}{{j{Ahc}}}{}}00{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}Bl}{{L`{c}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Kl{c}}}}CdC`}{{j{{Kf{c}}}}}{KjKnIn}}{{{j{{Lf{c}}}}Bl}L`B`}``{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}BnKj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}0{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}Al}{{J`{Cd}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}Bb}HnKj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}Bb}HnB`}3{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}Bl}BnKj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}`{C`{{j{c}}}{}}00{C`{{j{Ahc}}}{}}00{C`Bn}00{{{j{{Lf{c}}}}}{{E`{Dn}}}B`}8{{{j{Ah{Kf{c}}}}}BnKj}{cc{}}00{{{l{{Hf{c}}}}CdAn{j{Ahe}}}{{Fn{{Kf{c}}}}}KjG`}9`{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{j{{Lh{{Kl{c}}}}}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}}{{j{{Lh{Kl}}}}}B`}``{{{j{{Lf{c}}}}Bl}{{j{Kl}}}B`}{{}C`}00?{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{j{{Lj{BbHn}}}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}}{{j{{Lj{BbHn}}}}}B`}`{{}c{}}00{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{Il{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}}{{Il{{Lf{c}}}}}B`}{{{l{{Hf{c}}}}CdAn}{{Kf{c}}}Kj}{{{l{{Hf{c}}}}{l{{Hf{c}}}}CdAn}{{Kl{c}}}{KjKnIn}}{{{l{c}}}{{Lf{c}}}B`}{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}DfKj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{j{Dh}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}}{{j{Dh}}}B`}{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}AlKj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}}AlB`}`{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{l{e}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}}{{l{e}}}B`{}}`{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{l{g}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}1``{{{j{{Kf{c}}}}{j{Ahe}}}{{Fn{Bn}}}KjHl}{c{{Eb{e}}}{}{}}00{{}{{Eb{c}}}{}}00{jEd}00{{{j{{Ld{}{{b{c}}{Ab{e}}{Ad{g}}{Lb{i}}}}}}}{{l{i}}}Kj{{B`{}{{b{c}}}}}{{B`{}{{b{c}}}}}{}}{{{j{{Lf{c}}}}}{{l{c}}}B`}`{{}c{}}00`````{j{{j{c}}}{}}{{{j{Ah}}}{{j{Ahc}}}{}}``{{{j{Ll}}}Ll}{{j{j{Ahc}}}Bn{}}{jBn}{{eg}{{Gl{Ln}}}{}{{Mb{Ll}{{M`{c}}}}}{{Gn{Dh}}}}{{eg}{{Gl{{Fd{{Md{Ff}}}}}}}{}{{Mb{Ll}{{M`{c}}}}}{{Gn{Dh}}}}{{eg}{{Gl{{Ib{Mf}}}}}{}{{Mb{Ll}{{M`{c}}}}}{{Gn{Dh}}}}{C`{{j{c}}}{}}{C`{{j{Ahc}}}{}}`{C`Bn}{{{j{Ll}}{j{Ll}}}An}{{j{j{c}}}An{}}000{{}{{`{Mh}}}}{{{j{Ll}}{j{AhFj}}}Jl}{cc{}}{{{l{Ln}}}{{Gl{{Mj{An{l{Ln}}}}}}}}{{}C`}{{}Bn}{{}c{}}{{{j{Gd}}}{{Gl{Ml}}}}``````0{{{Cj{Mn}}An}{{Gl{Ln}}}}{{{j{Gd}}{Cj{Mn}}An}{{Gl{Ln}}}}{An{{Gl{{N`{Mf}}}}}}{{}{{Gl{Nb}}}}`{{}{{Cj{Bl}}}}``{jc{}}{{{Mj{Mlc}}}{{Eb{Lle}}}{{Mb{Mn}}}{}}{{{Mj{{j{Gd}}e}}}{{Eb{Llg}}}{}{{Mb{Mn}{{M`{c}}}}}{}}{{{j{Gd}}}{{Eb{Llc}}}{}}{c{{Eb{e}}}{}{}}{{}{{Eb{c}}}{}}{jEd}{C`Nd}>````{j{{j{c}}}{}}0{{{j{Ah}}}{{j{Ahc}}}{}}0`{C`{{j{c}}}{}}0{C`{{j{Ahc}}}{}}0{C`Bn}0{{}{{`{Mh}}}}{{{j{Ah{Nf{c}}}}}{{Fn{Bn}}}Hl}{{{j{Nh}}{j{AhFj}}}Jl}{cc{}}0{{}C`}0{{}Bn}{{}c{}}0{{{Nf{c}}}NhHl}{c{{Nf{c}}}{}}`{jBd}{c{{Eb{e}}}{}{}}0{{}{{Eb{c}}}{}}0{jEd}066{{{j{Ah{Nf{c}}}}{j{{Aj{Gj}}}}}{{Fn{C`}}}Hl}`````{{{j{{Nj{c}}}}{Cj{{j{e}}}}{Cj{{j{g}}}}{Cj{{j{Id}}}}Cd}{{Mj{HjHj}}}A`AfAf}{{{j{Nl}}CdC`}Cd}{{{j{Ff}}CdC`}Cd}{{{j{{l{c}}}}CdC`}Cdn}{{{j{Ah{Aj{c}}}}C`C`}{{Mj{{j{Ahc}}{j{Ahc}}}}}{}}`{{{l{c}}{Nn{{Hh{e}}}}}{{O`{c}}}{B`{Bj{}{{Bh{Hh}}}}}{{A`{}{{b{}}}}}}{{{l{c}}Al{j{{Aj{Bl}}}}}{{O`{c}}}{B`{Bj{}{{Bh{Hh}}}}}}{{{l{c}}{Nn{{Hh{e}}}}g}{{O`{c}}}{B`{Bj{}{{Bh{Hh}}}}}{{A`{}{{b{}}}}}{{Ob{j{j{Id}}CdC`}{{F`{Cd}}}}}}","D":"ACn","p":[[17,"Algebra"],[17,"Module"],[17,"Homomorphism"],[10,"ChainComplex",12],[1,"reference"],[5,"Arc",805],[10,"Algebra",806],[10,"Module",807],[17,"Source"],[17,"Target"],[10,"ModuleHomomorphism",808],[0,"mut"],[1,"slice"],[5,"Bidegree",809],[1,"bool"],[10,"FreeChainComplex",12],[5,"BidegreeGenerator",810],[5,"String",811],[17,"TargetComplex"],[17,"ChainMap"],[10,"AugmentedChainComplex",12],[1,"u32"],[1,"unit"],[1,"usize"],[10,"BoundedChainComplex",12],[1,"i32"],[1,"isize"],[5,"Vec",812],[6,"Option",813],[5,"Product",814],[17,"Item"],[10,"Iterator",815],[5,"StemIterator",12],[10,"Sized",816],[5,"ValidPrime",817],[6,"SaveDirectory",453],[6,"SaveKind",453],[5,"SaveFile",453],[5,"Adams",814],[5,"Sseq",814],[6,"Result",818],[5,"TypeId",819],[5,"FiniteChainComplex",104],[5,"FiniteAugmentedChainComplex",104],[10,"ZeroModule",820],[10,"ZeroHomomorphism",808],[5,"FullModuleHomomorphism",821],[17,"Output"],[10,"FnMut",822],[5,"Resolution",163],[5,"MilnorAlgebra",823],[5,"MilnorSubalgebra",163],[5,"Formatter",824],[5,"Error",824],[8,"Result",825],[10,"Read",826],[8,"PPartEntry",823],[1,"str"],[5,"SubalgebraIterator",163],[5,"SignatureIterator",163],[1,"u8"],[8,"Result",827],[10,"Into",828],[5,"IterBridge",829],[5,"SenderData",163],[5,"Sender",830],[8,"FreeModule",831],[8,"FreeModuleHomomorphism",832],[5,"Matrix",833],[10,"Write",826],[6,"FpVector",834],[5,"AugmentedMatrix",833],[5,"MuResolution",316],[5,"Subspace",835],[5,"SenderData",316],[5,"MuResolutionHomomorphism",404],[6,"FpSliceMut",834],[5,"BidegreeRange",836],[10,"Sync",816],[5,"Range",837],[5,"MuFreeModuleHomomorphism",832],[5,"Path",838],[5,"PathBuf",838],[5,"ChecksumWriter",453],[5,"ChecksumReader",453],[8,"Result",824],[5,"Box",839],[5,"HashSet",840],[5,"Mutex",841],[10,"AsRef",828],[5,"SecondaryComposite",593],[6,"FpSlice",834],[10,"PairAlgebra",842],[5,"SecondaryHomotopy",593],[10,"Send",816],[8,"CompositeData",593],[17,"Underlying"],[10,"SecondaryLift",593],[5,"SecondaryResolution",593],[5,"OnceBiVec",843],[5,"DashMap",844],[5,"Config",697],[8,"QueryModuleResolution",697],[17,"Error"],[10,"TryInto",828],[5,"FiniteDimensionalModule",845],[8,"CCC",0],[10,"Subscriber",846],[1,"tuple"],[6,"Value",847],[6,"AlgebraType",848],[8,"UnstableResolution",316],[8,"SteenrodModule",849],[1,"char"],[5,"LogWriter",755],[5,"Throughput",755],[5,"QuotientModule",850],[5,"AdemAlgebra",851],[5,"ChainMap",12],[8,"Yoneda",792],[10,"Fn",822],[6,"ChainComplexGrading",12],[6,"Magic",163],[8,"Resolution",316],[8,"ResolutionHomomorphism",404],[8,"UnstableResolutionHomomorphism",404],[15,"Split",591]],"r":[[17,852],[21,104],[22,104],[698,755],[721,755],[726,755]],"b":[[745,"impl-TryFrom%3C(Value,+T)%3E-for-Config"],[746,"impl-TryFrom%3C(%26str,+T)%3E-for-Config"],[747,"impl-TryFrom%3C%26str%3E-for-Config"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAIYCUAABAAMACAABAAsAAgARAAEAFAAHAB0AAQAgAAUAJwAFAC4ABgA2AAQAPAABAEEAAABDAAIASQAAAEwABQBTAAIAWAAbAHUADACEAAMAigAbAKcAAACsAAAArwAUAMUAFgDdAAAA5AABAOcABQDzAAEA9gAZABIBAAAVASMAOgECAD8BAABBARAAUwEKAGIBAgBtAQwAewEGAIMBAACIAQwAlgEBAJkBBQCmAQAAqQEBAKwBGQDJAQAAywEAANABAADSAQIA2AEVAO8BHwATAgAAFgIFACECBwAqAgAALAInAFUCAABXAgAAWQIEAF8CAABhAgsAbwITAIYCBACNAgcAmAIJAKMCFgC7AgAAvQIAAL8CBgDJAgoA1gIBANoCAgDeAgEA4wICAOcCCADxAhIABgMCAAwDEAAeAwQAJAMBAA=="}],["ext_m_n",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["filtration_one",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["fp",{"t":"SKSSSSQCCCCCCCSSJSSSISSSSSSQRKEEMMMCCCMNCMFKNNNNNNNNNNNNNNNNONNNNNQNNNNNNNNNNNNNNNONRKFNMMOONNNMNNNNMMONMOMNNNNMNONNMMNQNNNMNNNNNNNNSSSSFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNIJFFJINNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNOOHNHNNNNONONONNNNNNNNNNNNHNFONNNNNNNNNNNNOHNNNNNFFFFFFFCCOOOOOOOOOCOCOOOOCOOCCOOFNNNNNNNNNNNNNNNNNNNNONNONNNNNNNSSSFFFOOOOOOOFNNNNOONNNNNNNNNNNONNNNONNNNFFFNNNNCNNNNNNNNNNNNNNNNNNOONNONNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNONONNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNOONNNNSSFNNNNNONNNNNNNNOONNNNNFNNNNNNNNNNNNNNNONNNNNNONNNNNNNNNNFNNCNNNNNNNNNNNONNNNNNONNNNNNNONNNNNNNNNNNNNNNEFNNNNNNNNONNNNNONNNNNFNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNEFNNNNNNNNONNNNNONNNNNEPPKGSMNNCNNNNNQNNNNNNHNNNQQQNNHNCHHHNNHCNNMNNNNNNKNMMMMMHQNMMFFNNNNHNNNNNNONNNNNNNNNNNNNNNONNNNNNNONNFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSHCIHHHPPPPPGGGGGPPPPPPPPPPPPPPPPPPPPCCCCCCCFSOOPPPPPGGGGGPPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQQQQQQQQCFSNNNNNNNNNNONNNONNNNNFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNFFOONNNNOOOONNNNONNOOOONNONNNNNNNOOOONNNNNNNNNNNNNNNN","n":["MAX_MULTINOMIAL_LEN","MaybeArbitrary","NUM_PRIMES","ODD_PRIMES","PRIMES","PRIME_TO_INDEX_MAP","const_for","constants","field","limb","matrix","prime","simd","vector","BINOMIAL4_TABLE","BINOMIAL4_TABLE_SIZE","BINOMIAL_TABLE","BITS_PER_LIMB","BYTES_PER_LIMB","INVERSE_TABLE","Limb","MAX_MULTINOMIAL_LEN","MAX_PRIME","NOT_A_PRIME","NUM_PRIMES","PRIMES","PRIME_TO_INDEX_MAP","populate_binomial_table","Characteristic","Field","Fp","SmallFq","arb_element","characteristic","degree","element","field_internal","fp","one","q","smallfq","zero","FieldElement","FieldElementContainer","add","add_assign","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","","deref_mut","div","drop","eq","equivalent","","field","","fmt","","frobenius","from","hash","impl_arith","init","into","inv","mul","mul_assign","neg","new","sub","sub_assign","to_owned","to_string","try_from","try_into","type_id","val","value","vzip","ElementContainer","FieldInternal","LimbIterator","add","add_assign","bit_length","","bit_mask","bitmask","borrow","borrow_mut","decode","deref","deref_mut","div","drop","el","encode","entries","entries_per_limb","fma_limb","fq","frobenius","from","init","into","into_iter","inv","is_reduced","limb","limb_bit_index_pair","mul","mul_assign","neg","next","normal_from_assign","number","pack","range","reduce","sub","sub_assign","truncate","try_from","try_into","type_id","unpack","vzip","F2","F3","F5","F7","Fp","add_assign","arb_element","arbitrary_with","bit_length","borrow","borrow_mut","characteristic","clone","clone_into","clone_to_uninit","decode","degree","deref","","deref_mut","drop","el","element","encode","eq","equivalent","","fma_limb","fmt","frobenius","from","","hash","init","into","inv","mul_assign","neg","new","one","p","reduce","to_owned","try_from","try_into","type_id","vzip","zero","Polynomial","SMALL_CONWAY_POLYS","SmallFq","SmallFqElement","ZECH_LOGS","ZechTable","a","add","add_assign","arb_element","arbitrary_with","bit_length","borrow","","borrow_mut","","characteristic","clone","","clone_into","","clone_to_uninit","","d","decode","degree","deref","","deref_mut","","drop","","el","encode","eq","","equivalent","","","","fma_limb","fmt","","","","fq","frobenius","from","","hash","","init","","into","","inv","len","limbs","make_zech_log_table","mul_assign","mul_by_a","neg","negative_one","new","one","p","q","","reduce","table","to_owned","","to_string","","try_from","","try_into","","type_id","","vzip","","zech_logs","zero","LimbBitIndexPair","bit_index","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","deref_mut","drop","fmt","from","init","into","limb","sign_rule","to_owned","try_from","try_into","type_id","vzip","AffineSubspace","AugmentedMatrix","Matrix","MatrixSliceMut","QuasiInverse","Subquotient","Subspace","affine","arbitrary","col_end","col_start","columns","dimension","end","gens","image","inner","linear_part","m4ri","matrix","matrix_inner","offset","p","pivots","preimage","quasi_inverse","quotient","start","subquotient","subspace","vectors","","AffineSubspace","borrow","borrow_mut","clone","clone_into","clone_to_uninit","contains","contains_space","deref","deref_mut","drop","eq","equivalent","","fmt","","from","","init","into","linear_part","","new","offset","","sum","to_owned","to_string","try_from","try_into","type_id","vzip","MAX_COLUMNS","MAX_DIM","MAX_ROWS","MatrixArbParams","SubquotientArbParams","SubspaceArbParams","columns","dim","","p","","","rows","M4riTable","add","borrow","borrow_mut","clear","columns","data","default","deref","deref_mut","drop","fmt","from","generate","init","into","is_empty","len","min_limb","new","reduce","reduce_naive","rows","","try_from","try_into","type_id","vzip","AugmentedMatrix","Matrix","MatrixSliceMut","add_assign","add_identity","add_masked","apply","arbitrary","arbitrary_rref","arbitrary_rref_with","arbitrary_with","as_slice_mut","assign","augmented_from_vec","borrow","","","borrow_mut","","","clone","","clone_into","","clone_to_uninit","","col_end","col_start","columns","","","compute_image","","compute_kernel","","compute_quasi_inverse","","compute_quasi_inverses","deref","","","","deref_mut","","","","drop","","","drop_first","end","eq","equivalent","","extend_column_dimension","","extend_image","extend_to_surjection","find_first_row_in_block","find_pivots_permutation","fmt","","from","","","from_bytes","from_row","from_rows","from_vec","identity","index","index_mut","init","","","initialize_pivots","inner","into","","","into_iter","","","into_matrix","into_tail_segment","is_zero","iter","","iter_mut","","maybe_par_iter_mut","","mul","mul_assign","new","","new_with_capacity","","p","pivots","","pivots_mut","prime","read_pivot","row","","row_mut","","row_op","row_op_naive","row_reduce","row_segment","row_segment_mut","row_slice","rows","","safe_row_op","segment","set_to_zero","slice_mut","split_borrow","start","to_bytes","to_owned","","to_string","to_vec","trim","try_from","","","try_into","","","type_id","","","vectors","","vzip","","","write_pivot","MAX_COLUMNS","MAX_ROWS","MatrixArbParams","borrow","borrow_mut","clone","clone_into","clone_to_uninit","columns","default","deref","deref_mut","drop","fmt","from","init","into","p","rows","to_owned","try_from","try_into","type_id","vzip","QuasiInverse","apply","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","deref_mut","drop","eq","equivalent","","fmt","from","from_bytes","image","image_dimension","init","into","new","pivots","preimage","","prime","source_dimension","stream_quasi_inverse","target_dimension","to_bytes","to_owned","try_from","try_into","type_id","vzip","Subquotient","add_gen","ambient_dimension","arbitrary","arbitrary_with","borrow","borrow_mut","clear_gens","clone","clone_into","clone_to_uninit","complement_pivots","deref","deref_mut","dimension","","drop","fmt","","from","from_parts","gens","","init","into","is_empty","new","new_full","prime","quotient","","quotient_dimension","quotient_pivots","reduce","reduce_by_quotient","reduce_matrix","set_to_full","subspace_dimension","subspace_gens","to_owned","to_string","try_from","try_into","type_id","vzip","zeros","MAX_DIM","SubquotientArbParams","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","deref","deref_mut","dim","drop","fmt","from","init","into","p","to_owned","try_from","try_into","type_id","vzip","Subspace","add_basis_elements","add_vector","add_vectors","ambient_dimension","arbitrary","arbitrary_with","basis","borrow","borrow_mut","clone","clone_into","clone_to_uninit","contains","contains_space","deref","","deref_mut","dimension","drop","entire_space","eq","equivalent","","fmt","","from","from_bytes","from_matrix","init","into","is_empty","iter","iter_all_vectors","matrix","new","reduce","set_to_entire","set_to_zero","sum","to_bytes","to_owned","to_string","try_from","try_into","type_id","update_then_row_reduce","vzip","MAX_DIM","SubspaceArbParams","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","deref","deref_mut","dim","drop","fmt","from","init","into","p","to_owned","try_from","try_into","type_id","vzip","Binomial","InvalidPrime","NotAnInteger","Prime","PrimeError","TWO","as_i32","as_u32","as_usize","binomial","borrow","borrow_mut","clone","clone_into","clone_to_uninit","def_prime_static","deref","deref_mut","drop","eq","equivalent","","factor_pk","fmt","","from","impl_op_pn_u32","impl_prime_ops","impl_try_from","init","into","inverse","","iter","log2","logp","minus_one_to_the_n","pow","pow_mod","power_mod","primes_generic","product","sum","to_dyn","to_owned","to_string","try_from","try_into","type_id","vzip","Binomial","binomial","binomial2","binomial4","binomial4_rec","binomial_odd","binomial_odd_is_zero","direct_binomial","impl_binomial","multinomial","multinomial2","multinomial_odd","BinomialIterator","BitflagIterator","borrow","","borrow_mut","","combinations","deref","","deref_mut","","drop","","flag","from","","init","","into","","into_iter","","new","","new_fixed_length","next","","par_bridge","","remaining","set_bit_iterator","try_from","","try_into","","type_id","","value","vzip","","P2","P3","P5","P7","ValidPrime","add","","","","","","","","","","arbitrary_with","","","","","as_i32","","","","","borrow","","","","","borrow_mut","","","","","clone","","","","","clone_into","","","","","clone_to_uninit","","","","","deref","","","","","deref_mut","","","","","deserialize","","","","","div","","","","","","","","","","drop","","","","","eq","","","","","","","","","","equivalent","","","","","","","","","","fmt","","","","","","","","","","fp","from","","","","","from_str","hash","","","","","init","","","","","into","","","","","is_prime","mul","","","","","","","","","","new","new_unchecked","p","partial_cmp","","","","","rem","","","","","","","","","","serialize","","","","","shl","","","","","","","","","","shr","","","","","","","","","","sub","","","","","","","","","","to_dyn","","","","","to_owned","","","","","to_string","","","","","try_from","","","","","","","","","","try_into","","","","","type_id","","","","","vzip","","","","","F2","F3","F5","F7","LIMBS_PER_SIMD","add_simd","x86_64","SimdLimb","load","store","xor","Big","","","","","FpSlice","FpSliceMut","FpVector","FpVectorIterator","FpVectorNonZeroIterator","_2","","","","","_3","","","","","_5","","","","","_7","","","","","arbitrary","fp_wrapper","impl_fqslice","impl_fqslicemut","impl_fqvector","inner","iter","FqVectorArbParams","MAX_LEN","fq","len","Big","","","","","FpSlice","FpSliceMut","FpVector","FpVectorIterator","FpVectorNonZeroIterator","_2","","","","","_3","","","","","_5","","","","","_7","","","","","add","","add_assign","add_basis_element","","add_carry","add_masked","add_offset","add_tensor","add_truncate","add_unmasked","as_slice","","as_slice_mut","assign","","assign_partial","borrow","","","","","borrow_mut","","","","","clone","","clone_into","","clone_to_uninit","","copy","copy_from_slice","density","deref","","","","","deref_mut","","","","","deserialize","drop","","","","","entry","","eq","equivalent","","extend_len","first_nonzero","fmt","","","","","from","","","","","","","","","","","","","","","from_bytes","from_slice","hash","helpers","init","","","","","into","","","","","into_iter","","","is_empty","","is_zero","","iter","","iter_nonzero","","len","","limbs","limbs_mut","macros_generic","multiunzip","new","new_with_capacity","next","","num_limbs","padded_len","prime","","","scale","","serialize","set_entry","","set_scratch_vector_size","set_to_zero","","sign_rule","skip_n","slice","","slice_mut","","to_bytes","to_owned","","","to_string","","trim_start","try_from","","","","","try_into","","","","","","","","","","type_id","","","","","update_from_bytes","vzip","","","","","dispatch_struct","dispatch_vector","dispatch_vector_inner","impl_from","impl_from_inner","impl_try_into","impl_try_into_inner","use_primes","arbitrary","FqVectorArbParams","MAX_LEN","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","deref","deref_mut","drop","fmt","fq","from","init","into","len","to_owned","try_from","try_into","type_id","vzip","FqSlice","FqSliceMut","FqVector","add","","add_basis_element","","add_basis_element_helper","","add_carry","add_carry_helper","add_carry_limb","add_helper","","add_masked","add_masked_helper","add_offset","add_offset_helper","add_shift_left","add_shift_none","add_shift_right","add_tensor","add_tensor_helper","add_truncate","add_truncate_helper","add_unmasked","add_unmasked_helper","arbitrary_with","as_slice","","as_slice_mut","assign","","assign_partial","borrow","","","borrow_mut","","","clone","","clone_into","","clone_to_uninit","","copy","copy_from_slice","copy_from_slice_helper","density","deref","","","deref_mut","","","drop","","","end","","entry","","entry_helper","","eq","equivalent","","extend_len","first_nonzero","first_nonzero_helper","fmt","","","","","fq","","","","from","","","","","","from_bytes","from_raw_parts","from_slice","hash","init","","","into","","","is_empty","","is_zero","","iter","","iter_nonzero","","len","","","limb_masks","limb_range","limb_range_inner","limbs","","","","limbs_mut","max_limb_mask","min_limb_mask","new","new_with_capacity","offset","prime","","","reduce_limbs","scale","","scale_helper","","set_entry","","set_entry_helper","","set_scratch_vector_size","set_to_zero","","sign_rule","slice","","slice_mut","","start","","to_bytes","to_owned","","","to_string","","trim_start","try_from","","","try_into","","","type_id","","","update_from_bytes","vzip","","","FqVectorIterator","FqVectorNonZeroIterator","bit_length","bit_mask","borrow","","borrow_mut","","counter","cur_limb","","cur_limb_entries_left","deref","","deref_mut","","dim","drop","","entries_left","entries_per_limb_m_1","fq","","from","","idx","init","","into","","into_iter","","len","limb_index","","limbs","","multiunzip","new","","next","","next_helper","","skip_n","try_from","","try_into","","type_id","","vzip",""],"q":[[0,"fp"],[14,"fp::constants"],[28,"fp::field"],[42,"fp::field::element"],[84,"fp::field::field_internal"],[132,"fp::field::fp"],[180,"fp::field::smallfq"],[264,"fp::limb"],[285,"fp::matrix"],[317,"fp::matrix::affine"],[349,"fp::matrix::arbitrary"],[362,"fp::matrix::m4ri"],[390,"fp::matrix::matrix_inner"],[533,"fp::matrix::matrix_inner::arbitrary"],[557,"fp::matrix::quasi_inverse"],[591,"fp::matrix::subquotient"],[637,"fp::matrix::subquotient::arbitrary"],[659,"fp::matrix::subspace"],[707,"fp::matrix::subspace::arbitrary"],[729,"fp::prime"],[779,"fp::prime::binomial"],[791,"fp::prime::iter"],[831,"fp::prime::primes_generic"],[1067,"fp::prime::primes_generic::fp"],[1071,"fp::simd"],[1074,"fp::simd::x86_64"],[1078,"fp::vector"],[1115,"fp::vector::arbitrary"],[1119,"fp::vector::fp_wrapper"],[1315,"fp::vector::fp_wrapper::macros_generic"],[1323,"fp::vector::impl_fqvector"],[1324,"fp::vector::impl_fqvector::arbitrary"],[1346,"fp::vector::inner"],[1508,"fp::vector::iter"],[1561,"proptest::strategy::traits"],[1562,"core::clone"],[1563,"core::cmp"],[1564,"core::fmt"],[1565,"core::hash"],[1566,"core::option"],[1567,"alloc::string"],[1568,"core::result"],[1569,"core::any"],[1570,"core::iter::traits::iterator"],[1571,"core::ops::range"],[1572,"alloc::vec"],[1573,"std::io::error"],[1574,"std::io"],[1575,"core::slice::iter"],[1576,"maybe_rayon::concurrent::prelude"],[1577,"core::ops::function"],[1578,"core::convert"],[1579,"rayon::iter::par_bridge"],[1580,"serde::de"],[1581,"serde::ser"],[1582,"core::core_arch::x86"]],"i":"````````````````````````````d```000```00`0``h000000000000000000000`00000000000000000Ah``000Cj0100100101101101000011011110`111111100010`````Db000000000000000000000000000000000000000000``````Dd000000Df1011010101111010101110110011100Kf221212121200`2`222222222212121212121`2`Ch0000000000000`00000`````````Eh0EfGhFd1Ff1Dl`E``1552`43``65`1111111111111111111111111111111``````ElGjHb2102`Ed00000000000000000000000000```9::9`999999:97:97979797:::999797977:977:977:977799997999999:979999999:9797:97999779:9:9:9999797999999:9:999977::9979997997999:97:97:97:9:979```333333333333333333333`666666666666666666666666666666666`88`888888888888888888888888888888888888888888``22222222222222222222`4444`444444444444444444444444444444444444444444``11111111111111111111`Hf0```l00`11111`111111`111```11`0````00``000111111`Hh00000``000``HlHn10`101010110101010101101011101010010`````Ib0Id0If0Ih0En043210432104321043210432104321043210432104321043210443322110043210443322110044332211004433221100`432100432104321043210`4433221100000432104433221100432104433221100443322110044332211004321043210432104433221100432104321043210```````````EbDnEjJfJh`````43210432104321043210`````````Jj054321`````543215432154321543215355353535353553554321543215454543555432154321554321545555555443555555444433321555`5432154321521545454545455`155215554353553553525453554454554321555555432154321554321```````````00000000000000000000```DjJl101011110001100000110011011011Jn120120202012222012012010120202222222200122012200112222201201202020202020002201200220201121212121221220210122002022012012012201``Kb00Kd10110010100101110100101010110100101010110101010","f":"````````````````````````````````{{{d{}{{b{c}}}}}{{`{{j{}{{f{{h{{d{}{{b{c}}}}}}}}}}}}}l}{{{d{}{{b{c}}}}}cl}{{{d{}{{b{c}}}}}nl}```{{{d{}{{b{c}}}}}{{h{{d{}{{b{c}}}}}}}l}1`0``{{{h{c}}{h{c}}}ed{}}{{{Ab{A`{h{c}}}}{h{c}}}Add}{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{{h{c}}}}}{{h{c}}}{AfAh}}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{Aj{{Ab{c}}}{}}{{{Ab{{h{c}}}}}{{Ab{e}}}Ah{}}{Aj{{Ab{A`c}}}{}}9{AjAd}{{{Ab{{h{c}}}}{Ab{{h{c}}}}}Al{AnAh}}{{Ab{Ab{c}}}Al{}}0{{{Ab{{h{c}}}}}cAh}`{{{Ab{{h{c}}}}{Ab{A`B`}}}Bb{BdAh}}{{{Ab{{h{c}}}}{Ab{A`B`}}}Bbd}{{{h{c}}}{{h{c}}}Ah}{cc{}}{{{Ab{{h{c}}}}{Ab{A`e}}}Ad{BfAh}Bh}`{{}Aj}{{}c{}}{{{h{c}}}{{Bj{{h{c}}}}}Ah}{{{h{c}}{h{c}}}ed{}}{{{Ab{A`{h{c}}}}{h{c}}}Add}{{{h{c}}}ed{}}{c{{h{c}}}Ah}32{Abc{}}{AbBl}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}{{{h{c}}}{}Ah}`;```{{{Ah{}{{Cb{c}}}}{h{{Ah{}{{Cb{c}}}}}}{h{{Ah{}{{Cb{c}}}}}}}{{h{{Ah{}{{Cb{c}}}}}}}Cd}{{{Ah{}{{Cb{c}}}}{Ab{A`{h{{Ah{}{{Cb{c}}}}}}}}{h{{Ah{}{{Cb{c}}}}}}}AdCd}{{{Ah{}{{Cb{c}}}}}AjCd}``{{{Ah{}{{Cb{c}}}}}CfCd}{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ah{}{{Cb{c}}}}Cf}{{h{{Ah{}{{Cb{c}}}}}}}Cd}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{{{Ah{}{{Cb{c}}}}{h{{Ah{}{{Cb{c}}}}}}{h{{Ah{}{{Cb{c}}}}}}}{{Bj{{h{{Ah{}{{Cb{c}}}}}}}}}Cd}{AjAd}{{{Ah{}{{Cb{c}}}}c}{{h{{Ah{}{{Cb{c}}}}}}}Cd}{{{Ah{}{{Cb{c}}}}{h{{Ah{}{{Cb{c}}}}}}}CfCd}`:{{{Ah{}{{Cb{c}}}}CfCf{h{{Ah{}{{Cb{c}}}}}}}CfCd}`{{{Ah{}{{Cb{c}}}}{h{{Ah{}{{Cb{c}}}}}}}{{h{{Ah{}{{Cb{c}}}}}}}Cd}{cc{}}{{}Aj}{{}c{}}0{{{Ah{}{{Cb{c}}}}{h{{Ah{}{{Cb{c}}}}}}}{{Bj{{h{{Ah{}{{Cb{c}}}}}}}}}Cd}{{{Ah{}{{Cb{c}}}}Cf}AlCd}`{{{Ah{}{{Cb{c}}}}Aj}ChCd}{{{Ah{}{{Cb{c}}}}{h{{Ah{}{{Cb{c}}}}}}{h{{Ah{}{{Cb{c}}}}}}}{{h{{Ah{}{{Cb{c}}}}}}}Cd}{{{Ah{}{{Cb{c}}}}{Ab{A`{h{{Ah{}{{Cb{c}}}}}}}}{h{{Ah{}{{Cb{c}}}}}}}AdCd}8{{{Ab{A`{Cj{c}}}}}{{Bj{e}}}Ah{}}`{{{Ah{}{{Cb{c}}}}Aj}AjCd}{{{Ah{}{{Cb{c}}}}e}CfCd{{Cn{}{{Cl{{h{{Ah{}{{Cb{c}}}}}}}}}}}}{{{Ah{}{{Cb{c}}}}AjAj}{{D`{Aj}}}Cd}{{{Ah{}{{Cb{c}}}}Cf}CfCd}65{{{Ah{}{{Cb{c}}}}Cf}{{Bj{Cf}}}Cd}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}{{{Ah{}{{Cb{c}}}}Cf}{{Cj{{Ah{}{{Cb{c}}}}}}}Cd}?`````{{{Db{c}}{Ab{A`{h{{Db{c}}}}}}{h{{Db{c}}}}}Adl}{{{Db{c}}}{{`{{j{}{{f{{h{{Db{c}}}}}}}}}}}l}{ce{}{}}{{{Db{c}}}Ajl}{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Db{c}}}el{}}{{{Ab{{Db{c}}}}}{{Db{c}}}Af}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{{{Db{c}}Cf}{{h{{Db{c}}}}}l}{{{Db{c}}}nl}{Aj{{Ab{c}}}{}}{{{Ab{{Db{c}}}}}{{Ab{e}}}{}{}}{Aj{{Ab{A`c}}}{}}{AjAd}{{{Db{c}}e}{{h{{Db{c}}}}}l{}}{{{Ab{{Db{c}}}}n}{{h{{Db{c}}}}}l}{{{Db{c}}{h{{Db{c}}}}}Cfl}{{{Ab{{Db{c}}}}{Ab{{Db{c}}}}}AlAn}{{Ab{Ab{c}}}Al{}}0{{{Db{c}}CfCf{h{{Db{c}}}}}Cfl}{{{Ab{{Db{c}}}}{Ab{A`B`}}}BbBd}{{{Db{c}}{h{{Db{c}}}}}{{h{{Db{c}}}}}l}{cc{}}{c{{Db{c}}}l}{{{Ab{{Db{c}}}}{Ab{A`e}}}AdBfBh}{{}Aj}{{}c{}}{{{Db{c}}{h{{Db{c}}}}}{{Bj{{h{{Db{c}}}}}}}l}{{{Db{c}}{Ab{A`{h{{Db{c}}}}}}{h{{Db{c}}}}}Adl}75{{{Db{c}}}{{h{{Db{c}}}}}l}`{{{Db{c}}Cf}Cfl}{Abc{}}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}85``````{{{Dd{c}}}{{h{{Dd{c}}}}}l}{{{Dd{c}}{h{{Dd{c}}}}{h{{Dd{c}}}}}{{h{{Dd{c}}}}}l}{{{Dd{c}}{Ab{A`{h{{Dd{c}}}}}}{h{{Dd{c}}}}}Adl}{{{Dd{c}}}{{`{{j{}{{f{{h{{Dd{c}}}}}}}}}}}l}{ce{}{}}{{{Dd{c}}}Ajl}{Ab{{Ab{c}}}{}}0{{{Ab{A`}}}{{Ab{A`c}}}{}}0{{{Dd{c}}}el{}}{{{Ab{{Dd{c}}}}}{{Dd{c}}}Af}{{{Ab{Df}}}Df}{{Ab{Ab{A`c}}}Ad{}}0{AbAd}0`{{{Dd{c}}Cf}{{h{{Dd{c}}}}}l}{{{Dd{c}}}nl}{Aj{{Ab{c}}}{}}0{Aj{{Ab{A`c}}}{}}0{AjAd}0{{{Dd{c}}e}{{h{{Dd{c}}}}}l{}}{{{Dd{c}}{h{{Dd{c}}}}}Cfl}{{{Ab{{Dd{c}}}}{Ab{{Dd{c}}}}}All}{{{Ab{Df}}{Ab{Df}}}Al}{{Ab{Ab{c}}}Al{}}000{{{Dd{c}}CfCf{h{{Dd{c}}}}}Cfl}{{{Ab{{Dd{c}}}}{Ab{A`B`}}}Bbl}0{{{Ab{Df}}{Ab{A`B`}}}Bb}0`{{{Dd{c}}{h{{Dd{c}}}}}{{h{{Dd{c}}}}}l}{cc{}}0{{{Ab{{Dd{c}}}}{Ab{A`e}}}AdlBh}{{{Ab{Df}}{Ab{A`c}}}AdBh}{{}Aj}0{{}c{}}0{{{Dd{c}}{h{{Dd{c}}}}}{{Bj{{h{{Dd{c}}}}}}}l}``{{cn}{{Ab{{Dh{Df}}}}}l}{{{Dd{c}}{Ab{A`{h{{Dd{c}}}}}}{h{{Dd{c}}}}}Adl}{{{Ab{{Dj{{Db{c}}}}}}{Dj{{Db{c}}}}}{{Dj{{Db{c}}}}}l}9{{{Dd{c}}}{{h{{Dd{c}}}}}l}{{cn}{{Dd{c}}}l}1`{{{Dd{c}}}nl}`{{{Dd{c}}Cf}Cfl}`{Abc{}}0{AbBl}0{c{{Bn{e}}}{}{}}0{{}{{Bn{c}}}{}}0{AbC`}0==;8``{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{Ch}}}Ch}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{AjAd}{{{Ab{Ch}}{Ab{A`B`}}}Bb}{cc{}}{{}Aj}{{}c{}}`{{CfCf}n}{Abc{}}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}5`````````````````````````````````{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{Dl}}}Dl}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{{{Ab{Dl}}Dn}Al}{{{Ab{Dl}}{Ab{Dl}}}Al}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{AjAd}3{{Ab{Ab{c}}}Al{}}0{{{Ab{Dl}}{Ab{A`B`}}}Bb}0{E`Dl}{cc{}}{{}Aj}{{}c{}}{{{Ab{Dl}}}{{Ab{E`}}}}`{{EbE`}Dl}{{{Ab{Dl}}}{{Ab{Eb}}}}`{{{Ab{Dl}}{Ab{Dl}}}Dl}{Abc{}}{AbBl}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}9``````````````{{{Ab{A`Ed}}AjAj}Ad}{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{A`Ed}}}Ad}``{{}Ed}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{AjAd}{{{Ab{Ed}}{Ab{A`B`}}}Bb}{cc{}}{{{Ab{A`Ed}}{Ab{Ef}}}Ad}{{}Aj}{{}c{}}{{{Ab{Ed}}}Al}{{{Ab{Ed}}}Aj}`{{AjAj}Ed}{{{Ab{Ed}}{Ab{A`{Dh{Cf}}}}}Ad}{{{Ab{Ed}}{Ab{A`Ef}}Aj}Ad}{{{Ab{Ed}}}{{Ab{{Dh{Aj}}}}}}`{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}9```{{{Ab{A`Ef}}{Ab{Ef}}}Ad}{{{Ab{A`Eh}}}Ad}{{{Ab{A`Eh}}{Ab{Ef}}{Ab{{Dh{Aj}}}}}Ad}{{{Ab{Ef}}EjnDn}Ad}`{{}{{`{{j{}{{f{Ef}}}}}}}}{El{{`{{j{}{{f{Ef}}}}}}}}{ce{}{}}{{{Ab{A`Ef}}}Eh}7{{En{Ab{{Dh{{F`{n}}}}}}}{{Fb{AjEf}}}}{Ab{{Ab{c}}}{}}00{{{Ab{A`}}}{{Ab{A`c}}}{}}00{{{Ab{Ef}}}Ef}{{{Ab{Fd}}}Fd}{{Ab{Ab{A`c}}}Ad{}}0{AbAd}0``{{{Ab{Eh}}}Aj}{{{Ab{Ef}}}Aj}`{{{Ab{Ef}}AjAj}E`}{{{Ab{Fd}}}E`}{{{Ab{Ef}}Aj}E`}1{{{Ab{Ef}}AjAj}Ff}{{{Ab{Fd}}}Ff}{Fd{{Fb{FfFf}}}}{Aj{{Ab{c}}}{}}0{{{Ab{Fd}}}{{Ab{Ef}}}}1{Aj{{Ab{A`c}}}{}}00{{{Ab{A`Fd}}}{{Ab{A`Ef}}}}{AjAd}00{FdFd}`{{{Ab{Ef}}{Ab{Ef}}}Al}{{Ab{Ab{c}}}Al{}}0{{{Ab{A`Ef}}Aj}Ad}{{{Ab{A`Fd}}Aj}Ad}{{{Ab{A`Ef}}AjAj{Ab{E`}}Aj}{{F`{Aj}}}}{{{Ab{A`Ef}}AjAjAj}{{F`{Aj}}}}{{{Ab{Ef}}Aj}Aj}{{{Ab{A`Ef}}c}{{F`{Aj}}}{{Cn{}{{Cl{Aj}}}}}}{{{Ab{Ef}}{Ab{A`B`}}}Bb}0{cc{}}00{{EnAjAj{Ab{A`c}}}{{Fh{Ef}}}Fj}{{EnEbAj}Ef}{{En{F`{Eb}}Aj}Ef}{{En{Ab{{Dh{{F`{n}}}}}}}Ef}{{EnAj}Ef}{{{Ab{Ef}}c}{{Ab{e}}}{}{}}{{{Ab{A`Ef}}c}{{Ab{A`e}}}{}{}}{{}Aj}00{{{Ab{A`Ef}}}Ad}`{{}c{}}00{Efc{}}{{{Ab{Ef}}}c{}}{{{Ab{A`Ef}}}c{}}{FdEf}{{FdAjAjAj}Ef}{{{Ab{Ef}}}Al}{{{Ab{Eh}}}{{`{{Cn{}{{Cl{Dn}}}}}}}}{{{Ab{Ef}}}{{Fl{Eb}}}}{{{Ab{A`Eh}}}{{`{{Cn{}{{Cl{Ej}}}}}}}}{{{Ab{A`Ef}}}{{Fn{Eb}}}}{{{Ab{A`Eh}}}{{`{{G`{}{{Cl{Ej}}}}}}}}{{{Ab{A`Ef}}}{{`{{G`{}{{Cl{{Ab{A`Eb}}}}}}}}}}{{{Ab{Ef}}{Ab{Ef}}}Ef}{{{Ab{A`Ef}}n}Ad}{{EnAjAj}Ef}{{EnAj{Gb{Aj}}}Fd}{{EnAjAjAjAj}Ef}{{EnAj{Ab{{Dh{Aj}}}}AjAj}Fd}`{{{Ab{Ef}}}{{Ab{{Dh{Gd}}}}}}`{{{Ab{A`Ef}}}{{Ab{A`{Dh{Gd}}}}}}{{{Ab{Ef}}}En}{{Aj{Ab{A`c}}}{{Fh{{F`{Gd}}}}}Fj}{{{Ab{A`Eh}}Aj}Dn}{{{Ab{Ef}}Aj}Dn}{{{Ab{A`Eh}}Aj}Ej}{{{Ab{A`Ef}}Aj}Ej}{{{Ab{A`Ef}}AjAjAjEn}Ad}0{{{Ab{A`Ef}}}Aj}{{{Ab{Fd}}AjAjAj}Dn}{{{Ab{A`Fd}}AjAjAj}Ej}{{{Ab{A`Eh}}AjAj}Eh}{{{Ab{Eh}}}Aj}{{{Ab{Ef}}}Aj}{{{Ab{A`Ef}}AjAjn}Ad}{{{Ab{A`Fd}}AjAj}Eh}{{{Ab{A`Ef}}}Ad}{{{Ab{A`Ef}}AjAjAjAj}Eh}{{{Ab{A`Ef}}AjAj}{{Fb{{Ab{A`Eb}}{Ab{A`Eb}}}}}}`{{{Ab{Ef}}{Ab{A`c}}}{{Fh{Ad}}}Gf}{Abc{}}0{AbBl}{{{Ab{Ef}}}{{F`{{F`{n}}}}}}{{{Ab{A`Ef}}AjAjAj}Ad}{c{{Bn{e}}}{}{}}00{{}{{Bn{c}}}{}}00{AbC`}00``{{}c{}}00{{{Ab{{Dh{Gd}}}}{Ab{A`c}}}{{Fh{Ad}}}Gf}```{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{El}}}El}{{Ab{Ab{A`c}}}Ad{}}{AbAd}`{{}El}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{AjAd}{{{Ab{El}}{Ab{A`B`}}}Bb}{cc{}}{{}Aj}=``{Abc{}}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}{{}c{}}`{{{Ab{Ff}}EjnDn}Ad}{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{Ff}}}Ff}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{AjAd}{{{Ab{Ff}}{Ab{Ff}}}Al}{{Ab{Ab{c}}}Al{}}0{{{Ab{Ff}}{Ab{A`B`}}}Bb}{cc{}}{{En{Ab{A`c}}}{{Fh{Ff}}}Fj}`{{{Ab{Ff}}}Aj}{{}Aj}{{}c{}}{{{Bj{{F`{Gd}}}}Ef}Ff}{{{Ab{Ff}}}{{Bj{{Ab{{Dh{Gd}}}}}}}}{{{Ab{Ff}}}{{Ab{Ef}}}}`{{{Ab{Ff}}}En}6{{En{Ab{A`c}}{Ab{A`{Dh{e}}}}{Ab{{Dh{g}}}}}{{Fh{Ad}}}Fj{}{}}7{{{Ab{Ff}}{Ab{A`c}}}{{Fh{Ad}}}Gf}{Abc{}}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}:`{{{Ab{A`Gh}}Dn}Ad}{{{Ab{Gh}}}Aj}`{ce{}{}}{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{A`Gh}}}Ad}{{{Ab{Gh}}}Gh}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{{{Ab{Gh}}}{{`{{Cn{}{{Cl{Aj}}}}}}}}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}:`{AjAd}{{{Ab{Gh}}{Ab{A`B`}}}Bb}0{cc{}}{{E`E`}Gh}{{{Ab{Gh}}}{{`{{Cn{}{{Cl{Dn}}}}}}}}`{{}Aj}{{}c{}}{{{Ab{Gh}}}Al}{{EnAj}Gh}0{{{Ab{Gh}}}En}{{{Ab{A`Gh}}Dn}Ad}`{{{Ab{Gh}}}Aj}{{{Ab{Gh}}}{{Ab{{Dh{Gd}}}}}}{{{Ab{Gh}}Ej}{{F`{n}}}}{{{Ab{Gh}}Ej}Ad}{{{Ab{Ef}}{Ab{Gh}}{Ab{Gh}}}{{F`{{F`{n}}}}}}{{{Ab{A`Gh}}}Ad}5<{Abc{}}{AbBl}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}?{{{Ab{Gh}}}{{Ab{E`}}}}``{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{Gj}}}Gj}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{{}Gj}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}`{AjAd}{{{Ab{Gj}}{Ab{A`B`}}}Bb}{cc{}}{{}Aj}{{}c{}}`{Abc{}}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}4`{{{Ab{A`E`}}c}Ad{{Cn{}{{Cl{Aj}}}}}}{{{Ab{A`E`}}Dn}Aj}{{{Ab{A`E`}}c}Ad{{Gn{Ej}{{Gl{{Bj{Ad}}}}}}}}{{{Ab{E`}}}Aj}`{ce{}{}}{{{Ab{E`}}}{{Ab{{Dh{Eb}}}}}}{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{E`}}}E`}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{{{Ab{E`}}Dn}Al}{{{Ab{E`}}{Ab{E`}}}Al}{Aj{{Ab{c}}}{}}{{{Ab{E`}}}{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}<{AjAd}{{EnAj}E`}5{{Ab{Ab{c}}}Al{}}0{{{Ab{E`}}{Ab{A`B`}}}Bb}0{cc{}}{{En{Ab{A`c}}}{{Fh{E`}}}Fj}{EfE`}{{}Aj}{{}c{}}{{{Ab{E`}}}Al}{{{Ab{E`}}}{{`{{Cn{}{{Cl{Dn}}}}}}}}{{{Ab{E`}}}{{`{{Cn{}{{Cl{Eb}}}}}}}}`:{{{Ab{E`}}Ej}Ad}{{{Ab{A`E`}}}Ad}0{{{Ab{E`}}{Ab{E`}}}E`}{{{Ab{E`}}{Ab{A`c}}}{{Fh{Ad}}}Gf}{Abc{}}{AbBl}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}{{{Ab{A`E`}}e}c{}{{H`{{Ab{A`Ef}}}{{Gl{c}}}}}}=``{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{Hb}}}Hb}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{{}Hb}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}`{AjAd}{{{Ab{Hb}}{Ab{A`B`}}}Bb}{cc{}}{{}Aj}{{}c{}}`{Abc{}}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}4``````{lHd}{ln}{lAj}`{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{Hf}}}Hf}{{Ab{Ab{A`c}}}Ad{}}{AbAd}`{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{AjAd}{{{Ab{Hf}}{Ab{Hf}}}Al}{{Ab{Ab{c}}}Al{}}0{{cn}{{Fb{nn}}}l}{{{Ab{Hf}}{Ab{A`B`}}}Bb}0{cc{}}```{{}Aj}{{}c{}}{{cn}nl}{{ln}n}`{AjAj}2{{cHd}nl}2{{lnn}n}{{nnn}n}`11{lEn}{Abc{}}{AbBl}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}<`{{EnHhHh}Hh}{{HhHh}Hh}001{{EnHhHh}Al}{{EnAjAj}n}`{{En{Ab{A`{Dh{Hh}}}}}Hh}{{{Ab{{Dh{Hh}}}}}Hh}1``{Ab{{Ab{c}}}{}}0{{{Ab{A`}}}{{Ab{A`c}}}{}}0{{cAj}{{`{{Cn{}{{Cl{{F`{n}}}}}}}}}{{Hj{n}}}}{Aj{{Ab{c}}}{}}0{Aj{{Ab{A`c}}}{}}0{AjAd}0`{cc{}}0{{}Aj}0{{}c{}}000{CfHl}{AjHn}{{CfAj}Hl}{{{Ab{A`Hl}}}{{Bj{c}}}{}}{{{Ab{A`Hn}}}{{Bj{c}}}{}}{{}{{I`{c}}}{}}0`{Cf{{`{{Cn{}{{Cl{Aj}}}}}}}}{c{{Bn{e}}}{}{}}0{{}{{Bn{c}}}{}}0{AbC`}0`::`````{{Ibn}c{}}{{IbIb}c{}}{{Idn}c{}}{{IdId}c{}}{{Ifn}c{}}{{IfIf}c{}}{{IhIh}c{}}{{Ihn}c{}}{{Enn}c{}}{{EnEn}c{}}{ce{}{}}0000{IbHd}{IdHd}{IfHd}{IhHd}{EnHd}{Ab{{Ab{c}}}{}}0000{{{Ab{A`}}}{{Ab{A`c}}}{}}0000{{{Ab{Ib}}}Ib}{{{Ab{Id}}}Id}{{{Ab{If}}}If}{{{Ab{Ih}}}Ih}{{{Ab{En}}}En}{{Ab{Ab{A`c}}}Ad{}}0000{AbAd}0000{Aj{{Ab{c}}}{}}0000{Aj{{Ab{A`c}}}{}}0000{c{{Bn{Ib}}}Ij}{c{{Bn{Id}}}Ij}{c{{Bn{If}}}Ij}{c{{Bn{Ih}}}Ij}{c{{Bn{En}}}Ij}{{IbIb}c{}}{{Ibn}c{}}{{Idn}c{}}{{IdId}c{}}{{Ifn}c{}}{{IfIf}c{}}{{IhIh}c{}}{{Ihn}c{}}{{Enn}c{}}{{EnEn}c{}}{AjAd}0000{{{Ab{Ib}}{Ab{Ib}}}Al}{{{Ab{Ib}}{Ab{n}}}Al}{{{Ab{Id}}{Ab{Id}}}Al}{{{Ab{Id}}{Ab{n}}}Al}{{{Ab{If}}{Ab{If}}}Al}{{{Ab{If}}{Ab{n}}}Al}{{{Ab{Ih}}{Ab{n}}}Al}{{{Ab{Ih}}{Ab{Ih}}}Al}{{{Ab{En}}{Ab{En}}}Al}{{{Ab{En}}{Ab{n}}}Al}{{Ab{Ab{c}}}Al{}}000000000{{{Ab{Ib}}{Ab{A`B`}}}Bb}0{{{Ab{Id}}{Ab{A`B`}}}Bb}0{{{Ab{If}}{Ab{A`B`}}}Bb}0{{{Ab{Ih}}{Ab{A`B`}}}Bb}0{{{Ab{En}}{Ab{A`B`}}}Bb}0`{cc{}}0000{{{Ab{Il}}}{{Bn{Enc}}}{}}{{{Ab{Ib}}{Ab{A`c}}}AdBh}{{{Ab{Id}}{Ab{A`c}}}AdBh}{{{Ab{If}}{Ab{A`c}}}AdBh}{{{Ab{Ih}}{Ab{A`c}}}AdBh}{{{Ab{En}}{Ab{A`c}}}AdBh}{{}Aj}0000{{}c{}}0000{nAl}{{Ibn}c{}}{{IbIb}c{}}{{Idn}c{}}{{IdId}c{}}{{IfIf}c{}}{{Ifn}c{}}{{Ihn}c{}}{{IhIh}c{}}{{Enn}c{}}{{EnEn}c{}}{nEn}0`{{{Ab{Ib}}{Ab{n}}}{{Bj{In}}}}{{{Ab{Id}}{Ab{n}}}{{Bj{In}}}}{{{Ab{If}}{Ab{n}}}{{Bj{In}}}}{{{Ab{Ih}}{Ab{n}}}{{Bj{In}}}}{{{Ab{En}}{Ab{n}}}{{Bj{In}}}}?><=:;9867{{{Ab{Ib}}c}BnJ`}{{{Ab{Id}}c}BnJ`}{{{Ab{If}}c}BnJ`}{{{Ab{Ih}}c}BnJ`}{{{Ab{En}}c}BnJ`}{{IbIb}c{}}{{Ibn}c{}}{{Idn}c{}}{{IdId}c{}}{{IfIf}c{}}{{Ifn}c{}}{{Ihn}c{}}{{IhIh}c{}}{{Enn}c{}}{{EnEn}c{}}98764523019867453210{IbEn}{IdEn}{IfEn}{IhEn}{EnEn}{Abc{}}0000{AbBl}0000{c{{Bn{e}}}{}{}}{n{{Bn{IbHf}}}}1{n{{Bn{IdHf}}}}2{n{{Bn{IfHf}}}}3{n{{Bn{IhHf}}}}4{n{{Bn{EnHf}}}}{{}{{Bn{c}}}{}}0000{AbC`}0000{{}c{}}0000`````{{{Ab{A`{Dh{Cf}}}}{Ab{{Dh{Cf}}}}Aj}Ad}``{CfJb}{{CfJb}Ad}{{JbJb}Jb}```````````````````````````````````````````````````````````````````````{{{Ab{A`Eb}}{Ab{Eb}}n}Ad}{{{Ab{A`Ej}}Dnn}Ad}{{{Ab{A`Eb}}{Ab{Eb}}}Ad}{{{Ab{A`Eb}}Ajn}Ad}{{{Ab{A`Ej}}Ajn}Ad}{{{Ab{A`Eb}}{Ab{Eb}}n{Ab{A`{Dh{Eb}}}}}Al}{{{Ab{A`Ej}}Dnn{Ab{{Dh{Aj}}}}}Ad}{{{Ab{A`Eb}}{Ab{Eb}}nAj}Ad}{{{Ab{A`Ej}}AjnDnDn}Ad}{{{Ab{A`Eb}}{Ab{Eb}}n}{{Bj{Ad}}}}3{{{Ab{Eb}}}Dn}{{{Ab{Ej}}}Dn}{{{Ab{A`Eb}}}Ej}:{{{Ab{A`Ej}}Dn}Ad};{Ab{{Ab{c}}}{}}0000{{{Ab{A`}}}{{Ab{A`c}}}{}}0000{{{Ab{Eb}}}Eb}{{{Ab{Dn}}}Dn}{{Ab{Ab{A`c}}}Ad{}}0{AbAd}0{{{Ab{A`Ej}}}Ej}{{{Ab{A`Eb}}{Ab{{Dh{n}}}}}Ad}{{{Ab{Eb}}}Jd}{Aj{{Ab{c}}}{}}0000{Aj{{Ab{A`c}}}{}}0000{c{{Bn{Eb}}}Ij}{AjAd}0000{{{Ab{Eb}}Aj}n}{{{Ab{Dn}}Aj}n}{{{Ab{Eb}}{Ab{Eb}}}Al}{{Ab{Ab{c}}}Al{}}0{{{Ab{A`Eb}}Aj}Ad}{{{Ab{Eb}}}{{Bj{{Fb{Ajn}}}}}}{{{Ab{Eb}}{Ab{A`B`}}}Bb}0{{{Ab{Dn}}{Ab{A`B`}}}Bb}0{{{Ab{Ej}}{Ab{A`B`}}}Bb}{{{Dj{{Db{En}}}}}Eb}{cc{}}{{{Dj{{Db{Ib}}}}}Eb}{{{Dj{{Db{Id}}}}}Eb}{{{Dj{{Db{If}}}}}Eb}{{{Dj{{Db{Ih}}}}}Eb}{{{Ab{Eb}}}Dn}5{{{Ab{Ej}}}Dn}{{{Ab{Dn}}}Dn}7{{{Ab{A`Eb}}}Ej}{{{Ab{A`Ej}}}Ej}99{{cAj{Ab{A`e}}}{{Fh{Eb}}}lFj}{{c{Ab{{Dh{n}}}}}Ebl}{{{Ab{Eb}}{Ab{A`c}}}AdBh}`{{}Aj}0000{{}c{}}0000{{{Ab{Eb}}}c{}}11{{{Ab{Eb}}}Al}{{{Ab{Dn}}}Al}10{{{Ab{Eb}}}Jf}{DnJf}{{{Ab{Eb}}}Jh}{DnJh}{{{Ab{Eb}}}Aj}{{{Ab{Dn}}}Aj}{{{Ab{Eb}}}{{Ab{{Dh{Cf}}}}}}{{{Ab{A`Eb}}}{{Ab{A`{Dh{Cf}}}}}}`{{}{{Fb{ce}}}{}{}}{{cAj}Ebl}{{cAjAj}Ebl}{{{Ab{A`Jf}}}{{Bj{n}}}}{{{Ab{A`Jh}}}{{Bj{{Fb{Ajn}}}}}}{{EnAj}Aj}0{{{Ab{Eb}}}En}{{{Ab{Dn}}}En}{{{Ab{Ej}}}En}{{{Ab{A`Eb}}n}Ad}{{{Ab{A`Ej}}n}Ad}{{{Ab{Eb}}c}BnJ`}{{{Ab{A`Eb}}Ajn}Ad}{{{Ab{A`Ej}}Ajn}Ad}{{{Ab{A`Eb}}Aj}Ad}{{{Ab{A`Eb}}}Ad}{{{Ab{A`Ej}}}Ad}{{{Ab{Eb}}{Ab{Eb}}}Al}{{{Ab{A`Jf}}Aj}Ad}{{{Ab{Eb}}AjAj}Dn}{{DnAjAj}Dn}{{{Ab{A`Eb}}AjAj}Ej}{{{Ab{A`Ej}}AjAj}Ej}{{{Ab{Eb}}{Ab{A`c}}}{{Fh{Ad}}}Gf}{Abc{}}{DnEb}1{AbBl}0<{c{{Bn{e}}}{}{}}0000{{{Ab{A`Eb}}}{{Bn{{Ab{A`{Dj{{Db{If}}}}}}c}}}{}}{{{Ab{A`Eb}}}{{Bn{{Ab{A`{Dj{{Db{Ih}}}}}}c}}}{}}{{{Ab{A`Eb}}}{{Bn{{Ab{A`{Dj{{Db{En}}}}}}c}}}{}}{{{Ab{A`Eb}}}{{Bn{{Ab{A`{Dj{{Db{Id}}}}}}c}}}{}}{{{Ab{A`Eb}}}{{Bn{{Ab{A`{Dj{{Db{Ib}}}}}}c}}}{}}{{}{{Bn{c}}}{}}0000{AbC`}0000{{{Ab{A`Eb}}{Ab{A`c}}}{{Fh{Ad}}}Fj}{{}c{}}0000```````````{Ab{{Ab{c}}}{}}{{{Ab{A`}}}{{Ab{A`c}}}{}}{{{Ab{{Jj{c}}}}}{{Jj{c}}}Af}{{Ab{Ab{A`c}}}Ad{}}{AbAd}{{}{{Jj{c}}}{}}{Aj{{Ab{c}}}{}}{Aj{{Ab{A`c}}}{}}{AjAd}{{{Ab{{Jj{c}}}}{Ab{A`B`}}}BbBd}`{cc{}}{{}Aj}<`{Abc{}}{c{{Bn{e}}}{}{}}{{}{{Bn{c}}}{}}{AbC`}{{}c{}}```{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}{h{c}}}Add}{{{Ab{A`{Jl{c}}}}{Jn{c}}{h{c}}}Add}{{{Ab{A`{Dj{c}}}}Aj{h{c}}}Add}{{{Ab{A`{Jl{c}}}}Aj{h{c}}}Add}{{{Ab{A`{Dj{c}}}}Aj}Add}{{{Ab{A`{Jl{c}}}}Aj}Add}{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}{h{c}}{Ab{A`{Dh{e}}}}}Ald{}}{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}{Ab{A`{Dh{e}}}}}Ald{}}{{{Ab{A`{Dj{c}}}}AjCf{h{c}}{Ab{A`{Dh{e}}}}}Ald{}}{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}}Add}{{{Ab{A`{Jl{c}}}}{Jn{c}}}Add}{{{Ab{A`{Jl{c}}}}{Jn{c}}{h{c}}{Ab{{Dh{Aj}}}}}Add}{{{Ab{A`{Jl{c}}}}{Jn{c}}{Ab{{Dh{Aj}}}}}Add}{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}{h{c}}Aj}Add}{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}Aj}Add}==={{{Ab{A`{Jl{c}}}}Aj{h{c}}{Jn{c}}{Jn{c}}}Add}{{{Ab{A`{Jl{c}}}}Aj{Jn{c}}{Jn{c}}}Add}{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}{h{c}}}{{Bj{Ad}}}d}{{{Ab{A`{Dj{c}}}}{Ab{{Dj{c}}}}}{{Bj{Ad}}}d}76{ce{}{}}{{{Ab{{Dj{c}}}}}{{Jn{c}}}d}{{{Ab{{Jl{c}}}}}{{Jn{c}}}d}{{{Ab{A`{Dj{c}}}}}{{Jl{c}}}d}=<={Ab{{Ab{c}}}{}}00{{{Ab{A`}}}{{Ab{A`c}}}{}}00{{{Ab{{Dj{c}}}}}{{Dj{c}}}{Afd}}{{{Ab{{Jn{c}}}}}{{Jn{c}}}{Afd}}{{Ab{Ab{A`c}}}Ad{}}0{AbAd}0{{{Ab{A`{Jl{c}}}}}{{Jl{c}}}d}{{{Ab{A`{Dj{c}}}}{Ab{{Dh{{h{c}}}}}}}Add}{{{Ab{A`{Dj{c}}}}{Ab{Dh}}}Add}{{{Ab{{Dj{c}}}}}Jdd}{Aj{{Ab{c}}}{}}00{Aj{{Ab{A`c}}}{}}00{AjAd}00``{{{Ab{{Dj{c}}}}Aj}{{h{c}}}d}{{{Ab{{Jn{c}}}}Aj}{{h{c}}}d}{{{Ab{{Dj{c}}}}Aj}{}d}{{{Ab{{Jn{c}}}}Aj}{}d}{{{Ab{{Dj{c}}}}{Ab{{Dj{c}}}}}Al{And}}{{Ab{Ab{c}}}Al{}}0{{{Ab{A`{Dj{c}}}}Aj}Add}{{{Ab{{Dj{c}}}}}{{Bj{{Fb{Aj{h{c}}}}}}}d}{{{Ab{{Dj{c}}}}}{{Bj{{Fb{Aj}}}}}d}{{{Ab{{Dj{c}}}}{Ab{A`B`}}}Bbd}{{{Ab{{Dj{c}}}}{Ab{A`B`}}}Bb{Bdd}}{{{Ab{{Jn{c}}}}{Ab{A`B`}}}Bb{Bdd}}{{{Ab{{Jn{c}}}}{Ab{A`B`}}}Bbd}{{{Ab{{Jl{c}}}}{Ab{A`B`}}}Bb{Bdd}}{{{Ab{{Dj{c}}}}}cd}```{cc{}}{{{Fb{ce}}}{{Dj{c}}}d{{K`{{Dh{{h{c}}}}}}}}{{{Ab{{Dj{c}}}}}{{Jn{c}}}d}22{{{Ab{A`{Dj{c}}}}}{{Jl{c}}}d}{{cAj{Ab{A`e}}}{{Fh{{Dj{c}}}}}dFj}{{cAj{F`{Cf}}}{{Dj{c}}}d}{{c{Ab{{Dh{{h{c}}}}}}}{{Dj{c}}}d}{{{Ab{{Dj{c}}}}{Ab{A`e}}}Ad{Bfd}Bh}{{}Aj}00{{}c{}}00{{{Ab{{Dj{c}}}}}Ald}{{{Ab{{Jn{c}}}}}Ald}10{{{Ab{{Dj{c}}}}}{{Kb{c}}}d}{{{Jn{c}}}{{Kb{c}}}d}{{{Ab{{Dj{c}}}}}{{Kd{c}}}d}{{{Jn{c}}}{{Kd{c}}}d}{{{Ab{{Dj{c}}}}}Ajd}{{{Ab{{Jn{c}}}}}Ajd}`{{{Ab{{Jn{c}}}}}{{Fb{CfCf}}}d}{{{Ab{{Jn{c}}}}}{{D`{Aj}}}d}0{{{Ab{{Dj{c}}}}}{{Ab{{Dh{Cf}}}}}d}```{{{Ab{A`{Dj{c}}}}}{{Ab{A`{Dh{Cf}}}}}d}{{{Ab{{Jn{c}}}}}Cfd}0{{cAj}{{Dj{c}}}d}{{cAjAj}{{Dj{c}}}d}7{{{Ab{{Dj{c}}}}}End}{{{Ab{{Jn{c}}}}}End}{{{Ab{{Jl{c}}}}}End}{{{Ab{A`{Jl{c}}}}}Add}{{{Ab{A`{Dj{c}}}}{h{c}}}Add}{{{Ab{A`{Jl{c}}}}{h{c}}}Add}{{{Ab{A`{Dj{c}}}}}Add}3{{{Ab{A`{Dj{c}}}}Aj{h{c}}}Add}{{{Ab{A`{Jl{c}}}}Aj{h{c}}}Add}{{{Ab{A`{Dj{c}}}}Aj}Add}{{{Ab{A`{Jl{c}}}}Aj}Add}147{{{Ab{{Dj{c}}}}{Ab{{Dj{c}}}}}Ald}{{{Ab{{Dj{c}}}}AjAj}{{Jn{c}}}d}{{{Jn{c}}AjAj}{{Jn{c}}}d}{{{Ab{A`{Dj{c}}}}AjAj}{{Jl{c}}}d}{{{Ab{A`{Jl{c}}}}AjAj}{{Jl{c}}}d}``{{{Ab{{Dj{c}}}}{Ab{A`e}}}{{Fh{Ad}}}dGf}{Abc{}}{{{Jn{c}}}{{Dj{c}}}d}1{AbBl}0:{c{{Bn{e}}}{}{}}00{{}{{Bn{c}}}{}}00{AbC`}00{{{Ab{A`{Dj{c}}}}{Ab{A`e}}}{{Fh{Ad}}}dFj}{{}c{}}00````{Ab{{Ab{c}}}{}}0{{{Ab{A`}}}{{Ab{A`c}}}{}}0````{Aj{{Ab{c}}}{}}0{Aj{{Ab{A`c}}}{}}0`{AjAd}0````{cc{}}0`{{}Aj}07777{{{Ab{{Kb{c}}}}}Ajd}````{{}{{Fb{ce}}}{}{}}{{{Jn{c}}}{{Kb{c}}}d}{{{Jn{c}}}{{Kd{c}}}d}{{{Ab{A`{Kb{c}}}}}{{Bj{e}}}d{}}{{{Ab{A`{Kd{c}}}}}{{Bj{e}}}d{}}{{{Ab{A`{Kb{c}}}}}Bjd}{{{Ab{A`{Kd{c}}}}}{{Bj{{Fb{Aj}}}}}d}{{{Ab{A`{Kb{c}}}}Aj}Add}{c{{Bn{e}}}{}{}}0{{}{{Bn{c}}}{}}0{AbC`}0{{}c{}}0","D":"AM`","p":[[17,"Characteristic"],[10,"Field",28],[17,"Value"],[5,"FieldElement",42],[10,"Strategy",1561],[10,"Prime",729],[1,"u32"],[0,"mut"],[1,"reference"],[1,"unit"],[10,"Clone",1562],[10,"FieldInternal",84],[1,"usize"],[1,"bool"],[10,"PartialEq",1563],[5,"Formatter",1564],[8,"Result",1564],[10,"Debug",1564],[10,"Hash",1565],[10,"Hasher",1565],[6,"Option",1566],[5,"String",1567],[6,"Result",1568],[5,"TypeId",1569],[17,"ElementContainer"],[10,"FieldElementContainer",42],[1,"u64"],[5,"LimbBitIndexPair",264],[5,"LimbIterator",84],[17,"Item"],[10,"Iterator",1570],[5,"Range",1571],[5,"Fp",132],[5,"SmallFq",180],[5,"SmallFqElement",180],[1,"slice"],[5,"FqVector",1346],[5,"AffineSubspace",317],[6,"FpSlice",1119],[5,"Subspace",659],[6,"FpVector",1119],[5,"M4riTable",362],[5,"Matrix",390],[5,"MatrixSliceMut",390],[6,"FpSliceMut",1119],[5,"MatrixArbParams",533],[5,"ValidPrime",831],[5,"Vec",1572],[1,"tuple"],[5,"AugmentedMatrix",390],[5,"QuasiInverse",557],[8,"Result",1573],[10,"Read",1574],[5,"Iter",1575],[5,"IterMut",1575],[10,"MaybeIndexedParallelIterator",1576],[1,"array"],[1,"isize"],[10,"Write",1574],[5,"Subquotient",591],[5,"SubquotientArbParams",637],[17,"Output"],[10,"FnMut",1577],[10,"FnOnce",1577],[5,"SubspaceArbParams",707],[1,"i32"],[6,"PrimeError",729],[10,"Binomial",779],[10,"Into",1578],[5,"BitflagIterator",791],[5,"BinomialIterator",791],[5,"IterBridge",1579],[5,"P2",831],[5,"P3",831],[5,"P5",831],[5,"P7",831],[10,"Deserializer",1580],[1,"str"],[6,"Ordering",1563],[10,"Serializer",1581],[5,"__m128i",1582],[1,"f32"],[6,"FpVectorIterator",1119],[6,"FpVectorNonZeroIterator",1119],[5,"FqVectorArbParams",1324],[5,"FqSliceMut",1346],[5,"FqSlice",1346],[10,"AsRef",1578],[5,"FqVectorIterator",1508],[5,"FqVectorNonZeroIterator",1508],[8,"Polynomial",180]],"r":[[0,14],[2,14],[4,14],[5,14],[30,132],[31,180],[132,1067],[133,1067],[134,1067],[135,1067],[285,317],[286,390],[287,390],[288,390],[289,557],[290,591],[291,659],[349,533],[351,533],[352,533],[353,637],[354,707],[729,779],[1083,1119],[1084,1119],[1085,1119],[1086,1119],[1087,1119],[1108,1323],[1115,1324],[1116,1324]],"b":[[61,"impl-Debug-for-FieldElement%3CF%3E"],[62,"impl-Display-for-FieldElement%3CF%3E"],[221,"impl-Debug-for-SmallFq%3CP%3E"],[222,"impl-Display-for-SmallFq%3CP%3E"],[223,"impl-Debug-for-SmallFqElement"],[224,"impl-Display-for-SmallFqElement"],[331,"impl-Display-for-AffineSubspace"],[332,"impl-Debug-for-AffineSubspace"],[450,"impl-Display-for-Matrix"],[451,"impl-Debug-for-Matrix"],[470,"impl-IntoIterator-for-Matrix"],[471,"impl-IntoIterator-for-%26Matrix"],[472,"impl-IntoIterator-for-%26mut+Matrix"],[608,"impl-Display-for-Subquotient"],[609,"impl-Debug-for-Subquotient"],[683,"impl-Debug-for-Subspace"],[684,"impl-Display-for-Subspace"],[752,"impl-Display-for-PrimeError"],[753,"impl-Debug-for-PrimeError"],[836,"impl-Add%3Cu32%3E-for-P2"],[837,"impl-Add-for-P2"],[838,"impl-Add%3Cu32%3E-for-P3"],[839,"impl-Add-for-P3"],[840,"impl-Add%3Cu32%3E-for-P5"],[841,"impl-Add-for-P5"],[842,"impl-Add-for-P7"],[843,"impl-Add%3Cu32%3E-for-P7"],[844,"impl-Add%3Cu32%3E-for-ValidPrime"],[845,"impl-Add-for-ValidPrime"],[896,"impl-Div-for-P2"],[897,"impl-Div%3Cu32%3E-for-P2"],[898,"impl-Div%3Cu32%3E-for-P3"],[899,"impl-Div-for-P3"],[900,"impl-Div%3Cu32%3E-for-P5"],[901,"impl-Div-for-P5"],[902,"impl-Div-for-P7"],[903,"impl-Div%3Cu32%3E-for-P7"],[904,"impl-Div%3Cu32%3E-for-ValidPrime"],[905,"impl-Div-for-ValidPrime"],[911,"impl-PartialEq-for-P2"],[912,"impl-PartialEq%3Cu32%3E-for-P2"],[913,"impl-PartialEq-for-P3"],[914,"impl-PartialEq%3Cu32%3E-for-P3"],[915,"impl-PartialEq-for-P5"],[916,"impl-PartialEq%3Cu32%3E-for-P5"],[917,"impl-PartialEq%3Cu32%3E-for-P7"],[918,"impl-PartialEq-for-P7"],[919,"impl-PartialEq-for-ValidPrime"],[920,"impl-PartialEq%3Cu32%3E-for-ValidPrime"],[931,"impl-Display-for-P2"],[932,"impl-Debug-for-P2"],[933,"impl-Display-for-P3"],[934,"impl-Debug-for-P3"],[935,"impl-Display-for-P5"],[936,"impl-Debug-for-P5"],[937,"impl-Debug-for-P7"],[938,"impl-Display-for-P7"],[939,"impl-Debug-for-ValidPrime"],[940,"impl-Display-for-ValidPrime"],[964,"impl-Mul%3Cu32%3E-for-P2"],[965,"impl-Mul-for-P2"],[966,"impl-Mul%3Cu32%3E-for-P3"],[967,"impl-Mul-for-P3"],[968,"impl-Mul-for-P5"],[969,"impl-Mul%3Cu32%3E-for-P5"],[970,"impl-Mul%3Cu32%3E-for-P7"],[971,"impl-Mul-for-P7"],[972,"impl-Mul%3Cu32%3E-for-ValidPrime"],[973,"impl-Mul-for-ValidPrime"],[982,"impl-Rem%3Cu32%3E-for-P2"],[983,"impl-Rem-for-P2"],[984,"impl-Rem-for-P3"],[985,"impl-Rem%3Cu32%3E-for-P3"],[986,"impl-Rem%3Cu32%3E-for-P5"],[987,"impl-Rem-for-P5"],[988,"impl-Rem%3Cu32%3E-for-P7"],[989,"impl-Rem-for-P7"],[990,"impl-Rem-for-ValidPrime"],[991,"impl-Rem%3Cu32%3E-for-ValidPrime"],[997,"impl-Shl-for-P2"],[998,"impl-Shl%3Cu32%3E-for-P2"],[999,"impl-Shl%3Cu32%3E-for-P3"],[1000,"impl-Shl-for-P3"],[1001,"impl-Shl-for-P5"],[1002,"impl-Shl%3Cu32%3E-for-P5"],[1003,"impl-Shl%3Cu32%3E-for-P7"],[1004,"impl-Shl-for-P7"],[1005,"impl-Shl%3Cu32%3E-for-ValidPrime"],[1006,"impl-Shl-for-ValidPrime"],[1007,"impl-Shr-for-P2"],[1008,"impl-Shr%3Cu32%3E-for-P2"],[1009,"impl-Shr%3Cu32%3E-for-P3"],[1010,"impl-Shr-for-P3"],[1011,"impl-Shr%3Cu32%3E-for-P5"],[1012,"impl-Shr-for-P5"],[1013,"impl-Shr-for-P7"],[1014,"impl-Shr%3Cu32%3E-for-P7"],[1015,"impl-Shr-for-ValidPrime"],[1016,"impl-Shr%3Cu32%3E-for-ValidPrime"],[1017,"impl-Sub-for-P2"],[1018,"impl-Sub%3Cu32%3E-for-P2"],[1019,"impl-Sub-for-P3"],[1020,"impl-Sub%3Cu32%3E-for-P3"],[1021,"impl-Sub%3Cu32%3E-for-P5"],[1022,"impl-Sub-for-P5"],[1023,"impl-Sub%3Cu32%3E-for-P7"],[1024,"impl-Sub-for-P7"],[1025,"impl-Sub%3Cu32%3E-for-ValidPrime"],[1026,"impl-Sub-for-ValidPrime"],[1208,"impl-Display-for-FpVector"],[1209,"impl-Debug-for-FpVector"],[1210,"impl-Debug-for-FpSlice%3C\'a%3E"],[1211,"impl-Display-for-FpSlice%3C\'_%3E"],[1213,"impl-From%3CFqVector%3CFp%3CValidPrime%3E%3E%3E-for-FpVector"],[1215,"impl-From%3CFqVector%3CFp%3CP2%3E%3E%3E-for-FpVector"],[1216,"impl-From%3CFqVector%3CFp%3CP3%3E%3E%3E-for-FpVector"],[1217,"impl-From%3CFqVector%3CFp%3CP5%3E%3E%3E-for-FpVector"],[1218,"impl-From%3CFqVector%3CFp%3CP7%3E%3E%3E-for-FpVector"],[1219,"impl-From%3C%26FpVector%3E-for-FpSlice%3C\'a%3E"],[1221,"impl-From%3C%26FpSliceMut%3C\'b%3E%3E-for-FpSlice%3C\'a%3E"],[1222,"impl-From%3C%26FpSlice%3C\'b%3E%3E-for-FpSlice%3C\'a%3E"],[1224,"impl-From%3C%26mut+FpVector%3E-for-FpSliceMut%3C\'a%3E"],[1225,"impl-From%3C%26mut+FpSliceMut%3C\'b%3E%3E-for-FpSliceMut%3C\'a%3E"],[1294,"impl-TryInto%3C%26mut+FqVector%3CFp%3CP5%3E%3E%3E-for-%26mut+FpVector"],[1295,"impl-TryInto%3C%26mut+FqVector%3CFp%3CP7%3E%3E%3E-for-%26mut+FpVector"],[1296,"impl-TryInto%3C%26mut+FqVector%3CFp%3CValidPrime%3E%3E%3E-for-%26mut+FpVector"],[1297,"impl-TryInto%3C%26mut+FqVector%3CFp%3CP3%3E%3E%3E-for-%26mut+FpVector"],[1298,"impl-TryInto%3C%26mut+FqVector%3CFp%3CP2%3E%3E%3E-for-%26mut+FpVector"],[1417,"impl-Display-for-FqVector%3CF%3E"],[1418,"impl-Debug-for-FqVector%3CF%3E"],[1419,"impl-Debug-for-FqSlice%3C\'a,+F%3E"],[1420,"impl-Display-for-FqSlice%3C\'_,+F%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADEFjgAAAAIABAAAAAcACgAUAAIAHAAOAC0AEwBCAAIARgADAEsACQBXAAIAWwABAF4AAQBhAAMAZwAAAGoAAQBtAAAAbwABAHIABgB9AAEAgAACAIQABACKABgApAACAKgABQCvAAcAugAAALwAGQDXAAwA5gADAOwABgD0ABIACAEAAAoBCQAVAQAAFwEHACEBAAAjAQAAJQEPADYBFQBNAQEAUAEAAFIBGABtAQEAcgEEAHkBAAB/AQEAgwEDAIkBAgCOAQEAkQECAJUBDgClAQAApwEAAKkBAACrAQAArQERAMQBAADIAQAAzAEAAM8BAgDTAQAA1wENAOYBBADsAQEA7wEDAPYBAwD8AQIAAAIUABYCDQAlAgAAJwIGADACCwA9AgMAQgIFAEkCEQBcAgYAZQICAGkCAABsAgQAcwIAAHcCEwCMAgAAjgIFAJUCAACYAgIAnAIQAK8CAACxAgAAtAIAALYCAQC7AgYAwwINANICAADUAggA3gIRAPECAQD0AgMA+QICAP4CAgACAwAABQMGABQDAAAZAwQAHwMGACgDAQAsAyYAVANaALQDCgDEA5EAVwRkAL0EAQDABAQAxgQBAMkEAQDNBAIA0QQEANsESAAlBQUALAUNADsFAAA9BQUARgUKAFIFAABUBQEAVwUAAFkFAgBdBQUAZQULAHMFEwCJBQMAjgUEAJQFAQCYBQcAowUEAKkFBgCxBRUAyAUKANQFAgDYBQ0A5wUUAP4FAgADBhYA"}],["lift_hom",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["mahowald_invariant",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["massey",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["maybe_rayon",{"t":"CIHHCHKKRKKIKKKNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNNNNNMNMNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNN","n":["concurrent","Scope","in_place_scope","join","prelude","scope","IndexedParallelIterator","IntoMaybeParallelIterator","Item","MaybeIndexedParallelIterator","MaybeIntoParallelRefMutIterator","MaybeIterBridge","MaybeParallelBridge","MaybeParallelIterator","ParallelIterator","all","any","by_exponential_blocks","by_uniform_blocks","chain","chunks","cloned","cmp","collect","collect_into_vec","collect_vec_list","copied","count","drive","drive_unindexed","enumerate","eq","filter","filter_map","find_any","find_first","find_last","find_map_any","find_map_first","find_map_last","flat_map","flat_map_iter","flatten","flatten_iter","fold","fold_chunks","fold_chunks_with","fold_with","for_each","for_each_init","for_each_with","ge","gt","inspect","interleave","interleave_shortest","intersperse","into_maybe_par_iter","le","len","lt","map","map_init","map_with","max","max_by","max_by_key","maybe_par_bridge","maybe_par_iter_mut","min","min_by","min_by_key","ne","opt_len","panic_fuse","partial_cmp","partition","partition_map","position_any","position_first","position_last","positions","product","reduce","reduce_with","rev","skip","skip_any","skip_any_while","step_by","sum","take","take_any","take_any_while","try_fold","try_fold_with","try_for_each","try_for_each_init","try_for_each_with","try_reduce","try_reduce_with","unzip","unzip_into_vecs","update","while_some","with_max_len","with_min_len","with_producer","zip","zip_eq"],"q":[[0,"maybe_rayon"],[1,"maybe_rayon::concurrent"],[6,"maybe_rayon::concurrent::prelude"],[110,"core::ops::function"],[111,"core::marker"],[112,"rayon::iter"],[113,"rayon::iter::blocks"],[114,"rayon::iter::chain"],[115,"rayon::iter::chunks"],[116,"rayon::iter::cloned"],[117,"core::cmp"],[118,"alloc::vec"],[119,"alloc::collections::linked_list"],[120,"rayon::iter::copied"],[121,"rayon::iter::plumbing"],[122,"rayon::iter::enumerate"],[123,"rayon::iter::filter"],[124,"rayon::iter::filter_map"],[125,"core::option"],[126,"rayon::iter::flat_map"],[127,"rayon::iter::flat_map_iter"],[128,"core::iter::traits::collect"],[129,"rayon::iter::flatten"],[130,"rayon::iter::flatten_iter"],[131,"rayon::iter::fold"],[132,"rayon::iter::fold_chunks"],[133,"rayon::iter::fold_chunks_with"],[134,"core::clone"],[135,"rayon::iter::inspect"],[136,"rayon::iter::interleave"],[137,"rayon::iter::interleave_shortest"],[138,"rayon::iter::intersperse"],[139,"rayon::iter::map"],[140,"rayon::iter::map_with"],[141,"rayon::iter::panic_fuse"],[142,"core::default"],[143,"either"],[144,"rayon::iter::positions"],[145,"core::iter::traits::accum"],[146,"rayon::iter::rev"],[147,"rayon::iter::skip"],[148,"rayon::iter::skip_any"],[149,"rayon::iter::skip_any_while"],[150,"rayon::iter::step_by"],[151,"rayon::iter::take"],[152,"rayon::iter::take_any"],[153,"rayon::iter::take_any_while"],[154,"rayon::iter::try_fold"],[155,"rayon::iter::private"],[156,"rayon::iter::update"],[157,"rayon::iter::while_some"],[158,"rayon::iter::len"],[159,"rayon::iter::zip"],[160,"rayon::iter::zip_eq"]],"i":"````````A```````00Ah010101011101001111111111111001111001001En111222222FhFl44434434433334443344343444444444434433333","f":"``{ec{}{{h{{d{b}}}{{f{c}}}}}}{{ei}{{j{cg}}}l{{h{}{{f{c}}}}l}l{{h{}{{f{g}}}}l}}`{ecl{{h{{d{b}}}{{f{c}}}}l}}`````````{{{A`{}{{n{c}}}}e}Abl{{Ad{c}{{f{Ab}}}}Afl}}0{Ah{{Aj{Ah}}}}{{AhAl}{{An{Ah}}}}{{{A`{}{{n{c}}}}e}{{B`{{A`{}{{n{c}}}}}}}l{{Bb{}{{n{c}}}}}}{{AhAl}{{Bd{Ah}}}}{{{A`{}{{n{c}}}}}{{Bf{{A`{}{{n{c}}}}}}}l}{{Ahe}Bh{}{{Bb{}{{n{c}}}}}}{{{A`{}{{n{c}}}}}el{{Bj{c}}}}{{Ah{d{Bl{Bn{c}}}}}C`{}}{{{A`{}{{n{c}}}}}{{Cb{{Bn{c}}}}}l}{{{A`{}{{n{c}}}}}{{Cd{{A`{}{{n{c}}}}}}}l}{{{A`{}{{n{c}}}}}All}{{Ahe}{}{}{{Cf{c}}}}{{{A`{}{{n{c}}}}e}{}l{{Ch{c}}}}{Ah{{Cj{Ah}}}}{{Ahc}AbBb}{{{A`{}{{n{c}}}}e}{{Cl{{A`{}{{n{c}}}}e}}}l{{Ad{{d{c}}}{{f{Ab}}}}Afl}}{{{A`{}{{n{c}}}}g}{{Cn{{A`{}{{n{c}}}}g}}}ll{{Ad{c}{{f{{D`{e}}}}}}Afl}}{{{A`{}{{n{c}}}}e}{{D`{c}}}l{{Ad{{d{c}}}{{f{Ab}}}}Afl}}00{{{A`{}{{n{c}}}}g}{{D`{e}}}ll{{Ad{c}{{f{{D`{e}}}}}}Afl}}00{{{A`{}{{n{c}}}}g}{{Db{{A`{}{{n{c}}}}g}}}lBb{{Ad{c}{{f{e}}}}Afl}}{{{A`{}{{n{c}}}}g}{{Dd{{A`{}{{n{c}}}}g}}}lDf{{Ad{c}{{f{e}}}}Afl}}{{{A`{}{{n{c}}}}}{{Dh{{A`{}{{n{c}}}}}}}l}{{{A`{}{{n{c}}}}}{{Dj{{A`{}{{n{c}}}}}}}l}{{{A`{}{{n{c}}}}gi}{{Dl{{A`{}{{n{c}}}}gi}}}ll{{Ad{}{{f{e}}}}Afl}{{Ad{ec}{{f{e}}}}Afl}}{{AhAlei}{{Dn{Ahei}}}l{{Ad{}{{f{c}}}}lAf}{}{{Ad{cg}{{f{c}}}}lAf}}{{AhAlcg}{{E`{Ahcg}}}{lEb}{}{{Ad{ce}{{f{c}}}}lAf}}{{{A`{}{{n{c}}}}eg}{{Ed{{A`{}{{n{c}}}}eg}}}l{lEb}{{Ad{ec}{{f{e}}}}Afl}}{{{A`{}{{n{c}}}}e}C`l{{Ad{c}}Afl}}{{{A`{}{{n{c}}}}gi}C`l{}{{Ad{}{{f{e}}}}Afl}{{Ad{{d{Ble}}c}}Afl}}{{{A`{}{{n{c}}}}eg}C`l{lEb}{{Ad{{d{Ble}}c}}Afl}}??{{{A`{}{{n{c}}}}e}{{Ef{{A`{}{{n{c}}}}e}}}l{{Ad{{d{c}}}}Afl}}{{Ahe}{{Eh{Ah}}}{}{{Bb{}{{n{c}}}}}}{{Ahe}{{Ej{Ah}}}{}{{Bb{}{{n{c}}}}}}{{{A`{}{{n{c}}}}c}{{El{{A`{}{{n{c}}}}}}}l}{Enc{}}{{Ahc}AbBb}{{{d{Ah}}}Al}1{{{A`{}{{n{c}}}}g}{{F`{{A`{}{{n{c}}}}g}}}ll{{Ad{c}{{f{e}}}}Afl}}{{{A`{}{{n{c}}}}gk}{{Fb{{A`{}{{n{c}}}}gk}}}l{}{{Ad{}{{f{e}}}}Afl}l{{Ad{{d{Ble}}c}{{f{i}}}}Afl}}{{{A`{}{{n{c}}}}ei}{{Fd{{A`{}{{n{c}}}}ei}}}l{lEb}l{{Ad{{d{Ble}}c}{{f{g}}}}Afl}}{{{A`{}{{n{c}}}}}{{D`{c}}}l}{{{A`{}{{n{c}}}}e}{{D`{c}}}l{Afl{Ad{{d{c}}{d{c}}}{{f{Bh}}}}}}{{{A`{}{{n{c}}}}g}{{D`{c}}}l{Ffl}{Afl{Ad{{d{c}}}{{f{e}}}}}}{Fh{{Fj{Fh}}}}{{{d{BlFl}}}c{}}4329{{{d{{A`{}{{n{c}}}}}}}{{D`{Al}}}l}{{{A`{}{{n{c}}}}}{{Fn{{A`{}{{n{c}}}}}}}l}{{Ahc}{{D`{Bh}}}Bb}{{{A`{}{{n{c}}}}e}{{j{gi}}}l{{Ad{{d{c}}}{{f{Ab}}}}Afl}{G`l{Gb{c}}}{G`l{Gb{c}}}}{{{A`{}{{n{c}}}}i}{{j{km}}}lll{{Ad{c}{{f{{Gd{eg}}}}}}Afl}{G`l{Gb{e}}}{G`l{Gb{g}}}}{{Ahe}{{D`{Al}}}{}{{Ad{c}{{f{Ab}}}}Afl}}00{{Ahe}{{Gf{Ahe}}}{}{{Ad{c}{{f{Ab}}}}Afl}}{{{A`{}{{n{c}}}}}el{l{Gh{c}}Gh}}{{{A`{}{{n{c}}}}eg}cl{{Ad{}{{f{c}}}}Afl}{{Ad{cc}{{f{c}}}}Afl}}{{{A`{}{{n{c}}}}e}{{D`{c}}}l{{Ad{cc}{{f{c}}}}Afl}}{Ah{{Gj{Ah}}}}{{AhAl}{{Gl{Ah}}}}{{{A`{}{{n{c}}}}Al}{{Gn{{A`{}{{n{c}}}}}}}l}{{{A`{}{{n{c}}}}e}{{H`{{A`{}{{n{c}}}}e}}}l{{Ad{{d{c}}}{{f{Ab}}}}Afl}}{{AhAl}{{Hb{Ah}}}}{{{A`{}{{n{c}}}}}el{l{Hd{c}}Hd}}{{AhAl}{{Hf{Ah}}}}{{{A`{}{{n{c}}}}Al}{{Hh{{A`{}{{n{c}}}}}}}l}{{{A`{}{{n{c}}}}e}{{Hj{{A`{}{{n{c}}}}e}}}l{{Ad{{d{c}}}{{f{Ab}}}}Afl}}{{{A`{}{{n{c}}}}gk}{{Hl{{A`{}{{n{c}}}}igk}}}l{}{{Ad{}{{f{e}}}}Afl}{{Hn{}{{f{e}}}}l}{{Ad{ec}{{f{i}}}}Afl}}{{{A`{}{{n{c}}}}ei}{{I`{{A`{}{{n{c}}}}gi}}}l{Ebl}{{Hn{}{{f{e}}}}l}{{Ad{ec}{{f{g}}}}Afl}}{{{A`{}{{n{c}}}}g}el{{Hn{}{{f{C`}}}}l}{{Ad{c}{{f{e}}}}Afl}}{{{A`{}{{n{c}}}}gk}il{}{{Ad{}{{f{e}}}}Afl}{{Hn{}{{f{C`}}}}l}{{Ad{{d{Ble}}c}{{f{i}}}}Afl}}{{{A`{}{{n{c}}}}ei}gl{lEb}{{Hn{}{{f{C`}}}}l}{{Ad{{d{Ble}}c}{{f{g}}}}Afl}}{{{A`{}{{n{c}}}}gi}cl{}{{Ad{}{{f{e}}}}Afl}{{Ad{ee}{{f{c}}}}Afl}}{{{A`{}{{n{c}}}}g}{{D`{c}}}l{}{{Ad{ee}{{f{c}}}}Afl}}{{{A`{}{{n{c}}}}}{{j{gk}}}ll{G`l{Gb{e}}}l{G`l{Gb{i}}}}{{Ah{d{Bl{Bn{c}}}}{d{Bl{Bn{e}}}}}C`ll}{{{A`{}{{n{c}}}}e}{{Ib{{A`{}{{n{c}}}}e}}}l{{Ad{{d{Blc}}}}Afl}}{{{A`{}{{n{c}}}}}{{Id{{A`{}{{n{c}}}}}}}l}{{AhAl}{{If{Ah}}}}{{AhAl}{{Ih{Ah}}}}{{Ahe}{}{}{{Ij{c}}}}{{Ahc}{{Il{Ah}}}Bb}{{Ahc}{{In{Ah}}}Bb}","D":"Kn","p":[[8,"Scope",1],[1,"reference"],[17,"Output"],[10,"FnOnce",110],[1,"tuple"],[10,"Send",111],[17,"Item"],[10,"ParallelIterator",6,112],[1,"bool"],[10,"Fn",110],[10,"Sync",111],[10,"IndexedParallelIterator",6,112],[5,"ExponentialBlocks",113],[1,"usize"],[5,"UniformBlocks",113],[5,"Chain",114],[10,"IntoParallelIterator",112],[5,"Chunks",115],[5,"Cloned",116],[6,"Ordering",117],[10,"FromParallelIterator",112],[0,"mut"],[5,"Vec",118],[1,"unit"],[5,"LinkedList",119],[5,"Copied",120],[10,"Consumer",121],[10,"UnindexedConsumer",121],[5,"Enumerate",122],[5,"Filter",123],[5,"FilterMap",124],[6,"Option",125],[5,"FlatMap",126],[5,"FlatMapIter",127],[10,"IntoIterator",128],[5,"Flatten",129],[5,"FlattenIter",130],[5,"Fold",131],[5,"FoldChunks",132],[5,"FoldChunksWith",133],[10,"Clone",134],[5,"FoldWith",131],[5,"Inspect",135],[5,"Interleave",136],[5,"InterleaveShortest",137],[5,"Intersperse",138],[10,"IntoMaybeParallelIterator",6],[5,"Map",139],[5,"MapInit",140],[5,"MapWith",140],[10,"Ord",117],[10,"MaybeParallelBridge",6],[8,"MaybeIterBridge",6],[10,"MaybeIntoParallelRefMutIterator",6],[5,"PanicFuse",141],[10,"Default",142],[10,"ParallelExtend",112],[6,"Either",143],[5,"Positions",144],[10,"Product",145],[5,"Rev",146],[5,"Skip",147],[5,"SkipAny",148],[5,"SkipAnyWhile",149],[5,"StepBy",150],[10,"Sum",145],[5,"Take",151],[5,"TakeAny",152],[5,"TakeAnyWhile",153],[5,"TryFold",154],[10,"Try",155],[5,"TryFoldWith",154],[5,"Update",156],[5,"WhileSome",157],[5,"MaxLen",158],[5,"MinLen",158],[10,"ProducerCallback",121],[5,"Zip",159],[5,"ZipEq",160]],"r":[[6,112],[14,112]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA8ABQAAAAYACAAAAAoABAA6AAAARAABAA=="}],["num_gens",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["once",{"t":"SSFFFFSNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNONNNNNNNONNONNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["DATA_LAYOUT","MAX_OUTER_LENGTH","OnceBiVec","OnceVec","OooTracker","Page","USIZE_LEN","allocate","allocate_for","allocated","as_slice","borrow","","","","borrow_mut","","","","clone","","","clone_into","","","clone_to_uninit","","","data","","deallocate","default","","","deref","","","","deref_mut","","","","drop","","","","","entry_ptr","eq","","extend","","fmt","","from","","","","from_bivec","from_vec","","get","","get_mut","index","","","index_mut","","","init","","","","inner_index","into","","","","is_empty","","iter","","iter_enum","last","","layout","len","","","lock","","max_degree","maybe_par_extend","","maybe_par_iter_enum","min_degree","","new","","ooo","ooo_elements","","page","page_raw","ptr","push","","push_checked","","push_ooo","","range","to_owned","","","try_from","","","","try_into","","","","type_id","","",""],"q":[[0,"once"],[128,"core::clone"],[129,"core::cmp"],[130,"core::ops::function"],[131,"core::fmt"],[132,"bivec"],[133,"alloc::vec"],[134,"core::option"],[135,"core::iter::traits::iterator"],[136,"core::alloc::layout"],[137,"std::sync::mutex"],[138,"core::marker"],[139,"maybe_rayon::concurrent::prelude"],[140,"core::ops::range"],[141,"core::result"],[142,"core::any"]],"i":"```````dl1110AdAf32102102102102033213210321032210220202032100202022202203210`32102020020320220020000202202232020200210321032103210","f":"```````{{{f{b{d{c}}}}h}j{}}{{{f{{l{c}}}}h}j{}}{{{f{{d{c}}}}}n{}}{{{f{{d{c}}}}hh}{{f{{A`{c}}}}}{}}{f{{f{c}}}{}}000{{{f{b}}}{{f{bc}}}{}}000{{{f{{l{c}}}}}{{l{c}}}Ab}{{{f{Ad}}}Ad}{{{f{{Af{c}}}}}{{Af{c}}}Ab}{{f{f{bc}}}j{}}00{fj}00``{{{f{b{d{c}}}}hh}j{}}{{}{{d{c}}}{}}{{}{{l{c}}}{}}{{}Ad}{h{{f{c}}}{}}000{h{{f{bc}}}{}}000{hj}{{{f{b{l{c}}}}}j{}}111{{{f{{l{c}}}}h}{}{}}{{{f{{l{c}}}}{f{{l{c}}}}}nAh}{{{f{{Af{c}}}}{f{{Af{c}}}}}nAh}{{{f{{l{c}}}}he}j{}{{Al{h}{{Aj{c}}}}}}{{{f{{Af{c}}}}Ane}j{}{{Al{An}{{Aj{c}}}}}}{{{f{{l{c}}}}{f{bB`}}}BbBd}{{{f{{Af{c}}}}{f{bB`}}}BbBd}{cc{}}000{{{Bf{c}}}{{Af{c}}}{}}{{{Bh{c}}}{{l{c}}}{}}{{An{Bh{c}}}{{Af{c}}}{}}{{{f{{l{c}}}}h}{{Bj{{f{c}}}}}{}}{{{f{{Af{c}}}}An}{{Bj{{f{c}}}}}{}}{{{f{b{l{c}}}}h}{{Bj{{f{bc}}}}}{}}{{{f{{l{c}}}}Bl}{{f{c}}}{}}{{{f{{l{c}}}}h}{{f{c}}}{}}{{{f{{Af{c}}}}An}{{f{c}}}{}}{{{f{b{l{c}}}}Bl}{{f{bc}}}{}}{{{f{b{l{c}}}}h}{{f{bc}}}{}}{{{f{b{Af{c}}}}An}{{f{bc}}}{}}{{}h}000{h{{Bn{hh}}}}{{}c{}}000{{{f{{l{c}}}}}n{}}{{{f{{Af{c}}}}}n{}}{{{f{{l{c}}}}}{{`{{Cb{}{{C`{{f{c}}}}}}}}}{}}{{{f{{Af{c}}}}}{{`{{Cb{}{{C`{{f{c}}}}}}}}}{}}{{{f{{Af{c}}}}}{{`{{Cb{}{{C`{{Bn{An{f{c}}}}}}}}}}}{}}{{{f{{l{c}}}}}{{Bj{{f{c}}}}}{}}{{{f{{Af{c}}}}}{{Bj{{f{c}}}}}{}}{hCd}{{{f{{l{c}}}}}h{}}{{{f{{Af{c}}}}}An{}}`{{{f{{l{c}}}}}{{Cf{Ad}}}{}}{{{f{{Af{c}}}}}{{Cf{Ad}}}{}}2{{{f{{l{c}}}}he}j{ChCj}{{Cl{h}{{Aj{c}}}}ChCj}}{{{f{{Af{c}}}}Ane}j{ChCj}{{Cl{An}{{Aj{c}}}}ChCj}}{{{f{{Af{c}}}}}{{`{{Cn{}{{C`{{Bn{An{f{c}}}}}}}}D`}}}{ChCj}}5`{{}{{l{c}}}{}}{An{{Af{c}}}{}}`{{{f{{l{c}}}}}{{Bh{h}}}{}}{{{f{{Af{c}}}}}{{Bh{An}}}{}}{{{f{{l{c}}}}h}{{f{{d{c}}}}}{}}{{{f{{l{c}}}}h}d{}}{{{f{{d{c}}}}}{}{}}{{{f{{l{c}}}}c}h{}}{{{f{{Af{c}}}}c}An{}}{{{f{{l{c}}}}ch}j{}}{{{f{{Af{c}}}}cAn}j{}}{{{f{{l{c}}}}ch}{{Db{h}}}{}}{{{f{{Af{c}}}}cAn}{{Db{An}}}{}}{{{f{{Af{c}}}}}{{Db{An}}}{}}{fc{}}00{c{{Dd{e}}}{}{}}000{{}{{Dd{c}}}{}}000{fDf}000","D":"Dh","p":[[0,"mut"],[5,"Page",0],[1,"reference"],[1,"usize"],[1,"unit"],[5,"OnceVec",0],[1,"bool"],[1,"slice"],[10,"Clone",128],[5,"OooTracker",0],[5,"OnceBiVec",0],[10,"PartialEq",129],[17,"Output"],[10,"FnMut",130],[1,"i32"],[5,"Formatter",131],[8,"Result",131],[10,"Debug",131],[5,"BiVec",132],[5,"Vec",133],[6,"Option",134],[1,"u32"],[1,"tuple"],[17,"Item"],[10,"Iterator",135],[5,"Layout",136],[5,"MutexGuard",137],[10,"Send",138],[10,"Sync",138],[10,"Fn",130],[10,"MaybeParallelIterator",139],[10,"MaybeIndexedParallelIterator",139],[5,"Range",140],[6,"Result",141],[5,"TypeId",142]],"r":[],"b":[[64,"impl-Index%3Cu32%3E-for-OnceVec%3CT%3E"],[65,"impl-Index%3Cusize%3E-for-OnceVec%3CT%3E"],[67,"impl-IndexMut%3Cu32%3E-for-OnceVec%3CT%3E"],[68,"impl-IndexMut%3Cusize%3E-for-OnceVec%3CT%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAFwAFAAAAAEAAwAAAAYAAgAKAAAADAASACAADwAxAAEANQABADsAAAA9AAEAQAALAFAAAQBTAAMAWgAAAGAABABnAAAAagAAAGwAAABuAAAAcQAPAA=="}],["query",{"t":"SHHHHH","n":["ARGV","optional","raw","vector","with_default","yes_no"],"q":[[0,"query"],[6,"core::option"],[7,"core::fmt"],[8,"core::result"],[9,"core::ops::function"],[10,"alloc::vec"]],"i":"``````","f":"`{{{d{b}}g}{{f{c}}}{}h{{n{{d{b}}}{{j{{l{ce}}}}}}}}{{{d{b}}g}c{}h{{n{{d{b}}}{{j{{l{ce}}}}}}}}{{{d{b}}A`}{{Ad{Ab}}}}{{{d{b}}{d{b}}g}c{}h{{n{{d{b}}}{{j{{l{ce}}}}}}}}{{{d{b}}}Af}","D":"b","p":[[1,"str"],[1,"reference"],[6,"Option",6],[10,"Display",7],[17,"Output"],[6,"Result",8],[10,"FnMut",9],[1,"usize"],[1,"u32"],[5,"Vec",10],[1,"bool"]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAUAAQABAAUA"}],["resolution_size",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["resolve",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["resolve_through_stem",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["resolve_unstable",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["save_bruner",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["secondary",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["secondary_massey",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["secondary_product",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["sq0",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["sseq",{"t":"FFFTFFKCOCCMOOOOOOOOOOOOMOMOCOOOFNNNNNNONNNNNNNNNONNNNNNNEEEECCCHCFNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNONNNNNNNNNFNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNONFNNNNNNNONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNFONNNNNNNNNNNNNNONONNNNNFNNNNNNONONNNNNONNNNNOONNNNFTFFKNNNNNNNNNONNNNNNNNNMNNONNNNNNNNNNNNNNNNNNOONONNNNNNONONOMNOMNNNNNNNNNNNNNNNNNNOO","n":["Adams","DenseBigradedModule","Differential","MIN_R","Product","Sseq","SseqProfile","bigraded","classes","coordinates","differential","differential_length","differentials","dimensions","error","first_empty_row","invalid","left","matrices","matrix","min_y","p","page_data","permanent_classes","profile","","profile_inverse","source_dim","sseq","target_dim","x","y","DenseBigradedModule","borrow","borrow_mut","defined","deref","deref_mut","dimension","dimensions","drop","from","get_dimension","init","into","max_x","max_y","min_x","min_y","","new","range","set_dimension","try_from","try_into","type_id","vzip","Bidegree","BidegreeElement","BidegreeGenerator","BidegreeRange","bidegree","element","generator","iter_s_t","range","Bidegree","add","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","deref","deref_mut","deserialize","drop","eq","equivalent","","","","fmt","","from","hash","init","into","massey_bidegree","n","n_s","s","","s_t","serialize","sub","t","","t_s","to_owned","to_string","try_from","try_into","try_subtract","type_id","vzip","zero","BidegreeElement","borrow","borrow_mut","clone","clone_into","clone_to_uninit","degree","","deref","deref_mut","deserialize","drop","eq","equivalent","","","","fmt","","from","hash","init","into","into_vec","n","new","s","serialize","t","to_basis_string","to_owned","to_string","to_string_module","try_from","try_into","type_id","vec","","vzip","BidegreeGenerator","borrow","borrow_mut","clone","clone_into","clone_to_uninit","default","degree","","deref","deref_mut","deserialize","drop","eq","equivalent","","","","fmt","","from","","hash","idx","","init","into","into_element","n","n_s","new","s","s_t","serialize","t","to_owned","to_string","try_from","","try_into","type_id","vzip","BidegreeRange","aux","borrow","borrow_mut","clone","clone_into","clone_to_uninit","deref","deref_mut","drop","from","init","into","new","restrict","s","","t","","to_owned","try_from","try_into","type_id","vzip","Differential","add","borrow","borrow_mut","deref","deref_mut","drop","error","evaluate","first_empty_row","from","get_source_target_pairs","inconsistent","init","into","matrix","new","prime","quasi_inverse","reduce_target","set_to_zero","source_dim","target_dim","try_from","try_into","type_id","vzip","Adams","MIN_R","Product","Sseq","SseqProfile","add_differential","add_permanent_class","borrow","","","borrow_mut","","","classes","","clear","complete","defined","deref","","","deref_mut","","","differential_length","","differentials","","differentials_hitting","dimension","drop","","","extend_differential","extend_page_data","from","","","inconsistent","init","","","into","","","invalid","","left","leibniz","matrices","max_x","max_y","min_x","min_y","multiply","new","p","page_data","","permanent_classes","","profile","","","profile_inverse","","range","set_dimension","try_from","","","try_into","","","type_id","","","update","update_bidegree","vzip","","","write_to_graph","x","y"],"q":[[0,"sseq"],[32,"sseq::bigraded"],[57,"sseq::coordinates"],[66,"sseq::coordinates::bidegree"],[108,"sseq::coordinates::element"],[147,"sseq::coordinates::generator"],[189,"sseq::coordinates::range"],[213,"sseq::differential"],[240,"sseq::sseq"],[325,"core::option"],[326,"core::ops::range"],[327,"core::result"],[328,"core::any"],[329,"core::ops::function"],[330,"core::marker"],[331,"serde::de"],[332,"core::fmt"],[333,"core::hash"],[334,"serde::ser"],[335,"alloc::string"],[336,"fp::vector::fp_wrapper"],[337,"algebra::module::free_module"],[338,"algebra::algebra::algebra_trait"],[339,"fp::prime::primes_generic"],[340,"core::convert"],[341,"alloc::vec"],[342,"fp::matrix::subspace"],[343,"alloc::sync"],[344,"bivec"],[345,"core::iter::traits::iterator"],[346,"fp::matrix::subquotient"],[347,"chart"],[348,"core::clone"]],"i":"```Dl````Dj``10jDb02Ef0123334341`100`222222222222222222222222``````````Aj0000000000000000000000000000000000000000`Cb0000000000000000000000000000000000000`Cl0000000000000000000000000000000000000000`Al0000000000000000000000`55555555555555555555555555`8```77F`58058888880580589088880588805880580588858588888888888908908805805805888058855","f":"```````````{{bb}b}````````````{{bbb}{{d{bb}}}}`0``````{f{{f{c}}}{}}{{{f{h}}}{{f{hc}}}{}}{{{f{j}}bb}l}{n{{f{c}}}{}}{n{{f{hc}}}{}}{{{f{j}}bb}n}`{nA`}{cc{}}{{{f{j}}bb}{{Ab{n}}}}{{}n}{{}c{}}{{{f{j}}}b}000`{{bb}j}{{{f{j}}b}{{Ad{b}}}}{{{f{j}}bbn}A`}{c{{Af{e}}}{}{}}{{}{{Af{c}}}{}}{fAh}7```````{{{f{c}}Aj{Al{e}}}A`{{B`{Aj}{{An{{Ad{b}}}}}}Bb}Bb}``{{AjAj}Aj}{f{{f{c}}}{}}{{{f{h}}}{{f{hc}}}{}}{{{f{Aj}}}Aj}{{f{f{hc}}}A`{}}{fA`}{{}Aj}{n{{f{c}}}{}}{n{{f{hc}}}{}}{c{{Af{Aj}}}Bd}{nA`}{{{f{Aj}}{f{Aj}}}l}{{f{f{c}}}l{}}000{{{f{Aj}}{f{hBf}}}Bh}0{cc{}}{{{f{Aj}}{f{hc}}}A`Bj}{{}n}{{}c{}}{{AjAjAj}Aj}{{{f{Aj}}}b}{{bBl}Aj}{{{f{Aj}}}Bl}`{{Blb}Aj}{{{f{Aj}}c}AfBn}{{AjAj}Aj}5`4{fc{}}{fC`}{c{{Af{e}}}{}{}}{{}{{Af{c}}}{}}{{{f{Aj}}Aj}{{Ab{Aj}}}}{fAh}={{}Aj}`{f{{f{c}}}{}}{{{f{h}}}{{f{hc}}}{}}{{{f{Cb}}}Cb}{{f{f{hc}}}A`{}}{fA`}{{{f{Cb}}}Aj}`{n{{f{c}}}{}}{n{{f{hc}}}{}}{c{{Af{Cb}}}Bd}{nA`}{{{f{Cb}}{f{Cb}}}l}{{f{f{c}}}l{}}000{{{f{Cb}}{f{hBf}}}Bh}0{cc{}}{{{f{Cb}}{f{hc}}}A`Bj}{{}n}{{}c{}}{CbCd}{{{f{Cb}}}b}{{AjCd}Cb}{{{f{Cb}}}Bl}{{{f{Cb}}c}AfBn}3{{{f{Cb}}}C`}{fc{}}{fC`}{{{f{Cb}}{f{{Cf{c}}}}l}C`Ch}{c{{Af{e}}}{}{}}{{}{{Af{c}}}{}}{fAh}{{{f{Cb}}}Cj}`=`{f{{f{c}}}{}}{{{f{h}}}{{f{hc}}}{}}{{{f{Cl}}}Cl}{{f{f{hc}}}A`{}}{fA`}{{}Cl}{{{f{Cl}}}Aj}`{n{{f{c}}}{}}{n{{f{hc}}}{}}{c{{Af{Cl}}}Bd}{nA`}{{{f{Cl}}{f{Cl}}}l}{{f{f{c}}}l{}}000{{{f{Cl}}{f{hBf}}}Bh}0{cc{}}{{{d{Ajn}}}Cl}{{{f{Cl}}{f{hc}}}A`Bj}{{{f{Cl}}}n}`{{}n}{{}c{}}{{ClCnn}Cb}{{{f{Cl}}}b}{{bBln}Cl}{{cn}Cl{{D`{Aj}}}}{{{f{Cl}}}Bl}{{Blbn}Cl}{{{f{Cl}}c}AfBn}5{fc{}}{fC`}{Cb{{Af{Clc}}}{}}{c{{Af{e}}}{}{}}{{}{{Af{c}}}{}}{fAh}=``{f{{f{c}}}{}}{{{f{h}}}{{f{hc}}}{}}{{{f{{Al{c}}}}}{{Al{c}}}{}}{{f{f{hc}}}A`{}}{fA`}{n{{f{c}}}{}}{n{{f{hc}}}{}}{nA`}{cc{}}{{}n}{{}c{}}{{{f{c}}Bl{f{B`}}}{{Al{c}}}{}}{{{Al{c}}Bl}{{Al{c}}}{}}{{{f{{Al{c}}}}}Bl{}}`{{{f{{Al{c}}}}Bl}b{}}`{fc{}}{c{{Af{e}}}{}{}}{{}{{Af{c}}}{}}{fAh}8`{{{f{hDb}}Cj{Ab{Cj}}}l}{f{{f{c}}}{}}{{{f{h}}}{{f{hc}}}{}}{n{{f{c}}}{}}{n{{f{hc}}}{}}{nA`}`{{{f{Db}}CjDd}A`}`{cc{}}{{{f{Db}}}{{Df{{d{CdCd}}}}}}{{{f{Db}}}l}{{}n}{{}c{}}`{{Cnnn}Db}{{{f{Db}}}Cn}{{{f{Db}}DdCj}A`}{{{f{hDb}}{f{Dh}}}A`}{{{f{hDb}}}A`}``{c{{Af{e}}}{}{}}{{}{{Af{c}}}{}}{fAh}8`````{{{f{h{Dj{c}}}}bbbCjCj}lDl}{{{f{h{Dj{c}}}}bbCj}lDl}{f{{f{c}}}{}}00{{{f{h}}}{{f{hc}}}{}}00{{{f{{Dj{c}}}}}{{Dn{j}}}Dl}`{{{f{h{Dj{c}}}}}A`Dl}{{{f{{Dj{c}}}}bb}lDl}0{n{{f{c}}}{}}00{n{{f{hc}}}{}}00{{bb}b}0{{{f{{Dj{c}}}}bb}{{f{{E`{Db}}}}}Dl}`{{{f{{Dj{c}}}}bb}{{`{{Ed{}{{Eb{{d{b{f{Db}}}}}}}}}}}Dl}{{{f{{Dj{c}}}}bb}nDl}{nA`}00{{{f{h{Dj{c}}}}bbb}A`Dl}0{cc{}}009{{}n}00{{}c{}}00;``{{{f{h{Dj{c}}}}bbbCj{f{Ef}}{Ab{{f{Ef}}}}}{{Ab{{d{bbbCd}}}}}Dl}`{{{f{{Dj{c}}}}}bDl}000{{{f{{Dj{c}}}}bbCj{f{Ef}}}{{Ab{{d{bbCd}}}}}Dl}{{Cnbb}{{Dj{c}}}Dl}`{{{f{{Dj{c}}}}bb}{{f{{E`{Eh}}}}}Dl}`{{{f{{Dj{c}}}}bb}{{f{Dh}}}Dl}`{{bbb}{{d{bb}}}}0`00{{{f{{Dj{c}}}}b}{{Ad{b}}}Dl}{{{f{h{Dj{c}}}}bbn}A`Dl}{c{{Af{e}}}{}{}}00{{}{{Af{c}}}{}}00{fAh}00{{{f{h{Dj{c}}}}}A`Dl}{{{f{h{Dj{c}}}}bb}{{E`{{Df{{Df{Bl}}}}}}}Dl}>>>{{{f{{Dj{c}}}}eblgi}{{Af{A`}}}DlEj{{Ed{}{{Eb{{f{{d{C`Ef}}}}}}}}El}{{En{{f{he}}}{{An{{Af{A`}}}}}}}}``","D":"Hh","p":[[1,"i32"],[1,"tuple"],[1,"reference"],[0,"mut"],[5,"DenseBigradedModule",32],[1,"bool"],[1,"usize"],[1,"unit"],[6,"Option",325],[5,"Range",326],[6,"Result",327],[5,"TypeId",328],[5,"Bidegree",66],[5,"BidegreeRange",189],[17,"Output"],[10,"Fn",329],[10,"Sync",330],[10,"Deserializer",331],[5,"Formatter",332],[8,"Result",332],[10,"Hasher",333],[1,"u32"],[10,"Serializer",334],[5,"String",335],[5,"BidegreeElement",108],[6,"FpVector",336],[5,"MuFreeModule",337],[10,"MuAlgebra",338],[6,"FpSlice",336],[5,"BidegreeGenerator",147],[5,"ValidPrime",339],[10,"Into",340],[5,"Differential",213],[6,"FpSliceMut",336],[5,"Vec",341],[5,"Subspace",342],[5,"Sseq",240],[10,"SseqProfile",240],[5,"Arc",343],[5,"BiVec",344],[17,"Item"],[10,"Iterator",345],[5,"Product",240],[5,"Subquotient",346],[10,"Backend",347],[10,"Clone",348],[10,"FnOnce",329],[5,"Adams",240]],"r":[[0,240],[1,32],[2,213],[4,240],[5,240],[6,240],[57,66],[58,108],[59,147],[60,189]],"b":[[83,"impl-Debug-for-Bidegree"],[84,"impl-Display-for-Bidegree"],[125,"impl-Display-for-BidegreeElement"],[126,"impl-Debug-for-BidegreeElement"],[165,"impl-Display-for-BidegreeGenerator"],[166,"impl-Debug-for-BidegreeGenerator"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAEBMgAAAAYACAAAAAoAAgAOAAIAEwADABkAEAAsAAAALgAGADYACgBCAAAARAARAFcAAQBbAAIAXwADAGQABABqAAIAbgAFAHUACgCBAAEAhAAFAIsAAQCOAAMAkwAAAJUABgCdAAoAqQACAK0AAACvAA4AwAAHAMkAAADLAAIAzwAAANEABQDYAAUA3wAAAOMAAADlAAIA6gAKAPgABgAAAQAAAgEJAA0BBAAYAQIAHgEAACIBBAAoAQIALAEAAC4BEABAAQIARAEBAA=="}],["steenrod",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["tensor",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}],["unstable_chart",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["unstable_suspension",{"t":"","n":[],"q":[],"i":"","f":"","D":"b","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAAAAAA="}],["yoneda",{"t":"","n":[],"q":[],"i":"","f":"","D":"`","p":[],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAAA"}]]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); -//{"start":39,"fragment_lengths":[54233,132,2614,115,126,2151,130,581,122,20007,25651,128,123,42766,117,127,115,8620,117,4264,620,136,116,129,125,120,118,125,126,124,8960,129,127,123,128,127]} \ No newline at end of file +//{"start":39,"fragment_lengths":[54233,132,2614,115,126,2151,130,581,122,20014,25662,128,123,42766,117,127,115,8620,117,4264,620,136,116,129,125,120,118,125,126,124,8960,129,127,123,128,127]} \ No newline at end of file diff --git a/docs/search.desc/secondary_massey/secondary_massey-desc-0-.js b/docs/search.desc/secondary_massey/secondary_massey-desc-0-.js index 850659870..fb3766890 100644 --- a/docs/search.desc/secondary_massey/secondary_massey-desc-0-.js +++ b/docs/search.desc/secondary_massey/secondary_massey-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("secondary_massey", 0, "Computes massey products in $\\Mod_{C\\tau^2}$.") \ No newline at end of file +searchState.loadedDescShard("secondary_massey", 0, "Computes massey products in $\\Mod_{C\\lambda^2}$.") \ No newline at end of file diff --git a/docs/search.desc/secondary_product/secondary_product-desc-0-.js b/docs/search.desc/secondary_product/secondary_product-desc-0-.js index f187e09fb..f51e2502f 100644 --- a/docs/search.desc/secondary_product/secondary_product-desc-0-.js +++ b/docs/search.desc/secondary_product/secondary_product-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("secondary_product", 0, "Computes products in $\\Mod_{C\\tau^2}$.") \ No newline at end of file +searchState.loadedDescShard("secondary_product", 0, "Computes products in $\\Mod_{C\\lambda^2}$.") \ No newline at end of file diff --git a/docs/secondary/index.html b/docs/secondary/index.html index 1b832e30b..57d4dd7db 100644 --- a/docs/secondary/index.html +++ b/docs/secondary/index.html @@ -43,7 +43,7 @@

§Sharding

arise.

To compute data for a single s, run the script with the environment variable SECONDARY_JOB=s. The minimum value of s is the cohomological degree shift of the secondary -homotopy (i.e. the difference in degrees between the input class and the τ part of the answer; +homotopy (i.e. the difference in degrees between the input class and the λ part of the answer; 2 in the case of secondary), and the maximum value of s is the max_s of the resolution.

After running this script for all s in the range, run it as usual to produce the final output. An example script is as follows:

diff --git a/docs/secondary_massey/index.html b/docs/secondary_massey/index.html index c0843ca72..393d63766 100644 --- a/docs/secondary_massey/index.html +++ b/docs/secondary_massey/index.html @@ -1,4 +1,4 @@ -secondary_massey - Rust +secondary_massey - Rust @@ -23,19 +23,18 @@ }); -

Crate secondary_massey

source ·
Expand description

Computes massey products in $\Mod_{C\tau^2}$.

+

Crate secondary_massey

source ·
Expand description

Computes massey products in $\Mod_{C\lambda^2}$.

§Usage

-

This computes all Massey products of the form $\langle -, b, a\rangle$, where -$a \in \Ext^{*, *}(M, k)$ and $b, (-) \in \Ext^{*, *}(k, k)$. It does not verify that the -Massey product is valid, i.e. $a$ and $b$ both lift to $\Mod_{C\tau^2}$ and have trivial -product.

+

This computes all Massey products of the form $\langle -, b, a\rangle$, where $a \in \Ext^{*, +*}(M, k)$ and $b, (-) \in \Ext^{*, *}(k, k)$. It does not verify that the Massey product is +valid, i.e. $a$ and $b$ both lift to $\Mod_{C\lambda^2}$ and have trivial product.

Since we must choose $a$ and $b$ to have trivial product, it is necessary to be able to specify -the $\tau$ part of them, and not insist that they are standard lifts of the $\Ext$ classes. -Thus, the user is first prompted for the $\Ext$ part, then the $\tau$ part of each class. To +the $\lambda$ part of them, and not insist that they are standard lifts of the $\Ext$ classes. +Thus, the user is first prompted for the $\Ext$ part, then the $\lambda$ part of each class. To set a part to zero, supply an empty name. Note that if the bidegree right above the class is -empty, the user is not prompted for the $\tau$ part.

+empty, the user is not prompted for the $\lambda$ part.

§Output

This computes the Massey products up to a sign. We write our output in the category -$\Mod_{C\tau^2}$, so the format is $\langle a, b, -\rangle$ instead of $\langle -, b, +$\Mod_{C\lambda^2}$, so the format is $\langle a, b, -\rangle$ instead of $\langle -, b, a\rangle$. Brave souls are encouraged to figure out the correct sign for the products.

\ No newline at end of file diff --git a/docs/secondary_product/index.html b/docs/secondary_product/index.html index b9adb8ca1..d3a9708b8 100644 --- a/docs/secondary_product/index.html +++ b/docs/secondary_product/index.html @@ -1,4 +1,4 @@ -secondary_product - Rust +secondary_product - Rust @@ -23,19 +23,19 @@ }); -

Crate secondary_product

source ·
Expand description

Computes products in $\Mod_{C\tau^2}$.

+

Crate secondary_product

source ·
Expand description

Computes products in $\Mod_{C\lambda^2}$.

§Usage

-

The program asks for a module $M$ and an element $x \in \Ext^{*, *}(M, k)$. It then -computes the secondary product of the standard lift of $x$ with all (standard lifts of) -elements in $\Ext^{*, *}(M, k)$ that survive $d_2$.

+

The program asks for a module $M$ and an element $x \in \Ext^{*, *}(M, k)$. It then computes +the secondary product of the standard lift of $x$ with all (standard lifts of) elements in +$\Ext^{*, *}(M, k)$ that survive $d_2$.

These products are computed for all elements whose product with $x$ lies in the specified bidegree of $M$, and $k$ is resolved as far as necessary to support this computation.

Running this program requires computing the secondary resolution of both $M$ and $k$, i.e. the -calculations performed by secondary. The user is encouraged to -make use of a save file to reuse these calculations for different products. (When $M$ is not -equal to $k$, the user will be prompted for the save directory of $k$)

+calculations performed by secondary. The user is encouraged to make +use of a save file to reuse these calculations for different products. (When $M$ is not equal to +$k$, the user will be prompted for the save directory of $k$)

§Output

-

This prints the corresponding products in $\Mod_{C\tau^2}$. In particular, $x$ multiplies on +

This prints the corresponding products in $\Mod_{C\lambda^2}$. In particular, $x$ multiplies on the left, and the sign twist of $(-1)^{s’t}$ is inserted.

§Notes

The program verifies that $x$ is indeed permanent.

diff --git a/docs/src/ext/lib.rs.html b/docs/src/ext/lib.rs.html index bda184b45..c090e798d 100644 --- a/docs/src/ext/lib.rs.html +++ b/docs/src/ext/lib.rs.html @@ -349,8 +349,8 @@ //! | [resolve_through_stem](../resolve_through_stem/index.html) | Resolve a module to a fixed $(s, n)$ and potentially save the resolution. | //! | [save_bruner](../save_bruner/index.html) | Save the resolution in the format used by Bruner's [ext](http://www.rrb.wayne.edu/papers/index.html). | //! | [secondary](../secondary/index.html) | Compute $d_2$ differentials using the secondary Steenrod algebra. | -//! | [secondary_product](../secondary_product/index.html) | Compute products in $\Mod_{C\tau^2}$ using the secondary Stennrod algebra. | -//! | [secondary_massey](../secondary_massey/index.html) | Compute Massey products in $\Mod_{C\tau^2}$ using the secondary Stennrod algebra. | +//! | [secondary_product](../secondary_product/index.html) | Compute products in $\Mod_{C\lambda^2}$ using the secondary Steenrod algebra. | +//! | [secondary_massey](../secondary_massey/index.html) | Compute Massey products in $\Mod_{C\lambda^2}$ using the secondary Steenrod algebra. | //! | [steenrod](../steenrod/index.html) | Compute Steenrod operations in Ext. | //! | [tensor](../tensor/index.html) | Compute the tensor product of two modules. | //! | [yoneda](../yoneda/index.html) | Compute a Yoneda representative of an Ext class. | diff --git a/docs/src/ext/secondary.rs.html b/docs/src/ext/secondary.rs.html index a101a0aa9..c24774f28 100644 --- a/docs/src/ext/secondary.rs.html +++ b/docs/src/ext/secondary.rs.html @@ -1462,6 +1462,17 @@ 1437 1438 1439 +1440 +1441 +1442 +1443 +1444 +1445 +1446 +1447 +1448 +1449 +1450
use std::{
     io::{Read, Write},
     sync::Arc,
@@ -1495,7 +1506,7 @@
     save::{SaveDirectory, SaveFile, SaveKind},
 };
 
-pub static TAU_BIDEGREE: Bidegree = Bidegree::n_s(0, 1);
+pub static LAMBDA_BIDEGREE: Bidegree = Bidegree::n_s(0, 1);
 
 pub type CompositeData<A> = Vec<(
     u32,
@@ -1809,12 +1820,12 @@
 /// where $f_i$ and $g_i$ are free module homomorphisms and $c_i$ are constants. This is specified
 /// by [`SecondaryLift::composite`].
 ///
-/// The next is a compatibility equation, which restricts the τ part of the null-homotopy, and is
+/// The next is a compatibility equation, which restricts the λ part of the null-homotopy, and is
 /// usually of the form
 ///
 /// $$ dh = hd + \mathrm{stuff} $$
 ///
-/// The τ part of $hd + \mathrm{stuff}$ is known as the intermediate data, and is what
+/// The λ part of $hd + \mathrm{stuff}$ is known as the intermediate data, and is what
 /// [`SecondaryLift::compute_intermediate`] returns.
 pub trait SecondaryLift: Sync + Sized {
     type Algebra: PairAlgebra;
@@ -2447,7 +2458,7 @@
 
     pub fn name(&self) -> String {
         let name = self.underlying.name();
-        if name.starts_with('[') || name.starts_with('τ') {
+        if name.starts_with('[') || name.starts_with('λ') {
             name.to_owned()
         } else {
             format!("[{name}]")
@@ -2458,28 +2469,28 @@
         &self.homotopies[s as i32]
     }
 
-    /// A version of [`hom_k`] but with a non-trivial τ part.
+    /// A version of [`hom_k`] but with a non-trivial λ part.
     pub fn hom_k_with<'a>(
         &self,
-        tau_part: Option<&ResolutionHomomorphism<CC1, CC2>>,
+        lambda_part: Option<&ResolutionHomomorphism<CC1, CC2>>,
         sseq: Option<&sseq::Sseq>,
         b: Bidegree,
         inputs: impl Iterator<Item = FpSlice<'a>>,
         outputs: impl Iterator<Item = FpSliceMut<'a>>,
     ) {
         let source = b + self.shift() - Bidegree::s_t(1, 0);
-        let tau_source = source + TAU_BIDEGREE;
+        let lambda_source = source + LAMBDA_BIDEGREE;
 
         let p = self.prime();
         let h_0 = self.algebra().p_tilde();
 
         let source_num_gens = self.source().number_of_gens_in_bidegree(source);
-        let tau_num_gens = self.source().number_of_gens_in_bidegree(tau_source);
+        let lambda_num_gens = self.source().number_of_gens_in_bidegree(lambda_source);
 
         let m0 = self.underlying.get_map(source.s()).hom_k(b.t());
-        let mut m1 = Matrix::from_vec(p, &self.homotopy(tau_source.s()).homotopies.hom_k(b.t()));
-        if let Some(tau_part) = tau_part {
-            m1 += &Matrix::from_vec(p, &tau_part.get_map(tau_source.s()).hom_k(b.t()));
+        let mut m1 = Matrix::from_vec(p, &self.homotopy(lambda_source.s()).homotopies.hom_k(b.t()));
+        if let Some(lambda_part) = lambda_part {
+            m1 += &Matrix::from_vec(p, &lambda_part.get_map(lambda_source.s()).hom_k(b.t()));
         }
 
         // The multiplication by p map
@@ -2499,7 +2510,7 @@
         let filtration_one_sign = if (b.t() % 2) == 1 { p - 1 } else { 1 };
 
         let page_data = sseq.map(|sseq| {
-            let d = sseq.page_data(tau_source.n(), tau_source.s() as i32);
+            let d = sseq.page_data(lambda_source.n(), lambda_source.s() as i32);
             &d[std::cmp::min(3, d.len() - 1)]
         });
 
@@ -2512,31 +2523,31 @@
                     .iter_mut()
                     .zip_eq(&m0[i])
                     .for_each(|(a, b)| *a += v * b * sign);
-                out.slice_mut(source_num_gens, source_num_gens + tau_num_gens)
+                out.slice_mut(source_num_gens, source_num_gens + lambda_num_gens)
                     .add(m1[i].as_slice(), (v * sign) % p);
             }
             for (i, v) in scratch0.iter().enumerate() {
                 out.add_basis_element(i, *v % p);
 
                 let extra = *v / p;
-                out.slice_mut(source_num_gens, source_num_gens + tau_num_gens)
+                out.slice_mut(source_num_gens, source_num_gens + lambda_num_gens)
                     .add(mp[i].as_slice(), (extra * filtration_one_sign) % p);
             }
             if let Some(page_data) = page_data {
                 page_data.reduce_by_quotient(
-                    out.slice_mut(source_num_gens, source_num_gens + tau_num_gens),
+                    out.slice_mut(source_num_gens, source_num_gens + lambda_num_gens),
                 );
             }
         }
     }
 
-    /// Compute the induced map on Mod_{C\tau^2} homotopy groups. This only computes it on
+    /// Compute the induced map on Mod_{C\lambda^2} homotopy groups. This only computes it on
     /// standard lifts on elements in Ext. `outputs` is an iterator of `FpSliceMut`s whose lengths
     /// are equal to the total dimension of `(s + shift_s, t + shift_t)` and `(s + shift_s + 1, t +
     /// shift_t + 1)`. The first chunk records the Ext part of the result, and the second chunk
-    /// records the τ part of the result.
+    /// records the λ part of the result.
     ///
-    /// This reduces the τ part of the result by the image of d₂.
+    /// This reduces the λ part of the result by the image of d₂.
     ///
     /// # Arguments
     /// - `sseq`: A sseq object that records the $d_2$ differentials. If present, reduce the value
@@ -2552,13 +2563,13 @@
     }
 
     /// Given an element b whose product with this is null, find the element whose $d_2$ hits the
-    /// τ part of the composition.
+    /// λ part of the composition.
     ///
     /// # Arguments:
     /// - `sseq`: spectral sequence object of the source
     pub fn product_nullhomotopy(
         &self,
-        tau_part: Option<&ResolutionHomomorphism<CC1, CC2>>,
+        lambda_part: Option<&ResolutionHomomorphism<CC1, CC2>>,
         sseq: &sseq::Sseq,
         b: Bidegree,
         class: FpSlice,
@@ -2570,23 +2581,25 @@
             .source()
             .number_of_gens_in_bidegree(shift + b - Bidegree::s_t(1, 0));
 
-        let tau_num_gens = self
+        let lambda_num_gens = self
             .source()
-            .number_of_gens_in_bidegree(b + shift + TAU_BIDEGREE);
+            .number_of_gens_in_bidegree(b + shift + LAMBDA_BIDEGREE);
 
         let lower_num_gens = self.source().number_of_gens_in_bidegree(b + shift);
 
         let target_num_gens = self.target().number_of_gens_in_bidegree(b);
-        let target_tau_num_gens = self.target().number_of_gens_in_bidegree(b + TAU_BIDEGREE);
+        let target_lambda_num_gens = self
+            .target()
+            .number_of_gens_in_bidegree(b + LAMBDA_BIDEGREE);
 
         let mut output_class = FpVector::new(p, result_num_gens);
-        if result_num_gens == 0 || tau_num_gens == 0 {
+        if result_num_gens == 0 || lambda_num_gens == 0 {
             return output_class;
         }
 
-        let mut prod_value = FpVector::new(p, lower_num_gens + tau_num_gens);
+        let mut prod_value = FpVector::new(p, lower_num_gens + lambda_num_gens);
         self.hom_k_with(
-            tau_part,
+            lambda_part,
             None,
             b,
             [class.slice(0, target_num_gens)].into_iter(),
@@ -2598,19 +2611,19 @@
             p,
             &self
                 .underlying
-                .get_map((b + shift + TAU_BIDEGREE).s())
-                .hom_k((b + TAU_BIDEGREE).t()),
+                .get_map((b + shift + LAMBDA_BIDEGREE).s())
+                .hom_k((b + LAMBDA_BIDEGREE).t()),
         );
         matrix.apply(
-            prod_value.slice_mut(lower_num_gens, lower_num_gens + tau_num_gens),
+            prod_value.slice_mut(lower_num_gens, lower_num_gens + lambda_num_gens),
             1,
-            class.slice(target_num_gens, target_num_gens + target_tau_num_gens),
+            class.slice(target_num_gens, target_num_gens + target_lambda_num_gens),
         );
 
         let diff_source = b + shift - Bidegree::n_s(-1, 1);
         sseq.differentials(diff_source.n(), diff_source.s() as i32)[2].quasi_inverse(
             output_class.as_slice_mut(),
-            prod_value.slice(lower_num_gens, lower_num_gens + tau_num_gens),
+            prod_value.slice(lower_num_gens, lower_num_gens + lambda_num_gens),
         );
 
         output_class
@@ -2628,8 +2641,8 @@
     underlying: Arc<ChainHomotopy<S, T, U>>,
     left: Arc<SecondaryResolutionHomomorphism<S, T>>,
     right: Arc<SecondaryResolutionHomomorphism<T, U>>,
-    left_tau: Option<Arc<ResolutionHomomorphism<S, T>>>,
-    right_tau: Option<Arc<ResolutionHomomorphism<T, U>>>,
+    left_lambda: Option<Arc<ResolutionHomomorphism<S, T>>>,
+    right_lambda: Option<Arc<ResolutionHomomorphism<T, U>>>,
     homotopies: OnceBiVec<SecondaryHomotopy<S::Algebra>>,
     intermediates: DashMap<BidegreeGenerator, FpVector>,
 }
@@ -2758,10 +2771,10 @@
             true,
         );
 
-        // This is inefficient if both right_tau and right are non-zero, but this is not needed atm
+        // This is inefficient if both right_lambda and right are non-zero, but this is not needed atm
         // and the change would not be user-facing.
-        if let Some(right_tau) = &self.right_tau {
-            right_tau.get_map(left_shifted_b.s()).apply(
+        if let Some(right_lambda) = &self.right_lambda {
+            right_lambda.get_map(left_shifted_b.s()).apply(
                 result.as_slice_mut(),
                 neg_1,
                 left_shifted_b.t(),
@@ -2783,12 +2796,12 @@
                 .as_slice(),
         );
 
-        if let Some(left_tau) = &self.left_tau {
+        if let Some(left_lambda) = &self.left_lambda {
             self.right.underlying.get_map(left_shifted_b.s() - 1).apply(
                 result.as_slice_mut(),
                 neg_1,
                 left_shifted_b.t() - 1,
-                left_tau
+                left_lambda
                     .get_map(gen.s())
                     .output(gen.t(), gen.idx())
                     .as_slice(),
@@ -2835,25 +2848,34 @@
     pub fn new(
         left: Arc<SecondaryResolutionHomomorphism<S, T>>,
         right: Arc<SecondaryResolutionHomomorphism<T, U>>,
-        left_tau: Option<Arc<ResolutionHomomorphism<S, T>>>,
-        right_tau: Option<Arc<ResolutionHomomorphism<T, U>>>,
+        left_lambda: Option<Arc<ResolutionHomomorphism<S, T>>>,
+        right_lambda: Option<Arc<ResolutionHomomorphism<T, U>>>,
         underlying: Arc<ChainHomotopy<S, T, U>>,
     ) -> Self {
         assert!(Arc::ptr_eq(&underlying.left(), &left.underlying));
         assert!(Arc::ptr_eq(&underlying.right(), &right.underlying));
 
-        if let Some(left_tau) = &left_tau {
-            assert!(Arc::ptr_eq(&left_tau.source, &underlying.left().source));
-            assert!(Arc::ptr_eq(&left_tau.target, &underlying.left().target));
+        if let Some(left_lambda) = &left_lambda {
+            assert!(Arc::ptr_eq(&left_lambda.source, &underlying.left().source));
+            assert!(Arc::ptr_eq(&left_lambda.target, &underlying.left().target));
 
-            assert_eq!(left_tau.shift, underlying.left().shift + TAU_BIDEGREE);
+            assert_eq!(left_lambda.shift, underlying.left().shift + LAMBDA_BIDEGREE);
         }
 
-        if let Some(right_tau) = &right_tau {
-            assert!(Arc::ptr_eq(&right_tau.source, &underlying.right().source));
-            assert!(Arc::ptr_eq(&right_tau.target, &underlying.right().target));
-
-            assert_eq!(right_tau.shift, underlying.right().shift + TAU_BIDEGREE);
+        if let Some(right_lambda) = &right_lambda {
+            assert!(Arc::ptr_eq(
+                &right_lambda.source,
+                &underlying.right().source
+            ));
+            assert!(Arc::ptr_eq(
+                &right_lambda.target,
+                &underlying.right().target
+            ));
+
+            assert_eq!(
+                right_lambda.shift,
+                underlying.right().shift + LAMBDA_BIDEGREE
+            );
         }
 
         if let Some(p) = underlying.save_dir().write() {
@@ -2865,8 +2887,8 @@
         Self {
             left,
             right,
-            left_tau,
-            right_tau,
+            left_lambda,
+            right_lambda,
             homotopies: OnceBiVec::new(underlying.shift().s() as i32),
             underlying,
             intermediates: DashMap::new(),
diff --git a/docs/src/secondary/secondary.rs.html b/docs/src/secondary/secondary.rs.html
index 7619373b3..7ae42516a 100644
--- a/docs/src/secondary/secondary.rs.html
+++ b/docs/src/secondary/secondary.rs.html
@@ -141,7 +141,7 @@
 //!
 //! To compute data for a single `s`, run the script with the environment variable
 //! `SECONDARY_JOB=s`. The minimum value of `s` is the cohomological degree shift of the secondary
-//! homotopy (i.e. the difference in degrees between the input class and the τ part of the answer;
+//! homotopy (i.e. the difference in degrees between the input class and the λ part of the answer;
 //! 2 in the case of `secondary`), and the maximum value of `s` is the `max_s` of the resolution.
 //!
 //! After running this script for all `s` in the range, run it as usual to produce the final
diff --git a/docs/src/secondary_massey/secondary_massey.rs.html b/docs/src/secondary_massey/secondary_massey.rs.html
index c5de701ce..92db36c91 100644
--- a/docs/src/secondary_massey/secondary_massey.rs.html
+++ b/docs/src/secondary_massey/secondary_massey.rs.html
@@ -518,23 +518,24 @@
 493
 494
 495
-
//! Computes massey products in $\Mod_{C\tau^2}$.
+496
+497
+
//! Computes massey products in $\Mod_{C\lambda^2}$.
 //!
 //! # Usage
-//! This computes all Massey products of the form $\langle -, b, a\rangle$, where
-//! $a \in \Ext^{\*, \*}(M, k)$ and $b, (-) \in \Ext^{\*, \*}(k, k)$. It does not verify that the
-//! Massey product is valid, i.e. $a$ and $b$ both lift to $\Mod_{C\tau^2}$ and have trivial
-//! product.
+//! This computes all Massey products of the form $\langle -, b, a\rangle$, where $a \in \Ext^{\*,
+//! \*}(M, k)$ and $b, (-) \in \Ext^{\*, \*}(k, k)$. It does not verify that the Massey product is
+//! valid, i.e. $a$ and $b$ both lift to $\Mod_{C\lambda^2}$ and have trivial product.
 //!
 //! Since we must choose $a$ and $b$ to have trivial product, it is necessary to be able to specify
-//! the $\tau$ part of them, and not insist that they are standard lifts of the $\Ext$ classes.
-//! Thus, the user is first prompted for the $\Ext$ part, then the $\tau$ part of each class. To
+//! the $\lambda$ part of them, and not insist that they are standard lifts of the $\Ext$ classes.
+//! Thus, the user is first prompted for the $\Ext$ part, then the $\lambda$ part of each class. To
 //! set a part to zero, supply an empty name. Note that if the bidegree right above the class is
-//! empty, the user is not prompted for the $\tau$ part.
+//! empty, the user is not prompted for the $\lambda$ part.
 //!
 //! # Output
 //! This computes the Massey products up to a sign. We write our output in the category
-//! $\Mod_{C\tau^2}$, so the format is $\langle a, b, -\rangle$ instead of $\langle -, b,
+//! $\Mod_{C\lambda^2}$, so the format is $\langle a, b, -\rangle$ instead of $\langle -, b,
 //! a\rangle$. Brave souls are encouraged to figure out the correct sign for the products.
 
 use std::sync::Arc;
@@ -557,7 +558,7 @@
     name: String,
     class: FpVector,
     hom_lift: Arc<SecondaryResolutionHomomorphism<QueryModuleResolution, QueryModuleResolution>>,
-    tau_part: Option<Arc<ResolutionHomomorphism<QueryModuleResolution, QueryModuleResolution>>>,
+    lambda_part: Option<Arc<ResolutionHomomorphism<QueryModuleResolution, QueryModuleResolution>>>,
 }
 
 fn get_hom(
@@ -576,7 +577,7 @@
 
     source
         .underlying()
-        .compute_through_stem(shift + TAU_BIDEGREE);
+        .compute_through_stem(shift + LAMBDA_BIDEGREE);
 
     let hom = Arc::new(ResolutionHomomorphism::new(
         ext_name.clone(),
@@ -586,9 +587,11 @@
     ));
 
     let num_gens = source.underlying().number_of_gens_in_bidegree(shift);
-    let num_tau_gens = hom.source.number_of_gens_in_bidegree(shift + TAU_BIDEGREE);
+    let num_lambda_gens = hom
+        .source
+        .number_of_gens_in_bidegree(shift + LAMBDA_BIDEGREE);
 
-    let mut class = FpVector::new(p, num_gens + num_tau_gens);
+    let mut class = FpVector::new(p, num_gens + num_lambda_gens);
 
     let mut matrix = Matrix::new(p, num_gens, 1);
 
@@ -608,20 +611,20 @@
 
     let hom_lift = Arc::new(SecondaryResolutionHomomorphism::new(source, target, hom));
 
-    let tau_part = if num_tau_gens > 0 {
-        let tau_name: String = query::raw(&format!("Name of τ part of {name}"), str::parse);
-        if tau_name.is_empty() {
+    let lambda_part = if num_lambda_gens > 0 {
+        let lambda_name: String = query::raw(&format!("Name of λ part of {name}"), str::parse);
+        if lambda_name.is_empty() {
             None
         } else {
-            let v = query::vector(&format!("Input Ext class {tau_name}"), num_tau_gens);
+            let v = query::vector(&format!("Input Ext class {lambda_name}"), num_lambda_gens);
             for (i, &x) in v.iter().enumerate() {
                 class.set_entry(num_gens + i, x);
             }
             Some(Arc::new(ResolutionHomomorphism::from_class(
-                tau_name,
+                lambda_name,
                 hom_lift.source(),
                 hom_lift.target(),
-                shift + TAU_BIDEGREE,
+                shift + LAMBDA_BIDEGREE,
                 &v,
             )))
         }
@@ -629,17 +632,17 @@
         None
     };
 
-    let name = match (&*ext_name, tau_part.as_ref().map_or("", |x| x.name())) {
+    let name = match (&*ext_name, lambda_part.as_ref().map_or("", |x| x.name())) {
         ("", "") => panic!("Do not compute zero Massey product"),
-        ("", x) => format!("τ{x}"),
+        ("", x) => format!("λ{x}"),
         (x, "") => format!("[{x}]"),
-        (x, y) => format!("[{x}] + τ{y}"),
+        (x, y) => format!("[{x}] + λ{y}"),
     };
     HomData {
         name,
         class,
         hom_lift,
-        tau_part,
+        lambda_part,
     }
 }
 
@@ -669,13 +672,13 @@
         name: a_name,
         class: _,
         hom_lift: a,
-        tau_part: a_tau,
+        lambda_part: a_lambda,
     } = get_hom("a", Arc::clone(&res_lift), Arc::clone(&unit_lift));
     let HomData {
         name: b_name,
         class: b_class,
         hom_lift: b,
-        tau_part: b_tau,
+        lambda_part: b_lambda,
     } = get_hom("b", Arc::clone(&unit_lift), Arc::clone(&unit_lift));
 
     let shift = Bidegree::s_t(
@@ -708,11 +711,11 @@
             b.underlying().extend_all();
             b.extend_all();
         });
-        if let Some(a_tau) = &a_tau {
-            s.spawn(|_| a_tau.extend_all());
+        if let Some(a_lambda) = &a_lambda {
+            s.spawn(|_| a_lambda.extend_all());
         }
-        if let Some(b_tau) = &b_tau {
-            s.spawn(|_| b_tau.extend_all());
+        if let Some(b_lambda) = &b_lambda {
+            s.spawn(|_| b_lambda.extend_all());
         }
     });
 
@@ -730,7 +733,7 @@
 
     // Compute first homotopy
     {
-        let v = a.product_nullhomotopy(a_tau.as_deref(), &res_sseq, b_shift, b_class.as_slice());
+        let v = a.product_nullhomotopy(a_lambda.as_deref(), &res_sseq, b_shift, b_class.as_slice());
         let homotopy = chain_homotopy.homotopy(b_shift.s() + a.underlying().shift.s() - 1);
         let htpy_source = a.shift() + b_shift;
         homotopy.extend_by_zero(htpy_source.t() - 1);
@@ -747,8 +750,8 @@
     let ch_lift = SecondaryChainHomotopy::new(
         Arc::clone(&a),
         Arc::clone(&b),
-        a_tau.clone(),
-        b_tau.clone(),
+        a_lambda.clone(),
+        b_lambda.clone(),
         Arc::clone(&chain_homotopy),
     );
 
@@ -781,28 +784,29 @@
         let source = c + shift - Bidegree::s_t(1, 0);
 
         let source_num_gens = resolution.number_of_gens_in_bidegree(source);
-        let source_tau_num_gens = resolution.number_of_gens_in_bidegree(source + TAU_BIDEGREE);
+        let source_lambda_num_gens =
+            resolution.number_of_gens_in_bidegree(source + LAMBDA_BIDEGREE);
 
-        if source_num_gens + source_tau_num_gens == 0 {
+        if source_num_gens + source_lambda_num_gens == 0 {
             continue;
         }
 
         // We find the kernel of multiplication by b.
         let target_num_gens = unit.number_of_gens_in_bidegree(c);
-        let target_tau_num_gens = unit.number_of_gens_in_bidegree(c + TAU_BIDEGREE);
-        let target_all_gens = target_num_gens + target_tau_num_gens;
+        let target_lambda_num_gens = unit.number_of_gens_in_bidegree(c + LAMBDA_BIDEGREE);
+        let target_all_gens = target_num_gens + target_lambda_num_gens;
 
         let prod_num_gens = unit.number_of_gens_in_bidegree(c + b_shift);
-        let prod_tau_num_gens = unit.number_of_gens_in_bidegree(c + b_shift + TAU_BIDEGREE);
-        let prod_all_gens = prod_num_gens + prod_tau_num_gens;
+        let prod_lambda_num_gens = unit.number_of_gens_in_bidegree(c + b_shift + LAMBDA_BIDEGREE);
+        let prod_all_gens = prod_num_gens + prod_lambda_num_gens;
 
         let e3_kernel = {
             let target_page_data = get_page_data(&unit_sseq, c);
-            let target_tau_page_data = get_page_data(&unit_sseq, c + TAU_BIDEGREE);
-            let product_tau_page_data = get_page_data(&unit_sseq, c + b_shift + TAU_BIDEGREE);
+            let target_lambda_page_data = get_page_data(&unit_sseq, c + LAMBDA_BIDEGREE);
+            let product_lambda_page_data = get_page_data(&unit_sseq, c + b_shift + LAMBDA_BIDEGREE);
 
-            // We first compute elements whose product vanish mod tau, and later see what the possible
-            // lifts are. We do it this way to avoid Z/p^2 problems
+            // We first compute elements whose product vanish mod lambda, and later see what the
+            // possible lifts are. We do it this way to avoid Z/p^2 problems
 
             let e2_kernel: Subspace = {
                 let mut product_matrix = Matrix::new(
@@ -837,12 +841,12 @@
                 let e2_ker_dim = e2_kernel.dimension();
                 let mut product_matrix = Matrix::new(
                     p,
-                    e2_ker_dim + target_tau_page_data.quotient_dimension(),
+                    e2_ker_dim + target_lambda_page_data.quotient_dimension(),
                     target_all_gens + prod_all_gens,
                 );
 
                 b.hom_k_with(
-                    b_tau.as_deref(),
+                    b_lambda.as_deref(),
                     Some(&unit_sseq),
                     c,
                     e2_kernel.basis().iter().map(FpVector::as_slice),
@@ -855,7 +859,7 @@
                         .assign(v.as_slice());
                 }
 
-                // Now add the tau multiples
+                // Now add the lambda multiples
                 let m = Matrix::from_vec(
                     p,
                     &b.underlying()
@@ -864,7 +868,7 @@
                 );
 
                 let mut count = 0;
-                for (i, &v) in target_tau_page_data.quotient_pivots().iter().enumerate() {
+                for (i, &v) in target_lambda_page_data.quotient_pivots().iter().enumerate() {
                     if v >= 0 {
                         continue;
                     }
@@ -872,7 +876,7 @@
                     row.add_basis_element(prod_all_gens + target_num_gens + i, 1);
                     row.slice_mut(prod_num_gens, prod_all_gens)
                         .add(m[i].as_slice(), 1);
-                    product_tau_page_data
+                    product_lambda_page_data
                         .reduce_by_quotient(row.slice_mut(prod_num_gens, prod_all_gens));
                     count += 1;
                 }
@@ -924,16 +928,16 @@
                     }
                 };
 
-                let tau_part = gen.slice(target_num_gens, target_all_gens);
-                let num_entries = tau_part.iter_nonzero().count();
+                let lambda_part = gen.slice(target_num_gens, target_all_gens);
+                let num_entries = lambda_part.iter_nonzero().count();
                 if num_entries > 0 {
                     if has_ext {
                         print!(" + ");
                     }
-                    print!("τ");
+                    print!("λ");
 
                     let basis_string = BidegreeElement::new(
-                        c + TAU_BIDEGREE,
+                        c + LAMBDA_BIDEGREE,
                         gen.slice(target_num_gens, target_all_gens).to_owned(),
                     )
                     .to_basis_string();
@@ -948,7 +952,7 @@
 
             scratch0.clear();
             scratch0.resize(source_num_gens, 0);
-            scratch1.set_scratch_vector_size(source_tau_num_gens);
+            scratch1.set_scratch_vector_size(source_lambda_num_gens);
 
             // First deal with the null-homotopy of ab
             for (i, v) in gen.slice(0, target_num_gens).iter_nonzero() {
@@ -964,7 +968,7 @@
             // Now do the -1 part of the null-homotopy of bc.
             {
                 let sign = p * p - 1;
-                let out = b.product_nullhomotopy(b_tau.as_deref(), &unit_sseq, c, gen);
+                let out = b.product_nullhomotopy(b_lambda.as_deref(), &unit_sseq, c, gen);
                 for (i, v) in out.iter_nonzero() {
                     scratch0
                         .iter_mut()
@@ -980,8 +984,8 @@
 
             print!("[{}]", scratch0.iter().map(|x| *x % p).format(", "));
 
-            // Then deal with the rest of the null-homotopy of bc. This is just the null-homotopy
-            // of 2.
+            // Then deal with the rest of the null-homotopy of bc. This is just the null-homotopy of
+            // 2.
             scratch0.clear();
             scratch0.resize(prod_num_gens, 0);
 
@@ -996,9 +1000,9 @@
                 if extra == 0 {
                     continue;
                 }
-                for gen_idx in 0..source_tau_num_gens {
-                    let m = a.underlying().get_map((source + TAU_BIDEGREE).s());
-                    let dx = m.output((source + TAU_BIDEGREE).t(), gen_idx);
+                for gen_idx in 0..source_lambda_num_gens {
+                    let m = a.underlying().get_map((source + LAMBDA_BIDEGREE).s());
+                    let dx = m.output((source + LAMBDA_BIDEGREE).t(), gen_idx);
                     let idx = unit.module((c + shift).s()).operation_generator_to_index(
                         1,
                         h_0,
@@ -1008,7 +1012,7 @@
                     scratch1.add_basis_element(gen_idx, dx.entry(idx));
                 }
             }
-            println!(" + τ{scratch1}");
+            println!(" + λ{scratch1}");
         }
     }
     Ok(())
diff --git a/docs/src/secondary_product/secondary_product.rs.html b/docs/src/secondary_product/secondary_product.rs.html
index e67909482..594a1c392 100644
--- a/docs/src/secondary_product/secondary_product.rs.html
+++ b/docs/src/secondary_product/secondary_product.rs.html
@@ -205,23 +205,25 @@
 180
 181
 182
-
//! Computes products in $\Mod_{C\tau^2}$.
+183
+184
+
//! Computes products in $\Mod_{C\lambda^2}$.
 //!
 //! # Usage
-//! The program asks for a module $M$ and an element $x \in \Ext^{\*, \*}(M, k)$. It then
-//! computes the secondary product of the standard lift of $x$ with all (standard lifts of)
-//! elements in $\Ext^{\*, \*}(M, k)$ that survive $d_2$.
+//! The program asks for a module $M$ and an element $x \in \Ext^{\*, \*}(M, k)$. It then computes
+//! the secondary product of the standard lift of $x$ with all (standard lifts of) elements in
+//! $\Ext^{\*, \*}(M, k)$ that survive $d_2$.
 //!
 //! These products are computed for all elements whose product with $x$ lies in the specified
 //! bidegree of $M$, and $k$ is resolved as far as necessary to support this computation.
 //!
 //! Running this program requires computing the secondary resolution of both $M$ and $k$, i.e. the
-//! calculations performed by [`secondary`](../secondary/index.html). The user is encouraged to
-//! make use of a save file to reuse these calculations for different products. (When $M$ is not
-//! equal to $k$, the user will be prompted for the save directory of $k$)
+//! calculations performed by [`secondary`](../secondary/index.html). The user is encouraged to make
+//! use of a save file to reuse these calculations for different products. (When $M$ is not equal to
+//! $k$, the user will be prompted for the save directory of $k$)
 //!
 //! # Output
-//! This prints the corresponding products in $\Mod_{C\tau^2}$. In particular, $x$ multiplies on
+//! This prints the corresponding products in $\Mod_{C\lambda^2}$. In particular, $x$ multiplies on
 //! the left, and the sign twist of $(-1)^{s't}$ is inserted.
 //!
 //! # Notes
@@ -337,7 +339,7 @@
     for b in unit.iter_nonzero_stem() {
         // The potential target has to be hit, and we need to have computed (the data need for) the
         // d2 that hits the potential target.
-        if !resolution.has_computed_bidegree(b + shift + TAU_BIDEGREE) {
+        if !resolution.has_computed_bidegree(b + shift + LAMBDA_BIDEGREE) {
             continue;
         }
         if !resolution.has_computed_bidegree(b + shift - Bidegree::s_t(1, 0)) {
@@ -347,9 +349,9 @@
         let page_data = get_page_data(unit_sseq.as_ref(), b);
 
         let target_num_gens = resolution.number_of_gens_in_bidegree(b + shift);
-        let tau_num_gens = resolution.number_of_gens_in_bidegree(b + shift + TAU_BIDEGREE);
+        let lambda_num_gens = resolution.number_of_gens_in_bidegree(b + shift + LAMBDA_BIDEGREE);
 
-        if target_num_gens == 0 && tau_num_gens == 0 {
+        if target_num_gens == 0 && lambda_num_gens == 0 {
             continue;
         }
 
@@ -358,7 +360,7 @@
             let hom_k = hom.get_map((b + shift).s()).hom_k(b.t());
             for i in page_data.complement_pivots() {
                 let gen = BidegreeGenerator::new(b, i);
-                println!("{name} τ x_{gen} = τ {:?}", &hom_k[i]);
+                println!("{name} λ x_{gen} = λ {:?}", &hom_k[i]);
             }
         }
 
@@ -367,8 +369,10 @@
             continue;
         }
 
-        let mut outputs =
-            vec![FpVector::new(p, target_num_gens + tau_num_gens); page_data.subspace_dimension()];
+        let mut outputs = vec![
+            FpVector::new(p, target_num_gens + lambda_num_gens);
+            page_data.subspace_dimension()
+        ];
 
         hom_lift.hom_k(
             Some(&res_sseq),
@@ -378,9 +382,9 @@
         );
         for (gen, output) in page_data.subspace_gens().zip_eq(outputs) {
             println!(
-                "{name} [{basis_string}] = {} + τ {}",
+                "{name} [{basis_string}] = {} + λ {}",
                 output.slice(0, target_num_gens),
-                output.slice(target_num_gens, target_num_gens + tau_num_gens),
+                output.slice(target_num_gens, target_num_gens + lambda_num_gens),
                 basis_string = BidegreeElement::new(b, gen.to_owned()).to_basis_string(),
             );
         }
diff --git a/docs/sseq/coordinates/bidegree/struct.Bidegree.html b/docs/sseq/coordinates/bidegree/struct.Bidegree.html
index 1c8645174..2eabe0b68 100644
--- a/docs/sseq/coordinates/bidegree/struct.Bidegree.html
+++ b/docs/sseq/coordinates/bidegree/struct.Bidegree.html
@@ -35,12 +35,12 @@
 
§Panics

Panics if every element is in homological degree 0. This is the only case that would result in a bidegree in negative homological degree.

-

Trait Implementations§

source§

impl Add for Bidegree

source§

type Output = Bidegree

The resulting type after applying the + operator.
source§

fn add(self, other: Self) -> Self

Performs the + operation. Read more
source§

impl Clone for Bidegree

source§

fn clone(&self) -> Bidegree

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 Bidegree

source§

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

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

impl Default for Bidegree

source§

fn default() -> Bidegree

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

impl<'de> Deserialize<'de> for Bidegree

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 Bidegree

source§

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

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

impl Hash for Bidegree

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Trait Implementations§

source§

impl Add for Bidegree

source§

type Output = Bidegree

The resulting type after applying the + operator.
source§

fn add(self, other: Self) -> Self

Performs the + operation. Read more
source§

impl Clone for Bidegree

source§

fn clone(&self) -> Bidegree

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 Bidegree

source§

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

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

impl Default for Bidegree

source§

fn default() -> Bidegree

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

impl<'de> Deserialize<'de> for Bidegree

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 Bidegree

source§

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

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

impl Hash for Bidegree

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

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

impl PartialEq for Bidegree

source§

fn eq(&self, other: &Bidegree) -> 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 Bidegree

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
source§

impl Sub for Bidegree

source§

type Output = Bidegree

The resulting type after applying the - operator.
source§

fn sub(self, other: Self) -> Self

Performs the - operation. Read more
source§

impl Copy for Bidegree

source§

impl Eq for Bidegree

source§

impl StructuralPartialEq for Bidegree

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +and should not be overridden without very good reason.

source§

impl Serialize for Bidegree

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
source§

impl Sub for Bidegree

source§

type Output = Bidegree

The resulting type after applying the - operator.
source§

fn sub(self, other: Self) -> Self

Performs the - operation. Read more
source§

impl Copy for Bidegree

source§

impl Eq for Bidegree

source§

impl StructuralPartialEq for Bidegree

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 @@ -72,5 +72,5 @@
§Panics
V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file +[WithDispatch] wrapper. Read more
source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/sseq/coordinates/element/struct.BidegreeElement.html b/docs/sseq/coordinates/element/struct.BidegreeElement.html index e59c1d3be..34b3ad286 100644 --- a/docs/sseq/coordinates/element/struct.BidegreeElement.html +++ b/docs/sseq/coordinates/element/struct.BidegreeElement.html @@ -45,12 +45,12 @@ compact: bool, ) -> String

An algebra-aware string representation. This assumes that the element belongs to module, and uses the string representation of its underlying algebra’s operations.

-

Trait Implementations§

source§

impl Clone for BidegreeElement

source§

fn clone(&self) -> BidegreeElement

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 BidegreeElement

source§

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

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

impl<'de> Deserialize<'de> for BidegreeElement

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 BidegreeElement

source§

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

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

impl Hash for BidegreeElement

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Trait Implementations§

source§

impl Clone for BidegreeElement

source§

fn clone(&self) -> BidegreeElement

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 BidegreeElement

source§

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

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

impl<'de> Deserialize<'de> for BidegreeElement

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 BidegreeElement

source§

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

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

impl Hash for BidegreeElement

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

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

impl PartialEq for BidegreeElement

source§

fn eq(&self, other: &BidegreeElement) -> 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 BidegreeElement

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
source§

impl TryFrom<BidegreeElement> for BidegreeGenerator

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(value: BidegreeElement) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Eq for BidegreeElement

source§

impl StructuralPartialEq for BidegreeElement

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +and should not be overridden without very good reason.

source§

impl Serialize for BidegreeElement

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
source§

impl TryFrom<BidegreeElement> for BidegreeGenerator

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(value: BidegreeElement) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Eq for BidegreeElement

source§

impl StructuralPartialEq for BidegreeElement

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 @@ -82,5 +82,5 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file +[WithDispatch] wrapper. Read more
source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/sseq/coordinates/generator/struct.BidegreeGenerator.html b/docs/sseq/coordinates/generator/struct.BidegreeGenerator.html index 54da97ffe..ca1debe46 100644 --- a/docs/sseq/coordinates/generator/struct.BidegreeGenerator.html +++ b/docs/sseq/coordinates/generator/struct.BidegreeGenerator.html @@ -30,12 +30,12 @@ sequences.

Fields§

§degree: Bidegree

Bidegree of the element

§idx: usize

Position in the canonical basis for this bidegree

-

Implementations§

source§

impl BidegreeGenerator

source

pub fn new<T: Into<Bidegree>>(degree: T, idx: usize) -> Self

source

pub fn s_t(s: u32, t: i32, idx: usize) -> Self

source

pub fn n_s(n: i32, s: u32, idx: usize) -> Self

source

pub fn s(&self) -> u32

source

pub fn t(&self) -> i32

source

pub fn degree(&self) -> Bidegree

source

pub fn n(&self) -> i32

source

pub fn idx(&self) -> usize

source

pub fn into_element(self, p: ValidPrime, ambient: usize) -> BidegreeElement

Trait Implementations§

source§

impl Clone for BidegreeGenerator

source§

fn clone(&self) -> BidegreeGenerator

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 BidegreeGenerator

source§

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

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

impl Default for BidegreeGenerator

source§

fn default() -> BidegreeGenerator

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

impl<'de> Deserialize<'de> for BidegreeGenerator

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 BidegreeGenerator

source§

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

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

impl From<(Bidegree, usize)> for BidegreeGenerator

source§

fn from(tuple: (Bidegree, usize)) -> Self

Converts to this type from the input type.
source§

impl Hash for BidegreeGenerator

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Implementations§

source§

impl BidegreeGenerator

source

pub fn new<T: Into<Bidegree>>(degree: T, idx: usize) -> Self

source

pub fn s_t(s: u32, t: i32, idx: usize) -> Self

source

pub fn n_s(n: i32, s: u32, idx: usize) -> Self

source

pub fn s(&self) -> u32

source

pub fn t(&self) -> i32

source

pub fn degree(&self) -> Bidegree

source

pub fn n(&self) -> i32

source

pub fn idx(&self) -> usize

source

pub fn into_element(self, p: ValidPrime, ambient: usize) -> BidegreeElement

Trait Implementations§

source§

impl Clone for BidegreeGenerator

source§

fn clone(&self) -> BidegreeGenerator

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 BidegreeGenerator

source§

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

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

impl Default for BidegreeGenerator

source§

fn default() -> BidegreeGenerator

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

impl<'de> Deserialize<'de> for BidegreeGenerator

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 BidegreeGenerator

source§

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

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

impl From<(Bidegree, usize)> for BidegreeGenerator

source§

fn from(tuple: (Bidegree, usize)) -> Self

Converts to this type from the input type.
source§

impl Hash for BidegreeGenerator

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

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

impl PartialEq for BidegreeGenerator

source§

fn eq(&self, other: &BidegreeGenerator) -> 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 BidegreeGenerator

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
source§

impl TryFrom<BidegreeElement> for BidegreeGenerator

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(value: BidegreeElement) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Copy for BidegreeGenerator

source§

impl Eq for BidegreeGenerator

source§

impl StructuralPartialEq for BidegreeGenerator

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +and should not be overridden without very good reason.

source§

impl Serialize for BidegreeGenerator

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
source§

impl TryFrom<BidegreeElement> for BidegreeGenerator

source§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(value: BidegreeElement) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Copy for BidegreeGenerator

source§

impl Eq for BidegreeGenerator

source§

impl StructuralPartialEq for BidegreeGenerator

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 @@ -67,5 +67,5 @@ V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

\ No newline at end of file +[WithDispatch] wrapper. Read more
source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/trait.impl/serde/de/trait.Deserialize.js b/docs/trait.impl/serde/de/trait.Deserialize.js index 8c74d71a7..947302856 100644 --- a/docs/trait.impl/serde/de/trait.Deserialize.js +++ b/docs/trait.impl/serde/de/trait.Deserialize.js @@ -1,5 +1,5 @@ (function() { - var implementors = Object.fromEntries([["algebra",[["impl<'de> Deserialize<'de> for MilnorProfile"],["impl<'de> Deserialize<'de> for AlgebraSpec"],["impl<'de> Deserialize<'de> for RPSpec"]]],["bivec",[["impl<'de, T: Deserialize<'de>> Deserialize<'de> for BiVec<T>"]]],["fp",[["impl<'de> Deserialize<'de> for FpVector"],["impl<'de> Deserialize<'de> for P2"],["impl<'de> Deserialize<'de> for P3"],["impl<'de> Deserialize<'de> for P5"],["impl<'de> Deserialize<'de> for P7"],["impl<'de> Deserialize<'de> for ValidPrime"]]],["sseq",[["impl<'de> Deserialize<'de> for Bidegree"],["impl<'de> Deserialize<'de> for BidegreeElement"],["impl<'de> Deserialize<'de> for BidegreeGenerator"]]]]); + var implementors = Object.fromEntries([["algebra",[["impl<'de> Deserialize<'de> for MilnorProfile"],["impl<'de> Deserialize<'de> for AlgebraSpec"],["impl<'de> Deserialize<'de> for RPSpec"]]],["bivec",[["impl<'de, T: Deserialize<'de>> Deserialize<'de> for BiVec<T>"]]],["fp",[["impl<'de> Deserialize<'de> for FpVector"],["impl<'de> Deserialize<'de> for P2"],["impl<'de> Deserialize<'de> for P3"],["impl<'de> Deserialize<'de> for P5"],["impl<'de> Deserialize<'de> for P7"],["impl<'de> Deserialize<'de> for ValidPrime"]]],["sseq",[["impl<'de> Deserialize<'de> for Bidegree"],["impl<'de> Deserialize<'de> for BidegreeElement"],["impl<'de> Deserialize<'de> for BidegreeGenerator"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { diff --git a/docs/trait.impl/serde/ser/trait.Serialize.js b/docs/trait.impl/serde/ser/trait.Serialize.js index 5c5545897..5ce0929b9 100644 --- a/docs/trait.impl/serde/ser/trait.Serialize.js +++ b/docs/trait.impl/serde/ser/trait.Serialize.js @@ -1,5 +1,5 @@ (function() { - var implementors = Object.fromEntries([["algebra",[["impl Serialize for MilnorProfile"]]],["bivec",[["impl<T: Serialize> Serialize for BiVec<T>"]]],["fp",[["impl Serialize for FpVector"],["impl Serialize for P2"],["impl Serialize for P3"],["impl Serialize for P5"],["impl Serialize for P7"],["impl Serialize for ValidPrime"]]],["sseq",[["impl Serialize for Bidegree"],["impl Serialize for BidegreeElement"],["impl Serialize for BidegreeGenerator"]]]]); + var implementors = Object.fromEntries([["algebra",[["impl Serialize for MilnorProfile"]]],["bivec",[["impl<T: Serialize> Serialize for BiVec<T>"]]],["fp",[["impl Serialize for FpVector"],["impl Serialize for P2"],["impl Serialize for P3"],["impl Serialize for P5"],["impl Serialize for P7"],["impl Serialize for ValidPrime"]]],["sseq",[["impl Serialize for Bidegree"],["impl Serialize for BidegreeElement"],["impl Serialize for BidegreeGenerator"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { diff --git a/docs/type.impl/alloc/boxed/struct.Box.js b/docs/type.impl/alloc/boxed/struct.Box.js index 605b31082..3bdca39cb 100644 --- a/docs/type.impl/alloc/boxed/struct.Box.js +++ b/docs/type.impl/alloc/boxed/struct.Box.js @@ -1,5 +1,5 @@ (function() { - var type_impls = Object.fromEntries([["algebra",[["
§

impl<A> Arbitrary for Box<A>
where\n A: Arbitrary,

§

type Parameters = <A as Arbitrary>::Parameters

The type of parameters that arbitrary_with accepts for configuration\nof the generated Strategy. Parameters must implement Default.
§

type Strategy = MapInto<<A as Arbitrary>::Strategy, Box<A>>

The type of Strategy used to generate values of type Self.
§

fn arbitrary_with(\n args: <Box<A> as Arbitrary>::Parameters,\n) -> <Box<A> as Arbitrary>::Strategy

Generates a Strategy for producing arbitrary values of type the\nimplementing type (Self). The strategy is passed the arguments given\nin args. Read more
§

fn arbitrary() -> Self::Strategy

Generates a Strategy for producing arbitrary values\nof type the implementing type (Self). Read more
","Arbitrary","algebra::module::steenrod_module::SteenrodModule"],["
§

impl<A> ArbitraryF1<A> for Box<A>
where\n A: Debug + 'static,

§

type Parameters = ()

The type of parameters that lift1_with accepts for\nconfiguration of the lifted and generated Strategy. Parameters\nmust implement Default.
§

fn lift1_with<S>(\n base: S,\n _args: <Box<A> as ArbitraryF1<A>>::Parameters,\n) -> BoxedStrategy<Box<A>>
where\n S: Strategy<Value = A> + 'static,

Lifts a given Strategy to a new Strategy for the (presumably)\nbigger type. This is useful for lifting a Strategy for SomeType\nto a container such as Vec of SomeType. The composite strategy is\npassed the arguments given in args. Read more
§

fn lift1<AS>(base: AS) -> BoxedStrategy<Self>
where\n AS: Strategy<Value = A> + 'static,

Lifts a given Strategy to a new Strategy for the (presumably)\nbigger type. This is useful for lifting a Strategy for SomeType\nto a container such as Vec<SomeType>. Read more
","ArbitraryF1","algebra::module::steenrod_module::SteenrodModule"],["
1.64.0 · source§

impl<T> AsFd for Box<T>
where\n T: AsFd + ?Sized,

source§

fn as_fd(&self) -> BorrowedFd<'_>

Borrows the file descriptor. Read more
","AsFd","algebra::module::steenrod_module::SteenrodModule"],["
1.5.0 · source§

impl<T, A> AsMut<T> for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

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

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut","algebra::module::steenrod_module::SteenrodModule"],["
1.63.0 · source§

impl<T> AsRawFd for Box<T>
where\n T: AsRawFd,

source§

fn as_raw_fd(&self) -> i32

Extracts the raw file descriptor. Read more
","AsRawFd","algebra::module::steenrod_module::SteenrodModule"],["
1.5.0 · source§

impl<T, A> AsRef<T> for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

fn as_ref(&self) -> &T

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<Args, F, A> AsyncFn<Args> for Box<F, A>
where\n Args: Tuple,\n F: AsyncFn<Args> + ?Sized,\n A: Allocator,

source§

extern "rust-call" fn async_call(\n &self,\n args: Args,\n) -> <Box<F, A> as AsyncFnMut<Args>>::CallRefFuture<'_>

🔬This is a nightly-only experimental API. (async_fn_traits)
Call the AsyncFn, returning a future which may borrow from the called closure.
","AsyncFn","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<Args, F, A> AsyncFnMut<Args> for Box<F, A>
where\n Args: Tuple,\n F: AsyncFnMut<Args> + ?Sized,\n A: Allocator,

source§

type CallRefFuture<'a> = <F as AsyncFnMut<Args>>::CallRefFuture<'a>\nwhere\n Box<F, A>: 'a

🔬This is a nightly-only experimental API. (async_fn_traits)
source§

extern "rust-call" fn async_call_mut(\n &mut self,\n args: Args,\n) -> <Box<F, A> as AsyncFnMut<Args>>::CallRefFuture<'_>

🔬This is a nightly-only experimental API. (async_fn_traits)
Call the AsyncFnMut, returning a future which may borrow from the called closure.
","AsyncFnMut","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<Args, F, A> AsyncFnOnce<Args> for Box<F, A>
where\n Args: Tuple,\n F: AsyncFnOnce<Args> + ?Sized,\n A: Allocator,

source§

type Output = <F as AsyncFnOnce<Args>>::Output

🔬This is a nightly-only experimental API. (async_fn_traits)
Output type of the called closure’s future.
source§

type CallOnceFuture = <F as AsyncFnOnce<Args>>::CallOnceFuture

🔬This is a nightly-only experimental API. (async_fn_traits)
Future returned by AsyncFnOnce::async_call_once.
source§

extern "rust-call" fn async_call_once(\n self,\n args: Args,\n) -> <Box<F, A> as AsyncFnOnce<Args>>::CallOnceFuture

🔬This is a nightly-only experimental API. (async_fn_traits)
Call the AsyncFnOnce, returning a future which may move out of the called closure.
","AsyncFnOnce","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<S> AsyncIterator for Box<S>
where\n S: AsyncIterator + Unpin + ?Sized,

source§

type Item = <S as AsyncIterator>::Item

🔬This is a nightly-only experimental API. (async_iterator)
The type of items yielded by the async iterator.
source§

fn poll_next(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>,\n) -> Poll<Option<<Box<S> as AsyncIterator>::Item>>

🔬This is a nightly-only experimental API. (async_iterator)
Attempts to pull out the next value of this async iterator, registering the\ncurrent task for wakeup if the value is not yet available, and returning\nNone if the async iterator is exhausted. Read more
source§

fn size_hint(&self) -> (usize, Option<usize>)

🔬This is a nightly-only experimental API. (async_iterator)
Returns the bounds on the remaining length of the async iterator. Read more
","AsyncIterator","algebra::module::steenrod_module::SteenrodModule"],["
1.1.0 · source§

impl<T, A> Borrow<T> for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
","Borrow","algebra::module::steenrod_module::SteenrodModule"],["
1.1.0 · source§

impl<T, A> BorrowMut<T> for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
","BorrowMut","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T> Box<T>
where\n T: ?Sized,

1.4.0 · source

pub unsafe fn from_raw(raw: *mut T) -> Box<T>

Constructs a box from a raw pointer.

\n

After calling this function, the raw pointer is owned by the\nresulting Box. Specifically, the Box destructor will call\nthe destructor of T and free the allocated memory. For this\nto be safe, the memory must have been allocated in accordance\nwith the memory layout used by Box .

\n
§Safety
\n

This function is unsafe because improper use may lead to\nmemory problems. For example, a double-free may occur if the\nfunction is called twice on the same raw pointer.

\n

The safety conditions are described in the memory layout section.

\n
§Examples
\n

Recreate a Box which was previously converted to a raw pointer\nusing Box::into_raw:

\n\n
let x = Box::new(5);\nlet ptr = Box::into_raw(x);\nlet x = unsafe { Box::from_raw(ptr) };
\n

Manually create a Box from scratch by using the global allocator:

\n\n
use std::alloc::{alloc, Layout};\n\nunsafe {\n    let ptr = alloc(Layout::new::<i32>()) as *mut i32;\n    // In general .write is required to avoid attempting to destruct\n    // the (uninitialized) previous contents of `ptr`, though for this\n    // simple example `*ptr = 5` would have worked as well.\n    ptr.write(5);\n    let x = Box::from_raw(ptr);\n}
\n
",0,"algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T> Box<T>

1.0.0 · source

pub fn new(x: T) -> Box<T>

Allocates memory on the heap and then places x into it.

\n

This doesn’t actually allocate if T is zero-sized.

\n
§Examples
\n
let five = Box::new(5);
\n
1.82.0 · source

pub fn new_uninit() -> Box<MaybeUninit<T>>

Constructs a new box with uninitialized contents.

\n
§Examples
\n
let mut five = Box::<u32>::new_uninit();\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5)
\n
source

pub fn new_zeroed() -> Box<MaybeUninit<T>>

🔬This is a nightly-only experimental API. (new_zeroed_alloc)

Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes.

\n

See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

\n
§Examples
\n
#![feature(new_zeroed_alloc)]\n\nlet zero = Box::<u32>::new_zeroed();\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0)
\n
1.33.0 · source

pub fn pin(x: T) -> Pin<Box<T>>

Constructs a new Pin<Box<T>>. If T does not implement Unpin, then\nx will be pinned in memory and unable to be moved.

\n

Constructing and pinning of the Box can also be done in two steps: Box::pin(x)\ndoes the same as Box::into_pin(Box::new(x)). Consider using\ninto_pin if you already have a Box<T>, or if you want to\nconstruct a (pinned) Box in a different way than with Box::new.

\n
source

pub fn try_new(x: T) -> Result<Box<T>, AllocError>

🔬This is a nightly-only experimental API. (allocator_api)

Allocates memory on the heap then places x into it,\nreturning an error if the allocation fails

\n

This doesn’t actually allocate if T is zero-sized.

\n
§Examples
\n
#![feature(allocator_api)]\n\nlet five = Box::try_new(5)?;
\n
source

pub fn try_new_uninit() -> Result<Box<MaybeUninit<T>>, AllocError>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new box with uninitialized contents on the heap,\nreturning an error if the allocation fails

\n
§Examples
\n
#![feature(allocator_api)]\n\nlet mut five = Box::<u32>::try_new_uninit()?;\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5);
\n
source

pub fn try_new_zeroed() -> Result<Box<MaybeUninit<T>>, AllocError>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes on the heap

\n

See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

\n
§Examples
\n
#![feature(allocator_api)]\n\nlet zero = Box::<u32>::try_new_zeroed()?;\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0);
\n
",0,"algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T, A> Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source

pub const unsafe fn from_raw_in(raw: *mut T, alloc: A) -> Box<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a box from a raw pointer in the given allocator.

\n

After calling this function, the raw pointer is owned by the\nresulting Box. Specifically, the Box destructor will call\nthe destructor of T and free the allocated memory. For this\nto be safe, the memory must have been allocated in accordance\nwith the memory layout used by Box .

\n
§Safety
\n

This function is unsafe because improper use may lead to\nmemory problems. For example, a double-free may occur if the\nfunction is called twice on the same raw pointer.

\n
§Examples
\n

Recreate a Box which was previously converted to a raw pointer\nusing Box::into_raw_with_allocator:

\n\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet x = Box::new_in(5, System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nlet x = unsafe { Box::from_raw_in(ptr, alloc) };
\n

Manually create a Box from scratch by using the system allocator:

\n\n
#![feature(allocator_api, slice_ptr_get)]\n\nuse std::alloc::{Allocator, Layout, System};\n\nunsafe {\n    let ptr = System.allocate(Layout::new::<i32>())?.as_mut_ptr() as *mut i32;\n    // In general .write is required to avoid attempting to destruct\n    // the (uninitialized) previous contents of `ptr`, though for this\n    // simple example `*ptr = 5` would have worked as well.\n    ptr.write(5);\n    let x = Box::from_raw_in(ptr, System);\n}
\n
1.4.0 · source

pub fn into_raw(b: Box<T, A>) -> *mut T

Consumes the Box, returning a wrapped raw pointer.

\n

The pointer will be properly aligned and non-null.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Box. In particular, the\ncaller should properly destroy T and release the memory, taking\ninto account the memory layout used by Box. The easiest way to\ndo this is to convert the raw pointer back into a Box with the\nBox::from_raw function, allowing the Box destructor to perform\nthe cleanup.

\n

Note: this is an associated function, which means that you have\nto call it as Box::into_raw(b) instead of b.into_raw(). This\nis so that there is no conflict with a method on the inner type.

\n
§Examples
\n

Converting the raw pointer back into a Box with Box::from_raw\nfor automatic cleanup:

\n\n
let x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nlet x = unsafe { Box::from_raw(ptr) };
\n

Manual cleanup by explicitly running the destructor and deallocating\nthe memory:

\n\n
use std::alloc::{dealloc, Layout};\nuse std::ptr;\n\nlet x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nunsafe {\n    ptr::drop_in_place(ptr);\n    dealloc(ptr as *mut u8, Layout::new::<String>());\n}
\n

Note: This is equivalent to the following:

\n\n
let x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nunsafe {\n    drop(Box::from_raw(ptr));\n}
\n
source

pub fn into_raw_with_allocator(b: Box<T, A>) -> (*mut T, A)

🔬This is a nightly-only experimental API. (allocator_api)

Consumes the Box, returning a wrapped raw pointer and the allocator.

\n

The pointer will be properly aligned and non-null.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Box. In particular, the\ncaller should properly destroy T and release the memory, taking\ninto account the memory layout used by Box. The easiest way to\ndo this is to convert the raw pointer back into a Box with the\nBox::from_raw_in function, allowing the Box destructor to perform\nthe cleanup.

\n

Note: this is an associated function, which means that you have\nto call it as Box::into_raw_with_allocator(b) instead of b.into_raw_with_allocator(). This\nis so that there is no conflict with a method on the inner type.

\n
§Examples
\n

Converting the raw pointer back into a Box with Box::from_raw_in\nfor automatic cleanup:

\n\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet x = Box::new_in(String::from(\"Hello\"), System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nlet x = unsafe { Box::from_raw_in(ptr, alloc) };
\n

Manual cleanup by explicitly running the destructor and deallocating\nthe memory:

\n\n
#![feature(allocator_api)]\n\nuse std::alloc::{Allocator, Layout, System};\nuse std::ptr::{self, NonNull};\n\nlet x = Box::new_in(String::from(\"Hello\"), System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nunsafe {\n    ptr::drop_in_place(ptr);\n    let non_null = NonNull::new_unchecked(ptr);\n    alloc.deallocate(non_null.cast(), Layout::new::<String>());\n}
\n
source

pub fn as_mut_ptr(b: &mut Box<T, A>) -> *mut T

🔬This is a nightly-only experimental API. (box_as_ptr)

Returns a raw mutable pointer to the Box’s contents.

\n

The caller must ensure that the Box outlives the pointer this\nfunction returns, or else it will end up dangling.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying memory, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize references to the memory\nmay still invalidate this pointer.\nSee the example below for how this guarantee can be used.

\n
§Examples
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
#![feature(box_as_ptr)]\n\nunsafe {\n    let mut b = Box::new(0);\n    let ptr1 = Box::as_mut_ptr(&mut b);\n    ptr1.write(1);\n    let ptr2 = Box::as_mut_ptr(&mut b);\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`:\n    ptr1.write(3);\n}
\n
source

pub fn as_ptr(b: &Box<T, A>) -> *const T

🔬This is a nightly-only experimental API. (box_as_ptr)

Returns a raw pointer to the Box’s contents.

\n

The caller must ensure that the Box outlives the pointer this\nfunction returns, or else it will end up dangling.

\n

The caller must also ensure that the memory the pointer (non-transitively) points to\nis never written to (except inside an UnsafeCell) using this pointer or any pointer\nderived from it. If you need to mutate the contents of the Box, use as_mut_ptr.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying memory, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize mutable references to the memory,\nas well as writing to this memory, may still invalidate this pointer.\nSee the example below for how this guarantee can be used.

\n
§Examples
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
#![feature(box_as_ptr)]\n\nunsafe {\n    let mut v = Box::new(0);\n    let ptr1 = Box::as_ptr(&v);\n    let ptr2 = Box::as_mut_ptr(&mut v);\n    let _val = ptr2.read();\n    // No write to this memory has happened yet, so `ptr1` is still valid.\n    let _val = ptr1.read();\n    // However, once we do a write...\n    ptr2.write(1);\n    // ... `ptr1` is no longer valid.\n    // This would be UB: let _val = ptr1.read();\n}
\n
source

pub const fn allocator(b: &Box<T, A>) -> &A

🔬This is a nightly-only experimental API. (allocator_api)

Returns a reference to the underlying allocator.

\n

Note: this is an associated function, which means that you have\nto call it as Box::allocator(&b) instead of b.allocator(). This\nis so that there is no conflict with a method on the inner type.

\n
1.26.0 · source

pub fn leak<'a>(b: Box<T, A>) -> &'a mut T
where\n A: 'a,

Consumes and leaks the Box, returning a mutable reference,\n&'a mut T.

\n

Note that the type T must outlive the chosen lifetime 'a. If the type\nhas only static references, or none at all, then this may be chosen to be\n'static.

\n

This function is mainly useful for data that lives for the remainder of\nthe program’s life. Dropping the returned reference will cause a memory\nleak. If this is not acceptable, the reference should first be wrapped\nwith the Box::from_raw function producing a Box. This Box can\nthen be dropped which will properly destroy T and release the\nallocated memory.

\n

Note: this is an associated function, which means that you have\nto call it as Box::leak(b) instead of b.leak(). This\nis so that there is no conflict with a method on the inner type.

\n
§Examples
\n

Simple usage:

\n\n
let x = Box::new(41);\nlet static_ref: &'static mut usize = Box::leak(x);\n*static_ref += 1;\nassert_eq!(*static_ref, 42);
\n

Unsized data:

\n\n
let x = vec![1, 2, 3].into_boxed_slice();\nlet static_ref = Box::leak(x);\nstatic_ref[0] = 4;\nassert_eq!(*static_ref, [4, 2, 3]);
\n
1.63.0 (const: unstable) · source

pub fn into_pin(boxed: Box<T, A>) -> Pin<Box<T, A>>
where\n A: 'static,

Converts a Box<T> into a Pin<Box<T>>. If T does not implement Unpin, then\n*boxed will be pinned in memory and unable to be moved.

\n

This conversion does not allocate on the heap and happens in place.

\n

This is also available via From.

\n

Constructing and pinning a Box with Box::into_pin(Box::new(x))\ncan also be written more concisely using Box::pin(x).\nThis into_pin method is useful if you already have a Box<T>, or you are\nconstructing a (pinned) Box in a different way than with Box::new.

\n
§Notes
\n

It’s not recommended that crates add an impl like From<Box<T>> for Pin<T>,\nas it’ll introduce an ambiguity when calling Pin::from.\nA demonstration of such a poor impl is shown below.

\n\n
struct Foo; // A type defined in this crate.\nimpl From<Box<()>> for Pin<Foo> {\n    fn from(_: Box<()>) -> Pin<Foo> {\n        Pin::new(Foo)\n    }\n}\n\nlet foo = Box::new(());\nlet bar = Pin::from(foo);
\n
",0,"algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T, A> Box<T, A>
where\n A: Allocator,

source

pub fn new_in(x: T, alloc: A) -> Box<T, A>
where\n A: Allocator,

🔬This is a nightly-only experimental API. (allocator_api)

Allocates memory in the given allocator then places x into it.

\n

This doesn’t actually allocate if T is zero-sized.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet five = Box::new_in(5, System);
\n
source

pub fn try_new_in(x: T, alloc: A) -> Result<Box<T, A>, AllocError>
where\n A: Allocator,

🔬This is a nightly-only experimental API. (allocator_api)

Allocates memory in the given allocator then places x into it,\nreturning an error if the allocation fails

\n

This doesn’t actually allocate if T is zero-sized.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet five = Box::try_new_in(5, System)?;
\n
source

pub fn new_uninit_in(alloc: A) -> Box<MaybeUninit<T>, A>
where\n A: Allocator,

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new box with uninitialized contents in the provided allocator.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut five = Box::<u32, _>::new_uninit_in(System);\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5)
\n
source

pub fn try_new_uninit_in(alloc: A) -> Result<Box<MaybeUninit<T>, A>, AllocError>
where\n A: Allocator,

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new box with uninitialized contents in the provided allocator,\nreturning an error if the allocation fails

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut five = Box::<u32, _>::try_new_uninit_in(System)?;\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5);
\n
source

pub fn new_zeroed_in(alloc: A) -> Box<MaybeUninit<T>, A>
where\n A: Allocator,

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes in the provided allocator.

\n

See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet zero = Box::<u32, _>::new_zeroed_in(System);\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0)
\n
source

pub fn try_new_zeroed_in(alloc: A) -> Result<Box<MaybeUninit<T>, A>, AllocError>
where\n A: Allocator,

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes in the provided allocator,\nreturning an error if the allocation fails,

\n

See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet zero = Box::<u32, _>::try_new_zeroed_in(System)?;\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0);
\n
source

pub fn pin_in(x: T, alloc: A) -> Pin<Box<T, A>>
where\n A: 'static + Allocator,

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new Pin<Box<T, A>>. If T does not implement Unpin, then\nx will be pinned in memory and unable to be moved.

\n

Constructing and pinning of the Box can also be done in two steps: Box::pin_in(x, alloc)\ndoes the same as Box::into_pin(Box::new_in(x, alloc)). Consider using\ninto_pin if you already have a Box<T, A>, or if you want to\nconstruct a (pinned) Box in a different way than with Box::new_in.

\n
source

pub fn into_boxed_slice(boxed: Box<T, A>) -> Box<[T], A>

🔬This is a nightly-only experimental API. (box_into_boxed_slice)

Converts a Box<T> into a Box<[T]>

\n

This conversion does not allocate on the heap and happens in place.

\n
source

pub fn into_inner(boxed: Box<T, A>) -> T

🔬This is a nightly-only experimental API. (box_into_inner)

Consumes the Box, returning the wrapped value.

\n
§Examples
\n
#![feature(box_into_inner)]\n\nlet c = Box::new(5);\n\nassert_eq!(Box::into_inner(c), 5);
\n
",0,"algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<B> BufRead for Box<B>
where\n B: BufRead + ?Sized,

source§

fn fill_buf(&mut self) -> Result<&[u8], Error>

Returns the contents of the internal buffer, filling it with more data\nfrom the inner reader if it is empty. Read more
source§

fn consume(&mut self, amt: usize)

Tells this buffer that amt bytes have been consumed from the buffer,\nso they should no longer be returned in calls to read. Read more
source§

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

Reads all bytes into buf until the delimiter byte or EOF is reached. Read more
source§

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

Reads all bytes until a newline (the 0xA byte) is reached, and append\nthem to the provided String buffer. Read more
source§

fn has_data_left(&mut self) -> Result<bool, Error>

🔬This is a nightly-only experimental API. (buf_read_has_data_left)
Checks if the underlying Read has any data left to be read. Read more
source§

fn skip_until(&mut self, byte: u8) -> Result<usize, Error>

🔬This is a nightly-only experimental API. (bufread_skip_until)
Skips all bytes until the delimiter byte or EOF is reached. Read more
1.0.0 · source§

fn split(self, byte: u8) -> Split<Self>
where\n Self: Sized,

Returns an iterator over the contents of this reader split on the byte\nbyte. Read more
1.0.0 · source§

fn lines(self) -> Lines<Self>
where\n Self: Sized,

Returns an iterator over the lines of this reader. Read more
","BufRead","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Clone for Box<T, A>
where\n T: Clone,\n A: Allocator + Clone,

source§

fn clone(&self) -> Box<T, A>

Returns a new box with a clone() of this box’s contents.

\n
§Examples
\n
let x = Box::new(5);\nlet y = x.clone();\n\n// The value is the same\nassert_eq!(x, y);\n\n// But they are unique objects\nassert_ne!(&*x as *const i32, &*y as *const i32);
\n
source§

fn clone_from(&mut self, source: &Box<T, A>)

Copies source’s contents into self without creating a new allocation.

\n
§Examples
\n
let x = Box::new(5);\nlet mut y = Box::new(10);\nlet yp: *const i32 = &*y;\n\ny.clone_from(&x);\n\n// The value is the same\nassert_eq!(x, y);\n\n// And no allocation occurred\nassert_eq!(yp, &*y);
\n
","Clone","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<G, R, A> Coroutine<R> for Box<G, A>
where\n G: Coroutine<R> + Unpin + ?Sized,\n A: Allocator,

source§

type Yield = <G as Coroutine<R>>::Yield

🔬This is a nightly-only experimental API. (coroutine_trait)
The type of value this coroutine yields. Read more
source§

type Return = <G as Coroutine<R>>::Return

🔬This is a nightly-only experimental API. (coroutine_trait)
The type of value this coroutine returns. Read more
source§

fn resume(\n self: Pin<&mut Box<G, A>>,\n arg: R,\n) -> CoroutineState<<Box<G, A> as Coroutine<R>>::Yield, <Box<G, A> as Coroutine<R>>::Return>

🔬This is a nightly-only experimental API. (coroutine_trait)
Resumes the execution of this coroutine. Read more
","Coroutine","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Debug for Box<T, A>
where\n T: Debug + ?Sized,\n A: Allocator,

source§

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

Formats the value using the given formatter. Read more
","Debug","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T> Default for Box<T>
where\n T: Default,

source§

fn default() -> Box<T>

Creates a Box<T>, with the Default value for T.

\n
","Default","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Deref for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &T

Dereferences the value.
","Deref","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> DerefMut for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

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

Mutably dereferences the value.
","DerefMut","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<'de, T> Deserialize<'de> for Box<T>
where\n T: Deserialize<'de>,

source§

fn deserialize<D>(\n deserializer: D,\n) -> Result<Box<T>, <D as Deserializer<'de>>::Error>
where\n D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Display for Box<T, A>
where\n T: Display + ?Sized,\n A: Allocator,

source§

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

Formats the value using the given formatter. Read more
","Display","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<I, A> DoubleEndedIterator for Box<I, A>
where\n I: DoubleEndedIterator + ?Sized,\n A: Allocator,

source§

fn next_back(&mut self) -> Option<<I as Iterator>::Item>

Removes and returns an element from the end of the iterator. Read more
source§

fn nth_back(&mut self, n: usize) -> Option<<I as Iterator>::Item>

Returns the nth element from the end of the iterator. Read more
source§

fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator from the back by n elements. Read more
1.27.0 · source§

fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
where\n Self: Sized,\n F: FnMut(B, Self::Item) -> R,\n R: Try<Output = B>,

This is the reverse version of Iterator::try_fold(): it takes\nelements starting from the back of the iterator. Read more
1.27.0 · source§

fn rfold<B, F>(self, init: B, f: F) -> B
where\n Self: Sized,\n F: FnMut(B, Self::Item) -> B,

An iterator method that reduces the iterator’s elements to a single,\nfinal value, starting from the back. Read more
1.27.0 · source§

fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator from the back that satisfies a predicate. Read more
","DoubleEndedIterator","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Drop for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
","Drop","algebra::module::steenrod_module::SteenrodModule"],["
1.8.0 · source§

impl<T> Error for Box<T>
where\n T: Error,

source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

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

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

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

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

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

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
","Error","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<I, A> ExactSizeIterator for Box<I, A>
where\n I: ExactSizeIterator + ?Sized,\n A: Allocator,

source§

fn len(&self) -> usize

Returns the exact remaining length of the iterator. Read more
source§

fn is_empty(&self) -> bool

🔬This is a nightly-only experimental API. (exact_size_is_empty)
Returns true if the iterator is empty. Read more
","ExactSizeIterator","algebra::module::steenrod_module::SteenrodModule"],["
1.35.0 · source§

impl<Args, F, A> Fn<Args> for Box<F, A>
where\n Args: Tuple,\n F: Fn<Args> + ?Sized,\n A: Allocator,

source§

extern "rust-call" fn call(\n &self,\n args: Args,\n) -> <Box<F, A> as FnOnce<Args>>::Output

🔬This is a nightly-only experimental API. (fn_traits)
Performs the call operation.
","Fn","algebra::module::steenrod_module::SteenrodModule"],["
1.35.0 · source§

impl<Args, F, A> FnMut<Args> for Box<F, A>
where\n Args: Tuple,\n F: FnMut<Args> + ?Sized,\n A: Allocator,

source§

extern "rust-call" fn call_mut(\n &mut self,\n args: Args,\n) -> <Box<F, A> as FnOnce<Args>>::Output

🔬This is a nightly-only experimental API. (fn_traits)
Performs the call operation.
","FnMut","algebra::module::steenrod_module::SteenrodModule"],["
1.35.0 · source§

impl<Args, F, A> FnOnce<Args> for Box<F, A>
where\n Args: Tuple,\n F: FnOnce<Args> + ?Sized,\n A: Allocator,

source§

type Output = <F as FnOnce<Args>>::Output

The returned type after the call operator is used.
source§

extern "rust-call" fn call_once(\n self,\n args: Args,\n) -> <Box<F, A> as FnOnce<Args>>::Output

🔬This is a nightly-only experimental API. (fn_traits)
Performs the call operation.
","FnOnce","algebra::module::steenrod_module::SteenrodModule"],["
1.6.0 · source§

impl<T> From<T> for Box<T>

source§

fn from(t: T) -> Box<T>

Converts a T into a Box<T>

\n

The conversion allocates on the heap and moves t\nfrom the stack into it.

\n
§Examples
\n
let x = 5;\nlet boxed = Box::new(5);\n\nassert_eq!(Box::from(x), boxed);
\n
","From","algebra::module::steenrod_module::SteenrodModule"],["
1.36.0 · source§

impl<F, A> Future for Box<F, A>
where\n F: Future + Unpin + ?Sized,\n A: Allocator,

source§

type Output = <F as Future>::Output

The type of value produced on completion.
source§

fn poll(\n self: Pin<&mut Box<F, A>>,\n cx: &mut Context<'_>,\n) -> Poll<<Box<F, A> as Future>::Output>

Attempts to resolve the future to a final value, registering\nthe current task for wakeup if the value is not yet available. Read more
","Future","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Hash for Box<T, A>
where\n T: Hash + ?Sized,\n A: Allocator,

source§

fn hash<H>(&self, state: &mut H)
where\n H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","algebra::module::steenrod_module::SteenrodModule"],["
1.22.0 · source§

impl<T, A> Hasher for Box<T, A>
where\n T: Hasher + ?Sized,\n A: Allocator,

source§

fn finish(&self) -> u64

Returns the hash value for the values written so far. Read more
source§

fn write(&mut self, bytes: &[u8])

Writes some data into this Hasher. Read more
source§

fn write_u8(&mut self, i: u8)

Writes a single u8 into this hasher.
source§

fn write_u16(&mut self, i: u16)

Writes a single u16 into this hasher.
source§

fn write_u32(&mut self, i: u32)

Writes a single u32 into this hasher.
source§

fn write_u64(&mut self, i: u64)

Writes a single u64 into this hasher.
source§

fn write_u128(&mut self, i: u128)

Writes a single u128 into this hasher.
source§

fn write_usize(&mut self, i: usize)

Writes a single usize into this hasher.
source§

fn write_i8(&mut self, i: i8)

Writes a single i8 into this hasher.
source§

fn write_i16(&mut self, i: i16)

Writes a single i16 into this hasher.
source§

fn write_i32(&mut self, i: i32)

Writes a single i32 into this hasher.
source§

fn write_i64(&mut self, i: i64)

Writes a single i64 into this hasher.
source§

fn write_i128(&mut self, i: i128)

Writes a single i128 into this hasher.
source§

fn write_isize(&mut self, i: isize)

Writes a single isize into this hasher.
source§

fn write_length_prefix(&mut self, len: usize)

🔬This is a nightly-only experimental API. (hasher_prefixfree_extras)
Writes a length prefix into this hasher, as part of being prefix-free. Read more
source§

fn write_str(&mut self, s: &str)

🔬This is a nightly-only experimental API. (hasher_prefixfree_extras)
Writes a single str into this hasher. Read more
","Hasher","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<I, A> Iterator for Box<I, A>
where\n I: Iterator + ?Sized,\n A: Allocator,

source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<<I as Iterator>::Item>

Advances the iterator and returns the next value. Read more
source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
source§

fn nth(&mut self, n: usize) -> Option<<I as Iterator>::Item>

Returns the nth element of the iterator. Read more
source§

fn last(self) -> Option<<I as Iterator>::Item>

Consumes the iterator, returning the last element. Read more
source§

fn next_chunk<const N: usize>(\n &mut self,\n) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where\n Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn count(self) -> usize
where\n Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where\n Self: Sized,

Creates an iterator starting at the same point, but stepping by\nthe given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where\n Self: Sized,\n U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where\n Self: Sized,\n U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where\n Self: Sized,\n G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator\nbetween adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where\n Self: Sized,\n F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each\nelement. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where\n Self: Sized,\n F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element\nshould be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where\n Self: Sized,\n F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where\n Self: Sized,

Creates an iterator which gives the current iteration count as well as\nthe next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where\n Self: Sized,

Creates an iterator which can use the peek and peek_mut methods\nto look at the next element of the iterator without consuming it. See\ntheir documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where\n Self: Sized,\n P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where\n Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where\n Self: Sized,

Creates an iterator that yields the first n elements, or fewer\nif the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where\n Self: Sized,\n F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but\nunlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where\n Self: Sized,\n U: IntoIterator,\n F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where\n Self: Sized,\n F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over\nself and returns an iterator over the outputs of f. Like slice::windows(),\nthe windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where\n Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where\n Self: Sized,\n F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where\n Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where\n B: FromIterator<Self::Item>,\n Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where\n E: Extend<Self::Item>,\n Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where\n Self: Sized,\n B: Default + Extend<Self::Item>,\n F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where\n Self: Sized,\n P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate,\nsuch that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where\n Self: Sized,\n F: FnMut(B, Self::Item) -> R,\n R: Try<Output = B>,

An iterator method that applies a function as long as it returns\nsuccessfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where\n Self: Sized,\n F: FnMut(Self::Item) -> R,\n R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the\niterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where\n Self: Sized,\n F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation,\nreturning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where\n Self: Sized,\n F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing\noperation. Read more
source§

fn try_reduce<R>(\n &mut self,\n f: impl FnMut(Self::Item, Self::Item) -> R,\n) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where\n Self: Sized,\n R: Try<Output = Self::Item>,\n <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the\nclosure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where\n Self: Sized,\n F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where\n Self: Sized,\n F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where\n Self: Sized,\n F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns\nthe first non-none result. Read more
source§

fn try_find<R>(\n &mut self,\n f: impl FnMut(&Self::Item) -> R,\n) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where\n Self: Sized,\n R: Try<Output = bool>,\n <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns\nthe first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where\n Self: Sized,\n P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where\n B: Ord,\n Self: Sized,\n F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the\nspecified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the\nspecified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where\n B: Ord,\n Self: Sized,\n F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the\nspecified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the\nspecified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where\n FromA: Default + Extend<A>,\n FromB: Default + Extend<B>,\n Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where\n T: 'a + Copy,\n Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where\n T: 'a + Clone,\n Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where\n Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where\n Self: Sized,\n S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where\n Self: Sized,\n P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those\nof another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

Lexicographically compares the PartialOrd elements of\nthis Iterator with those of another. The comparison works like short-circuit\nevaluation, returning a result without comparing the remaining elements.\nAs soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those\nof another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where\n I: IntoIterator,\n Self::Item: PartialEq<<I as IntoIterator>::Item>,\n Self: Sized,

Determines if the elements of this Iterator are equal to those of\nanother. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of\nanother with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where\n I: IntoIterator,\n Self::Item: PartialEq<<I as IntoIterator>::Item>,\n Self: Sized,

Determines if the elements of this Iterator are not equal to those of\nanother. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

Determines if the elements of this Iterator are lexicographically\nless than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

Determines if the elements of this Iterator are lexicographically\nless or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

Determines if the elements of this Iterator are lexicographically\ngreater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

Determines if the elements of this Iterator are lexicographically\ngreater than or equal to those of another. Read more
1.82.0 · source§

fn is_sorted_by<F>(self, compare: F) -> bool
where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where\n Self: Sized,\n F: FnMut(Self::Item) -> K,\n K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction\nfunction. Read more
","Iterator","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T: Module + ?Sized> Module for Box<T>
where\n Box<T>: Display + Any + Send + Sync,

source§

type Algebra = <T as Module>::Algebra

source§

fn algebra(&self) -> Arc<Self::Algebra>

The algebra the module is over.
source§

fn min_degree(&self) -> i32

The minimum degree of the module, which is required to be bounded below
source§

fn compute_basis(&self, degree: i32)

Compute internal data of the module so that we can query information up to degree degree.\nThis should be run by the user whenever they want to query such information. Read more
source§

fn max_computed_degree(&self) -> i32

The maximum t for which the module is fully defined at t. See Module documentation\nfor more details.
source§

fn dimension(&self, degree: i32) -> usize

The dimension of a module at the given degree
source§

fn act_on_basis(\n &self,\n result: FpSliceMut<'_>,\n coeff: u32,\n op_degree: i32,\n op_index: usize,\n mod_degree: i32,\n mod_index: usize,\n)

source§

fn basis_element_to_string(&self, degree: i32, idx: usize) -> String

The name of a basis element. This is useful for debugging and printing results.
source§

fn is_unit(&self) -> bool

Whether this is the unit module.
source§

fn prime(&self) -> ValidPrime

The prime the module is over, which should be equal to the prime of the algebra.
source§

fn max_degree(&self) -> Option<i32>

max_degree is the a degree such that if t > max_degree, then self.dimension(t) = 0.
source§

fn max_generator_degree(&self) -> Option<i32>

Maximum degree of a generator under the Steenrod action. Every element in higher degree\nmust be obtainable from applying a Steenrod action to a lower degree element.
source§

fn total_dimension(&self) -> usize

source§

fn act(\n &self,\n result: FpSliceMut<'_>,\n coeff: u32,\n op_degree: i32,\n op_index: usize,\n input_degree: i32,\n input: FpSlice<'_>,\n)

The length of input need not be equal to the dimension of the module in said degree.\nMissing entries are interpreted to be 0, while extra entries must be zero. Read more
source§

fn act_by_element(\n &self,\n result: FpSliceMut<'_>,\n coeff: u32,\n op_degree: i32,\n op: FpSlice<'_>,\n input_degree: i32,\n input: FpSlice<'_>,\n)

source§

fn act_by_element_on_basis(\n &self,\n result: FpSliceMut<'_>,\n coeff: u32,\n op_degree: i32,\n op: FpSlice<'_>,\n input_degree: i32,\n input_index: usize,\n)

source§

fn element_to_string(&self, degree: i32, element: FpSlice<'_>) -> String

Gives the name of an element. The default implementation is derived from\nModule::basis_element_to_string in the obvious way.
","Module","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Ord for Box<T, A>
where\n T: Ord + ?Sized,\n A: Allocator,

source§

fn cmp(&self, other: &Box<T, A>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> PartialEq for Box<T, A>
where\n T: PartialEq + ?Sized,\n A: Allocator,

source§

fn eq(&self, other: &Box<T, A>) -> bool

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

fn ne(&self, other: &Box<T, A>) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> PartialOrd for Box<T, A>
where\n T: PartialOrd + ?Sized,\n A: Allocator,

source§

fn partial_cmp(&self, other: &Box<T, A>) -> Option<Ordering>

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

fn lt(&self, other: &Box<T, A>) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
source§

fn le(&self, other: &Box<T, A>) -> bool

Tests less than or equal to (for self and other) and is used by the\n<= operator. Read more
source§

fn ge(&self, other: &Box<T, A>) -> bool

Tests greater than or equal to (for self and other) and is used by\nthe >= operator. Read more
source§

fn gt(&self, other: &Box<T, A>) -> bool

Tests greater than (for self and other) and is used by the >\noperator. Read more
","PartialOrd","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Pointer for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

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

Formats the value using the given formatter. Read more
","Pointer","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<R> Read for Box<R>
where\n R: Read + ?Sized,

source§

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

Pull some bytes from this source into the specified buffer, returning\nhow many bytes were read. Read more
source§

fn read_buf(&mut self, cursor: 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_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\nimplementation. Read more
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
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
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_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\n Self: Sized,

Creates a “by reference” adaptor for this instance of Read. Read more
1.0.0 · source§

fn bytes(self) -> Bytes<Self>
where\n Self: Sized,

Transforms this Read instance to an Iterator over its bytes. Read more
1.0.0 · source§

fn chain<R>(self, next: R) -> Chain<Self, R>
where\n R: Read,\n Self: Sized,

Creates an adapter which will chain this stream with another. Read more
1.0.0 · source§

fn take(self, limit: u64) -> Take<Self>
where\n Self: Sized,

Creates an adapter which will read at most limit bytes from it. Read more
","Read","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<R> RngCore for Box<R>
where\n R: RngCore + ?Sized,

source§

fn next_u32(&mut self) -> u32

Return the next random u32. Read more
source§

fn next_u64(&mut self) -> u64

Return the next random u64. Read more
source§

fn fill_bytes(&mut self, dest: &mut [u8])

Fill dest with random data. Read more
source§

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

Fill dest entirely with random data. Read more
","RngCore","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<S> Seek for Box<S>
where\n S: Seek + ?Sized,

source§

fn seek(&mut self, pos: SeekFrom) -> Result<u64, Error>

Seek to an offset, in bytes, in a stream. Read more
source§

fn stream_position(&mut self) -> Result<u64, Error>

Returns the current seek position from the start of the stream. Read more
1.55.0 · source§

fn rewind(&mut self) -> Result<(), Error>

Rewind to the beginning of a stream. Read more
source§

fn stream_len(&mut self) -> Result<u64, Error>

🔬This is a nightly-only experimental API. (seek_stream_len)
Returns the length of this stream (in bytes). Read more
1.80.0 · source§

fn seek_relative(&mut self, offset: i64) -> Result<(), Error>

Seeks relative to the current position. Read more
","Seek","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T> Serialize for Box<T>
where\n T: Serialize + ?Sized,

source§

fn serialize<S>(\n &self,\n serializer: S,\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where\n S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","algebra::module::steenrod_module::SteenrodModule"],["
§

impl<S> Strategy for Box<S>
where\n S: Strategy + ?Sized,

§

type Tree = <S as Strategy>::Tree

The value tree generated by this Strategy.
§

type Value = <S as Strategy>::Value

The type of value used by functions under test generated by this Strategy. Read more
§

fn new_tree(\n &self,\n runner: &mut TestRunner,\n) -> Result<<Box<S> as Strategy>::Tree, Reason>

Generate a new value tree from the given runner. Read more
§

fn prop_map<O, F>(self, fun: F) -> Map<Self, F>
where\n O: Debug,\n F: Fn(Self::Value) -> O,\n Self: Sized,

Returns a strategy which produces values transformed by the function\nfun. Read more
§

fn prop_map_into<O>(self) -> MapInto<Self, O>
where\n O: Debug,\n Self: Sized,\n Self::Value: Into<O>,

Returns a strategy which produces values of type O by transforming\nSelf with Into<O>. Read more
§

fn prop_perturb<O, F>(self, fun: F) -> Perturb<Self, F>
where\n O: Debug,\n F: Fn(Self::Value, TestRng) -> O,\n Self: Sized,

Returns a strategy which produces values transformed by the function\nfun, which is additionally given a random number generator. Read more
§

fn prop_flat_map<S, F>(self, fun: F) -> Flatten<Map<Self, F>>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Maps values produced by this strategy into new strategies and picks\nvalues from those strategies. Read more
§

fn prop_ind_flat_map<S, F>(self, fun: F) -> IndFlatten<Map<Self, F>>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Maps values produced by this strategy into new strategies and picks\nvalues from those strategies while considering the new strategies to be\nindependent. Read more
§

fn prop_ind_flat_map2<S, F>(self, fun: F) -> IndFlattenMap<Self, F>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Similar to prop_ind_flat_map(), but produces 2-tuples with the input\ngenerated from self in slot 0 and the derived strategy in slot 1. Read more
§

fn prop_filter<R, F>(self, whence: R, fun: F) -> Filter<Self, F>
where\n R: Into<Reason>,\n F: Fn(&Self::Value) -> bool,\n Self: Sized,

Returns a strategy which only produces values accepted by fun. Read more
§

fn prop_filter_map<F, O>(\n self,\n whence: impl Into<Reason>,\n fun: F,\n) -> FilterMap<Self, F>
where\n F: Fn(Self::Value) -> Option<O>,\n O: Debug,\n Self: Sized,

Returns a strategy which only produces transformed values where fun\nreturns Some(value) and rejects those where fun returns None. Read more
§

fn prop_union(self, other: Self) -> Union<Self>
where\n Self: Sized,

Returns a strategy which picks uniformly from self and other. Read more
§

fn prop_recursive<R, F>(\n self,\n depth: u32,\n desired_size: u32,\n expected_branch_size: u32,\n recurse: F,\n) -> Recursive<Self::Value, F>
where\n R: Strategy<Value = Self::Value> + 'static,\n F: Fn(BoxedStrategy<Self::Value>) -> R,\n Self: Sized + 'static,

Generate a recursive structure with self items as leaves. Read more
§

fn boxed(self) -> BoxedStrategy<Self::Value>
where\n Self: Sized + 'static,

Erases the type of this Strategy so it can be passed around as a\nsimple trait object. Read more
§

fn no_shrink(self) -> NoShrink<Self>
where\n Self: Sized,

Wraps this strategy to prevent values from being subject to shrinking. Read more
","Strategy","algebra::module::steenrod_module::SteenrodModule"],["
§

impl<T> ValueTree for Box<T>
where\n T: ValueTree + ?Sized,

§

type Value = <T as ValueTree>::Value

The type of the value produced by this ValueTree.
§

fn current(&self) -> <Box<T> as ValueTree>::Value

Returns the current value.
§

fn simplify(&mut self) -> bool

Attempts to simplify the current value. Notionally, this sets the\n“high” value to the current value, and the current value to a “halfway\npoint” between high and low, rounding towards low. Read more
§

fn complicate(&mut self) -> bool

Attempts to partially undo the last simplification. Notionally, this\nsets the “low” value to one plus the current value, and the current\nvalue to a “halfway point” between high and the new low, rounding\ntowards low. Read more
","ValueTree","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<W> Write for Box<W>
where\n W: Write + ?Sized,

source§

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

Writes a buffer into this writer, returning how many bytes were written. Read more
source§

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

Like write, except that it writes from a slice of buffers. Read more
source§

fn is_write_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (can_vector)
Determines if this Writer has an efficient write_vectored\nimplementation. Read more
source§

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

Flushes this output stream, ensuring that all intermediately buffered\ncontents reach their destination. Read more
source§

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

Attempts to write an entire buffer into this writer. Read more
source§

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

Writes a formatted string into this writer, returning any error\nencountered. Read more
source§

fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>

🔬This is a nightly-only experimental API. (write_all_vectored)
Attempts to write multiple buffers into this writer. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where\n Self: Sized,

Creates a “by reference” adapter for this instance of Write. Read more
","Write","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T, U, A> CoerceUnsized<Box<U, A>> for Box<T, A>
where\n T: Unsize<U> + ?Sized,\n A: Allocator,\n U: ?Sized,

","CoerceUnsized>","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<R> CryptoRng for Box<R>
where\n R: CryptoRng + ?Sized,

","CryptoRng","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T, A> DerefPure for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

","DerefPure","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T, U> DispatchFromDyn<Box<U>> for Box<T>
where\n T: Unsize<U> + ?Sized,\n U: ?Sized,

","DispatchFromDyn>","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Eq for Box<T, A>
where\n T: Eq + ?Sized,\n A: Allocator,

","Eq","algebra::module::steenrod_module::SteenrodModule"],["
1.26.0 · source§

impl<I, A> FusedIterator for Box<I, A>
where\n I: FusedIterator + ?Sized,\n A: Allocator,

","FusedIterator","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T, A> PinCoerceUnsized for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

","PinCoerceUnsized","algebra::module::steenrod_module::SteenrodModule"],["
1.33.0 · source§

impl<T, A> Unpin for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

","Unpin","algebra::module::steenrod_module::SteenrodModule"]]]]); + var type_impls = Object.fromEntries([["algebra",[["
§

impl<A> Arbitrary for Box<A>
where\n A: Arbitrary,

§

type Parameters = <A as Arbitrary>::Parameters

The type of parameters that arbitrary_with accepts for configuration\nof the generated Strategy. Parameters must implement Default.
§

type Strategy = MapInto<<A as Arbitrary>::Strategy, Box<A>>

The type of Strategy used to generate values of type Self.
§

fn arbitrary_with(\n args: <Box<A> as Arbitrary>::Parameters,\n) -> <Box<A> as Arbitrary>::Strategy

Generates a Strategy for producing arbitrary values of type the\nimplementing type (Self). The strategy is passed the arguments given\nin args. Read more
§

fn arbitrary() -> Self::Strategy

Generates a Strategy for producing arbitrary values\nof type the implementing type (Self). Read more
","Arbitrary","algebra::module::steenrod_module::SteenrodModule"],["
§

impl<A> ArbitraryF1<A> for Box<A>
where\n A: Debug + 'static,

§

type Parameters = ()

The type of parameters that lift1_with accepts for\nconfiguration of the lifted and generated Strategy. Parameters\nmust implement Default.
§

fn lift1_with<S>(\n base: S,\n _args: <Box<A> as ArbitraryF1<A>>::Parameters,\n) -> BoxedStrategy<Box<A>>
where\n S: Strategy<Value = A> + 'static,

Lifts a given Strategy to a new Strategy for the (presumably)\nbigger type. This is useful for lifting a Strategy for SomeType\nto a container such as Vec of SomeType. The composite strategy is\npassed the arguments given in args. Read more
§

fn lift1<AS>(base: AS) -> BoxedStrategy<Self>
where\n AS: Strategy<Value = A> + 'static,

Lifts a given Strategy to a new Strategy for the (presumably)\nbigger type. This is useful for lifting a Strategy for SomeType\nto a container such as Vec<SomeType>. Read more
","ArbitraryF1","algebra::module::steenrod_module::SteenrodModule"],["
1.64.0 · source§

impl<T> AsFd for Box<T>
where\n T: AsFd + ?Sized,

source§

fn as_fd(&self) -> BorrowedFd<'_>

Borrows the file descriptor. Read more
","AsFd","algebra::module::steenrod_module::SteenrodModule"],["
1.5.0 · source§

impl<T, A> AsMut<T> for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

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

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut","algebra::module::steenrod_module::SteenrodModule"],["
1.63.0 · source§

impl<T> AsRawFd for Box<T>
where\n T: AsRawFd,

source§

fn as_raw_fd(&self) -> i32

Extracts the raw file descriptor. Read more
","AsRawFd","algebra::module::steenrod_module::SteenrodModule"],["
1.5.0 · source§

impl<T, A> AsRef<T> for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

fn as_ref(&self) -> &T

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<Args, F, A> AsyncFn<Args> for Box<F, A>
where\n Args: Tuple,\n F: AsyncFn<Args> + ?Sized,\n A: Allocator,

source§

extern "rust-call" fn async_call(\n &self,\n args: Args,\n) -> <Box<F, A> as AsyncFnMut<Args>>::CallRefFuture<'_>

🔬This is a nightly-only experimental API. (async_fn_traits)
Call the AsyncFn, returning a future which may borrow from the called closure.
","AsyncFn","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<Args, F, A> AsyncFnMut<Args> for Box<F, A>
where\n Args: Tuple,\n F: AsyncFnMut<Args> + ?Sized,\n A: Allocator,

source§

type CallRefFuture<'a> = <F as AsyncFnMut<Args>>::CallRefFuture<'a>\nwhere\n Box<F, A>: 'a

🔬This is a nightly-only experimental API. (async_fn_traits)
source§

extern "rust-call" fn async_call_mut(\n &mut self,\n args: Args,\n) -> <Box<F, A> as AsyncFnMut<Args>>::CallRefFuture<'_>

🔬This is a nightly-only experimental API. (async_fn_traits)
Call the AsyncFnMut, returning a future which may borrow from the called closure.
","AsyncFnMut","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<Args, F, A> AsyncFnOnce<Args> for Box<F, A>
where\n Args: Tuple,\n F: AsyncFnOnce<Args> + ?Sized,\n A: Allocator,

source§

type Output = <F as AsyncFnOnce<Args>>::Output

🔬This is a nightly-only experimental API. (async_fn_traits)
Output type of the called closure’s future.
source§

type CallOnceFuture = <F as AsyncFnOnce<Args>>::CallOnceFuture

🔬This is a nightly-only experimental API. (async_fn_traits)
Future returned by AsyncFnOnce::async_call_once.
source§

extern "rust-call" fn async_call_once(\n self,\n args: Args,\n) -> <Box<F, A> as AsyncFnOnce<Args>>::CallOnceFuture

🔬This is a nightly-only experimental API. (async_fn_traits)
Call the AsyncFnOnce, returning a future which may move out of the called closure.
","AsyncFnOnce","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<S> AsyncIterator for Box<S>
where\n S: AsyncIterator + Unpin + ?Sized,

source§

type Item = <S as AsyncIterator>::Item

🔬This is a nightly-only experimental API. (async_iterator)
The type of items yielded by the async iterator.
source§

fn poll_next(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>,\n) -> Poll<Option<<Box<S> as AsyncIterator>::Item>>

🔬This is a nightly-only experimental API. (async_iterator)
Attempts to pull out the next value of this async iterator, registering the\ncurrent task for wakeup if the value is not yet available, and returning\nNone if the async iterator is exhausted. Read more
source§

fn size_hint(&self) -> (usize, Option<usize>)

🔬This is a nightly-only experimental API. (async_iterator)
Returns the bounds on the remaining length of the async iterator. Read more
","AsyncIterator","algebra::module::steenrod_module::SteenrodModule"],["
1.1.0 · source§

impl<T, A> Borrow<T> for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
","Borrow","algebra::module::steenrod_module::SteenrodModule"],["
1.1.0 · source§

impl<T, A> BorrowMut<T> for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

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

Mutably borrows from an owned value. Read more
","BorrowMut","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T> Box<T>
where\n T: ?Sized,

1.4.0 · source

pub unsafe fn from_raw(raw: *mut T) -> Box<T>

Constructs a box from a raw pointer.

\n

After calling this function, the raw pointer is owned by the\nresulting Box. Specifically, the Box destructor will call\nthe destructor of T and free the allocated memory. For this\nto be safe, the memory must have been allocated in accordance\nwith the memory layout used by Box .

\n
§Safety
\n

This function is unsafe because improper use may lead to\nmemory problems. For example, a double-free may occur if the\nfunction is called twice on the same raw pointer.

\n

The safety conditions are described in the memory layout section.

\n
§Examples
\n

Recreate a Box which was previously converted to a raw pointer\nusing Box::into_raw:

\n\n
let x = Box::new(5);\nlet ptr = Box::into_raw(x);\nlet x = unsafe { Box::from_raw(ptr) };
\n

Manually create a Box from scratch by using the global allocator:

\n\n
use std::alloc::{alloc, Layout};\n\nunsafe {\n    let ptr = alloc(Layout::new::<i32>()) as *mut i32;\n    // In general .write is required to avoid attempting to destruct\n    // the (uninitialized) previous contents of `ptr`, though for this\n    // simple example `*ptr = 5` would have worked as well.\n    ptr.write(5);\n    let x = Box::from_raw(ptr);\n}
\n
",0,"algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T> Box<T>

1.0.0 · source

pub fn new(x: T) -> Box<T>

Allocates memory on the heap and then places x into it.

\n

This doesn’t actually allocate if T is zero-sized.

\n
§Examples
\n
let five = Box::new(5);
\n
1.82.0 · source

pub fn new_uninit() -> Box<MaybeUninit<T>>

Constructs a new box with uninitialized contents.

\n
§Examples
\n
let mut five = Box::<u32>::new_uninit();\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5)
\n
source

pub fn new_zeroed() -> Box<MaybeUninit<T>>

🔬This is a nightly-only experimental API. (new_zeroed_alloc)

Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes.

\n

See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

\n
§Examples
\n
#![feature(new_zeroed_alloc)]\n\nlet zero = Box::<u32>::new_zeroed();\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0)
\n
1.33.0 · source

pub fn pin(x: T) -> Pin<Box<T>>

Constructs a new Pin<Box<T>>. If T does not implement Unpin, then\nx will be pinned in memory and unable to be moved.

\n

Constructing and pinning of the Box can also be done in two steps: Box::pin(x)\ndoes the same as Box::into_pin(Box::new(x)). Consider using\ninto_pin if you already have a Box<T>, or if you want to\nconstruct a (pinned) Box in a different way than with Box::new.

\n
source

pub fn try_new(x: T) -> Result<Box<T>, AllocError>

🔬This is a nightly-only experimental API. (allocator_api)

Allocates memory on the heap then places x into it,\nreturning an error if the allocation fails

\n

This doesn’t actually allocate if T is zero-sized.

\n
§Examples
\n
#![feature(allocator_api)]\n\nlet five = Box::try_new(5)?;
\n
source

pub fn try_new_uninit() -> Result<Box<MaybeUninit<T>>, AllocError>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new box with uninitialized contents on the heap,\nreturning an error if the allocation fails

\n
§Examples
\n
#![feature(allocator_api)]\n\nlet mut five = Box::<u32>::try_new_uninit()?;\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5);
\n
source

pub fn try_new_zeroed() -> Result<Box<MaybeUninit<T>>, AllocError>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes on the heap

\n

See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

\n
§Examples
\n
#![feature(allocator_api)]\n\nlet zero = Box::<u32>::try_new_zeroed()?;\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0);
\n
",0,"algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T, A> Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source

pub const unsafe fn from_raw_in(raw: *mut T, alloc: A) -> Box<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a box from a raw pointer in the given allocator.

\n

After calling this function, the raw pointer is owned by the\nresulting Box. Specifically, the Box destructor will call\nthe destructor of T and free the allocated memory. For this\nto be safe, the memory must have been allocated in accordance\nwith the memory layout used by Box .

\n
§Safety
\n

This function is unsafe because improper use may lead to\nmemory problems. For example, a double-free may occur if the\nfunction is called twice on the same raw pointer.

\n
§Examples
\n

Recreate a Box which was previously converted to a raw pointer\nusing Box::into_raw_with_allocator:

\n\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet x = Box::new_in(5, System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nlet x = unsafe { Box::from_raw_in(ptr, alloc) };
\n

Manually create a Box from scratch by using the system allocator:

\n\n
#![feature(allocator_api, slice_ptr_get)]\n\nuse std::alloc::{Allocator, Layout, System};\n\nunsafe {\n    let ptr = System.allocate(Layout::new::<i32>())?.as_mut_ptr() as *mut i32;\n    // In general .write is required to avoid attempting to destruct\n    // the (uninitialized) previous contents of `ptr`, though for this\n    // simple example `*ptr = 5` would have worked as well.\n    ptr.write(5);\n    let x = Box::from_raw_in(ptr, System);\n}
\n
1.4.0 · source

pub fn into_raw(b: Box<T, A>) -> *mut T

Consumes the Box, returning a wrapped raw pointer.

\n

The pointer will be properly aligned and non-null.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Box. In particular, the\ncaller should properly destroy T and release the memory, taking\ninto account the memory layout used by Box. The easiest way to\ndo this is to convert the raw pointer back into a Box with the\nBox::from_raw function, allowing the Box destructor to perform\nthe cleanup.

\n

Note: this is an associated function, which means that you have\nto call it as Box::into_raw(b) instead of b.into_raw(). This\nis so that there is no conflict with a method on the inner type.

\n
§Examples
\n

Converting the raw pointer back into a Box with Box::from_raw\nfor automatic cleanup:

\n\n
let x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nlet x = unsafe { Box::from_raw(ptr) };
\n

Manual cleanup by explicitly running the destructor and deallocating\nthe memory:

\n\n
use std::alloc::{dealloc, Layout};\nuse std::ptr;\n\nlet x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nunsafe {\n    ptr::drop_in_place(ptr);\n    dealloc(ptr as *mut u8, Layout::new::<String>());\n}
\n

Note: This is equivalent to the following:

\n\n
let x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nunsafe {\n    drop(Box::from_raw(ptr));\n}
\n
source

pub fn into_raw_with_allocator(b: Box<T, A>) -> (*mut T, A)

🔬This is a nightly-only experimental API. (allocator_api)

Consumes the Box, returning a wrapped raw pointer and the allocator.

\n

The pointer will be properly aligned and non-null.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Box. In particular, the\ncaller should properly destroy T and release the memory, taking\ninto account the memory layout used by Box. The easiest way to\ndo this is to convert the raw pointer back into a Box with the\nBox::from_raw_in function, allowing the Box destructor to perform\nthe cleanup.

\n

Note: this is an associated function, which means that you have\nto call it as Box::into_raw_with_allocator(b) instead of b.into_raw_with_allocator(). This\nis so that there is no conflict with a method on the inner type.

\n
§Examples
\n

Converting the raw pointer back into a Box with Box::from_raw_in\nfor automatic cleanup:

\n\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet x = Box::new_in(String::from(\"Hello\"), System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nlet x = unsafe { Box::from_raw_in(ptr, alloc) };
\n

Manual cleanup by explicitly running the destructor and deallocating\nthe memory:

\n\n
#![feature(allocator_api)]\n\nuse std::alloc::{Allocator, Layout, System};\nuse std::ptr::{self, NonNull};\n\nlet x = Box::new_in(String::from(\"Hello\"), System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nunsafe {\n    ptr::drop_in_place(ptr);\n    let non_null = NonNull::new_unchecked(ptr);\n    alloc.deallocate(non_null.cast(), Layout::new::<String>());\n}
\n
source

pub fn as_mut_ptr(b: &mut Box<T, A>) -> *mut T

🔬This is a nightly-only experimental API. (box_as_ptr)

Returns a raw mutable pointer to the Box’s contents.

\n

The caller must ensure that the Box outlives the pointer this\nfunction returns, or else it will end up dangling.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying memory, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize references to the memory\nmay still invalidate this pointer.\nSee the example below for how this guarantee can be used.

\n
§Examples
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
#![feature(box_as_ptr)]\n\nunsafe {\n    let mut b = Box::new(0);\n    let ptr1 = Box::as_mut_ptr(&mut b);\n    ptr1.write(1);\n    let ptr2 = Box::as_mut_ptr(&mut b);\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`:\n    ptr1.write(3);\n}
\n
source

pub fn as_ptr(b: &Box<T, A>) -> *const T

🔬This is a nightly-only experimental API. (box_as_ptr)

Returns a raw pointer to the Box’s contents.

\n

The caller must ensure that the Box outlives the pointer this\nfunction returns, or else it will end up dangling.

\n

The caller must also ensure that the memory the pointer (non-transitively) points to\nis never written to (except inside an UnsafeCell) using this pointer or any pointer\nderived from it. If you need to mutate the contents of the Box, use as_mut_ptr.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying memory, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize mutable references to the memory,\nas well as writing to this memory, may still invalidate this pointer.\nSee the example below for how this guarantee can be used.

\n
§Examples
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
#![feature(box_as_ptr)]\n\nunsafe {\n    let mut v = Box::new(0);\n    let ptr1 = Box::as_ptr(&v);\n    let ptr2 = Box::as_mut_ptr(&mut v);\n    let _val = ptr2.read();\n    // No write to this memory has happened yet, so `ptr1` is still valid.\n    let _val = ptr1.read();\n    // However, once we do a write...\n    ptr2.write(1);\n    // ... `ptr1` is no longer valid.\n    // This would be UB: let _val = ptr1.read();\n}
\n
source

pub const fn allocator(b: &Box<T, A>) -> &A

🔬This is a nightly-only experimental API. (allocator_api)

Returns a reference to the underlying allocator.

\n

Note: this is an associated function, which means that you have\nto call it as Box::allocator(&b) instead of b.allocator(). This\nis so that there is no conflict with a method on the inner type.

\n
1.26.0 · source

pub fn leak<'a>(b: Box<T, A>) -> &'a mut T
where\n A: 'a,

Consumes and leaks the Box, returning a mutable reference,\n&'a mut T.

\n

Note that the type T must outlive the chosen lifetime 'a. If the type\nhas only static references, or none at all, then this may be chosen to be\n'static.

\n

This function is mainly useful for data that lives for the remainder of\nthe program’s life. Dropping the returned reference will cause a memory\nleak. If this is not acceptable, the reference should first be wrapped\nwith the Box::from_raw function producing a Box. This Box can\nthen be dropped which will properly destroy T and release the\nallocated memory.

\n

Note: this is an associated function, which means that you have\nto call it as Box::leak(b) instead of b.leak(). This\nis so that there is no conflict with a method on the inner type.

\n
§Examples
\n

Simple usage:

\n\n
let x = Box::new(41);\nlet static_ref: &'static mut usize = Box::leak(x);\n*static_ref += 1;\nassert_eq!(*static_ref, 42);
\n

Unsized data:

\n\n
let x = vec![1, 2, 3].into_boxed_slice();\nlet static_ref = Box::leak(x);\nstatic_ref[0] = 4;\nassert_eq!(*static_ref, [4, 2, 3]);
\n
1.63.0 (const: unstable) · source

pub fn into_pin(boxed: Box<T, A>) -> Pin<Box<T, A>>
where\n A: 'static,

Converts a Box<T> into a Pin<Box<T>>. If T does not implement Unpin, then\n*boxed will be pinned in memory and unable to be moved.

\n

This conversion does not allocate on the heap and happens in place.

\n

This is also available via From.

\n

Constructing and pinning a Box with Box::into_pin(Box::new(x))\ncan also be written more concisely using Box::pin(x).\nThis into_pin method is useful if you already have a Box<T>, or you are\nconstructing a (pinned) Box in a different way than with Box::new.

\n
§Notes
\n

It’s not recommended that crates add an impl like From<Box<T>> for Pin<T>,\nas it’ll introduce an ambiguity when calling Pin::from.\nA demonstration of such a poor impl is shown below.

\n\n
struct Foo; // A type defined in this crate.\nimpl From<Box<()>> for Pin<Foo> {\n    fn from(_: Box<()>) -> Pin<Foo> {\n        Pin::new(Foo)\n    }\n}\n\nlet foo = Box::new(());\nlet bar = Pin::from(foo);
\n
",0,"algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T, A> Box<T, A>
where\n A: Allocator,

source

pub fn new_in(x: T, alloc: A) -> Box<T, A>
where\n A: Allocator,

🔬This is a nightly-only experimental API. (allocator_api)

Allocates memory in the given allocator then places x into it.

\n

This doesn’t actually allocate if T is zero-sized.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet five = Box::new_in(5, System);
\n
source

pub fn try_new_in(x: T, alloc: A) -> Result<Box<T, A>, AllocError>
where\n A: Allocator,

🔬This is a nightly-only experimental API. (allocator_api)

Allocates memory in the given allocator then places x into it,\nreturning an error if the allocation fails

\n

This doesn’t actually allocate if T is zero-sized.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet five = Box::try_new_in(5, System)?;
\n
source

pub fn new_uninit_in(alloc: A) -> Box<MaybeUninit<T>, A>
where\n A: Allocator,

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new box with uninitialized contents in the provided allocator.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut five = Box::<u32, _>::new_uninit_in(System);\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5)
\n
source

pub fn try_new_uninit_in(alloc: A) -> Result<Box<MaybeUninit<T>, A>, AllocError>
where\n A: Allocator,

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new box with uninitialized contents in the provided allocator,\nreturning an error if the allocation fails

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut five = Box::<u32, _>::try_new_uninit_in(System)?;\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5);
\n
source

pub fn new_zeroed_in(alloc: A) -> Box<MaybeUninit<T>, A>
where\n A: Allocator,

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes in the provided allocator.

\n

See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet zero = Box::<u32, _>::new_zeroed_in(System);\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0)
\n
source

pub fn try_new_zeroed_in(alloc: A) -> Result<Box<MaybeUninit<T>, A>, AllocError>
where\n A: Allocator,

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes in the provided allocator,\nreturning an error if the allocation fails,

\n

See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet zero = Box::<u32, _>::try_new_zeroed_in(System)?;\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0);
\n
source

pub fn pin_in(x: T, alloc: A) -> Pin<Box<T, A>>
where\n A: 'static + Allocator,

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new Pin<Box<T, A>>. If T does not implement Unpin, then\nx will be pinned in memory and unable to be moved.

\n

Constructing and pinning of the Box can also be done in two steps: Box::pin_in(x, alloc)\ndoes the same as Box::into_pin(Box::new_in(x, alloc)). Consider using\ninto_pin if you already have a Box<T, A>, or if you want to\nconstruct a (pinned) Box in a different way than with Box::new_in.

\n
source

pub fn into_boxed_slice(boxed: Box<T, A>) -> Box<[T], A>

🔬This is a nightly-only experimental API. (box_into_boxed_slice)

Converts a Box<T> into a Box<[T]>

\n

This conversion does not allocate on the heap and happens in place.

\n
source

pub fn into_inner(boxed: Box<T, A>) -> T

🔬This is a nightly-only experimental API. (box_into_inner)

Consumes the Box, returning the wrapped value.

\n
§Examples
\n
#![feature(box_into_inner)]\n\nlet c = Box::new(5);\n\nassert_eq!(Box::into_inner(c), 5);
\n
",0,"algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<B> BufRead for Box<B>
where\n B: BufRead + ?Sized,

source§

fn fill_buf(&mut self) -> Result<&[u8], Error>

Returns the contents of the internal buffer, filling it with more data\nfrom the inner reader if it is empty. Read more
source§

fn consume(&mut self, amt: usize)

Tells this buffer that amt bytes have been consumed from the buffer,\nso they should no longer be returned in calls to read. Read more
source§

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

Reads all bytes into buf until the delimiter byte or EOF is reached. Read more
source§

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

Reads all bytes until a newline (the 0xA byte) is reached, and append\nthem to the provided String buffer. Read more
source§

fn has_data_left(&mut self) -> Result<bool, Error>

🔬This is a nightly-only experimental API. (buf_read_has_data_left)
Checks if the underlying Read has any data left to be read. Read more
source§

fn skip_until(&mut self, byte: u8) -> Result<usize, Error>

🔬This is a nightly-only experimental API. (bufread_skip_until)
Skips all bytes until the delimiter byte or EOF is reached. Read more
1.0.0 · source§

fn split(self, byte: u8) -> Split<Self>
where\n Self: Sized,

Returns an iterator over the contents of this reader split on the byte\nbyte. Read more
1.0.0 · source§

fn lines(self) -> Lines<Self>
where\n Self: Sized,

Returns an iterator over the lines of this reader. Read more
","BufRead","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Clone for Box<T, A>
where\n T: Clone,\n A: Allocator + Clone,

source§

fn clone(&self) -> Box<T, A>

Returns a new box with a clone() of this box’s contents.

\n
§Examples
\n
let x = Box::new(5);\nlet y = x.clone();\n\n// The value is the same\nassert_eq!(x, y);\n\n// But they are unique objects\nassert_ne!(&*x as *const i32, &*y as *const i32);
\n
source§

fn clone_from(&mut self, source: &Box<T, A>)

Copies source’s contents into self without creating a new allocation.

\n
§Examples
\n
let x = Box::new(5);\nlet mut y = Box::new(10);\nlet yp: *const i32 = &*y;\n\ny.clone_from(&x);\n\n// The value is the same\nassert_eq!(x, y);\n\n// And no allocation occurred\nassert_eq!(yp, &*y);
\n
","Clone","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<G, R, A> Coroutine<R> for Box<G, A>
where\n G: Coroutine<R> + Unpin + ?Sized,\n A: Allocator,

source§

type Yield = <G as Coroutine<R>>::Yield

🔬This is a nightly-only experimental API. (coroutine_trait)
The type of value this coroutine yields. Read more
source§

type Return = <G as Coroutine<R>>::Return

🔬This is a nightly-only experimental API. (coroutine_trait)
The type of value this coroutine returns. Read more
source§

fn resume(\n self: Pin<&mut Box<G, A>>,\n arg: R,\n) -> CoroutineState<<Box<G, A> as Coroutine<R>>::Yield, <Box<G, A> as Coroutine<R>>::Return>

🔬This is a nightly-only experimental API. (coroutine_trait)
Resumes the execution of this coroutine. Read more
","Coroutine","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Debug for Box<T, A>
where\n T: Debug + ?Sized,\n A: Allocator,

source§

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

Formats the value using the given formatter. Read more
","Debug","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T> Default for Box<T>
where\n T: Default,

source§

fn default() -> Box<T>

Creates a Box<T>, with the Default value for T.

\n
","Default","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Deref for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

type Target = T

The resulting type after dereferencing.
source§

fn deref(&self) -> &T

Dereferences the value.
","Deref","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> DerefMut for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

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

Mutably dereferences the value.
","DerefMut","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<'de, T> Deserialize<'de> for Box<T>
where\n T: Deserialize<'de>,

source§

fn deserialize<D>(\n deserializer: D,\n) -> Result<Box<T>, <D as Deserializer<'de>>::Error>
where\n D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Display for Box<T, A>
where\n T: Display + ?Sized,\n A: Allocator,

source§

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

Formats the value using the given formatter. Read more
","Display","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<I, A> DoubleEndedIterator for Box<I, A>
where\n I: DoubleEndedIterator + ?Sized,\n A: Allocator,

source§

fn next_back(&mut self) -> Option<<I as Iterator>::Item>

Removes and returns an element from the end of the iterator. Read more
source§

fn nth_back(&mut self, n: usize) -> Option<<I as Iterator>::Item>

Returns the nth element from the end of the iterator. Read more
source§

fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator from the back by n elements. Read more
1.27.0 · source§

fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
where\n Self: Sized,\n F: FnMut(B, Self::Item) -> R,\n R: Try<Output = B>,

This is the reverse version of Iterator::try_fold(): it takes\nelements starting from the back of the iterator. Read more
1.27.0 · source§

fn rfold<B, F>(self, init: B, f: F) -> B
where\n Self: Sized,\n F: FnMut(B, Self::Item) -> B,

An iterator method that reduces the iterator’s elements to a single,\nfinal value, starting from the back. Read more
1.27.0 · source§

fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator from the back that satisfies a predicate. Read more
","DoubleEndedIterator","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Drop for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
","Drop","algebra::module::steenrod_module::SteenrodModule"],["
1.8.0 · source§

impl<T> Error for Box<T>
where\n T: Error,

source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

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

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

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

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

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

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
","Error","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<I, A> ExactSizeIterator for Box<I, A>
where\n I: ExactSizeIterator + ?Sized,\n A: Allocator,

source§

fn len(&self) -> usize

Returns the exact remaining length of the iterator. Read more
source§

fn is_empty(&self) -> bool

🔬This is a nightly-only experimental API. (exact_size_is_empty)
Returns true if the iterator is empty. Read more
","ExactSizeIterator","algebra::module::steenrod_module::SteenrodModule"],["
1.35.0 · source§

impl<Args, F, A> Fn<Args> for Box<F, A>
where\n Args: Tuple,\n F: Fn<Args> + ?Sized,\n A: Allocator,

source§

extern "rust-call" fn call(\n &self,\n args: Args,\n) -> <Box<F, A> as FnOnce<Args>>::Output

🔬This is a nightly-only experimental API. (fn_traits)
Performs the call operation.
","Fn","algebra::module::steenrod_module::SteenrodModule"],["
1.35.0 · source§

impl<Args, F, A> FnMut<Args> for Box<F, A>
where\n Args: Tuple,\n F: FnMut<Args> + ?Sized,\n A: Allocator,

source§

extern "rust-call" fn call_mut(\n &mut self,\n args: Args,\n) -> <Box<F, A> as FnOnce<Args>>::Output

🔬This is a nightly-only experimental API. (fn_traits)
Performs the call operation.
","FnMut","algebra::module::steenrod_module::SteenrodModule"],["
1.35.0 · source§

impl<Args, F, A> FnOnce<Args> for Box<F, A>
where\n Args: Tuple,\n F: FnOnce<Args> + ?Sized,\n A: Allocator,

source§

type Output = <F as FnOnce<Args>>::Output

The returned type after the call operator is used.
source§

extern "rust-call" fn call_once(\n self,\n args: Args,\n) -> <Box<F, A> as FnOnce<Args>>::Output

🔬This is a nightly-only experimental API. (fn_traits)
Performs the call operation.
","FnOnce","algebra::module::steenrod_module::SteenrodModule"],["
1.6.0 · source§

impl<T> From<T> for Box<T>

source§

fn from(t: T) -> Box<T>

Converts a T into a Box<T>

\n

The conversion allocates on the heap and moves t\nfrom the stack into it.

\n
§Examples
\n
let x = 5;\nlet boxed = Box::new(5);\n\nassert_eq!(Box::from(x), boxed);
\n
","From","algebra::module::steenrod_module::SteenrodModule"],["
1.36.0 · source§

impl<F, A> Future for Box<F, A>
where\n F: Future + Unpin + ?Sized,\n A: Allocator,

source§

type Output = <F as Future>::Output

The type of value produced on completion.
source§

fn poll(\n self: Pin<&mut Box<F, A>>,\n cx: &mut Context<'_>,\n) -> Poll<<Box<F, A> as Future>::Output>

Attempts to resolve the future to a final value, registering\nthe current task for wakeup if the value is not yet available. Read more
","Future","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Hash for Box<T, A>
where\n T: Hash + ?Sized,\n A: Allocator,

source§

fn hash<H>(&self, state: &mut H)
where\n H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","algebra::module::steenrod_module::SteenrodModule"],["
1.22.0 · source§

impl<T, A> Hasher for Box<T, A>
where\n T: Hasher + ?Sized,\n A: Allocator,

source§

fn finish(&self) -> u64

Returns the hash value for the values written so far. Read more
source§

fn write(&mut self, bytes: &[u8])

Writes some data into this Hasher. Read more
source§

fn write_u8(&mut self, i: u8)

Writes a single u8 into this hasher.
source§

fn write_u16(&mut self, i: u16)

Writes a single u16 into this hasher.
source§

fn write_u32(&mut self, i: u32)

Writes a single u32 into this hasher.
source§

fn write_u64(&mut self, i: u64)

Writes a single u64 into this hasher.
source§

fn write_u128(&mut self, i: u128)

Writes a single u128 into this hasher.
source§

fn write_usize(&mut self, i: usize)

Writes a single usize into this hasher.
source§

fn write_i8(&mut self, i: i8)

Writes a single i8 into this hasher.
source§

fn write_i16(&mut self, i: i16)

Writes a single i16 into this hasher.
source§

fn write_i32(&mut self, i: i32)

Writes a single i32 into this hasher.
source§

fn write_i64(&mut self, i: i64)

Writes a single i64 into this hasher.
source§

fn write_i128(&mut self, i: i128)

Writes a single i128 into this hasher.
source§

fn write_isize(&mut self, i: isize)

Writes a single isize into this hasher.
source§

fn write_length_prefix(&mut self, len: usize)

🔬This is a nightly-only experimental API. (hasher_prefixfree_extras)
Writes a length prefix into this hasher, as part of being prefix-free. Read more
source§

fn write_str(&mut self, s: &str)

🔬This is a nightly-only experimental API. (hasher_prefixfree_extras)
Writes a single str into this hasher. Read more
","Hasher","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<I, A> Iterator for Box<I, A>
where\n I: Iterator + ?Sized,\n A: Allocator,

source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<<I as Iterator>::Item>

Advances the iterator and returns the next value. Read more
source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
source§

fn nth(&mut self, n: usize) -> Option<<I as Iterator>::Item>

Returns the nth element of the iterator. Read more
source§

fn last(self) -> Option<<I as Iterator>::Item>

Consumes the iterator, returning the last element. Read more
source§

fn next_chunk<const N: usize>(\n &mut self,\n) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where\n Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn count(self) -> usize
where\n Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where\n Self: Sized,

Creates an iterator starting at the same point, but stepping by\nthe given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where\n Self: Sized,\n U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where\n Self: Sized,\n U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where\n Self: Sized,\n G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator\nbetween adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where\n Self: Sized,\n F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each\nelement. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where\n Self: Sized,\n F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element\nshould be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where\n Self: Sized,\n F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where\n Self: Sized,

Creates an iterator which gives the current iteration count as well as\nthe next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where\n Self: Sized,

Creates an iterator which can use the peek and peek_mut methods\nto look at the next element of the iterator without consuming it. See\ntheir documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where\n Self: Sized,\n P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where\n Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where\n Self: Sized,

Creates an iterator that yields the first n elements, or fewer\nif the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where\n Self: Sized,\n F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but\nunlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where\n Self: Sized,\n U: IntoIterator,\n F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where\n Self: Sized,\n F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over\nself and returns an iterator over the outputs of f. Like slice::windows(),\nthe windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where\n Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where\n Self: Sized,\n F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where\n Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where\n B: FromIterator<Self::Item>,\n Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where\n E: Extend<Self::Item>,\n Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where\n Self: Sized,\n B: Default + Extend<Self::Item>,\n F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where\n Self: Sized,\n P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate,\nsuch that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where\n Self: Sized,\n F: FnMut(B, Self::Item) -> R,\n R: Try<Output = B>,

An iterator method that applies a function as long as it returns\nsuccessfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where\n Self: Sized,\n F: FnMut(Self::Item) -> R,\n R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the\niterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where\n Self: Sized,\n F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation,\nreturning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where\n Self: Sized,\n F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing\noperation. Read more
source§

fn try_reduce<R>(\n &mut self,\n f: impl FnMut(Self::Item, Self::Item) -> R,\n) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where\n Self: Sized,\n R: Try<Output = Self::Item>,\n <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the\nclosure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where\n Self: Sized,\n F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where\n Self: Sized,\n F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where\n Self: Sized,\n F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns\nthe first non-none result. Read more
source§

fn try_find<R>(\n &mut self,\n f: impl FnMut(&Self::Item) -> R,\n) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where\n Self: Sized,\n R: Try<Output = bool>,\n <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns\nthe first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where\n Self: Sized,\n P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where\n B: Ord,\n Self: Sized,\n F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the\nspecified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the\nspecified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where\n B: Ord,\n Self: Sized,\n F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the\nspecified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the\nspecified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where\n FromA: Default + Extend<A>,\n FromB: Default + Extend<B>,\n Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where\n T: 'a + Copy,\n Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where\n T: 'a + Clone,\n Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where\n Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where\n Self: Sized,\n S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where\n Self: Sized,\n P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those\nof another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

Lexicographically compares the PartialOrd elements of\nthis Iterator with those of another. The comparison works like short-circuit\nevaluation, returning a result without comparing the remaining elements.\nAs soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those\nof another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where\n I: IntoIterator,\n Self::Item: PartialEq<<I as IntoIterator>::Item>,\n Self: Sized,

Determines if the elements of this Iterator are equal to those of\nanother. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of\nanother with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where\n I: IntoIterator,\n Self::Item: PartialEq<<I as IntoIterator>::Item>,\n Self: Sized,

Determines if the elements of this Iterator are not equal to those of\nanother. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

Determines if the elements of this Iterator are lexicographically\nless than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

Determines if the elements of this Iterator are lexicographically\nless or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

Determines if the elements of this Iterator are lexicographically\ngreater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

Determines if the elements of this Iterator are lexicographically\ngreater than or equal to those of another. Read more
1.82.0 · source§

fn is_sorted_by<F>(self, compare: F) -> bool
where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where\n Self: Sized,\n F: FnMut(Self::Item) -> K,\n K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction\nfunction. Read more
","Iterator","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T: Module + ?Sized> Module for Box<T>
where\n Box<T>: Display + Any + Send + Sync,

source§

type Algebra = <T as Module>::Algebra

source§

fn algebra(&self) -> Arc<Self::Algebra>

The algebra the module is over.
source§

fn min_degree(&self) -> i32

The minimum degree of the module, which is required to be bounded below
source§

fn compute_basis(&self, degree: i32)

Compute internal data of the module so that we can query information up to degree degree.\nThis should be run by the user whenever they want to query such information. Read more
source§

fn max_computed_degree(&self) -> i32

The maximum t for which the module is fully defined at t. See Module documentation\nfor more details.
source§

fn dimension(&self, degree: i32) -> usize

The dimension of a module at the given degree
source§

fn act_on_basis(\n &self,\n result: FpSliceMut<'_>,\n coeff: u32,\n op_degree: i32,\n op_index: usize,\n mod_degree: i32,\n mod_index: usize,\n)

source§

fn basis_element_to_string(&self, degree: i32, idx: usize) -> String

The name of a basis element. This is useful for debugging and printing results.
source§

fn is_unit(&self) -> bool

Whether this is the unit module.
source§

fn prime(&self) -> ValidPrime

The prime the module is over, which should be equal to the prime of the algebra.
source§

fn max_degree(&self) -> Option<i32>

max_degree is the a degree such that if t > max_degree, then self.dimension(t) = 0.
source§

fn max_generator_degree(&self) -> Option<i32>

Maximum degree of a generator under the Steenrod action. Every element in higher degree\nmust be obtainable from applying a Steenrod action to a lower degree element.
source§

fn total_dimension(&self) -> usize

source§

fn act(\n &self,\n result: FpSliceMut<'_>,\n coeff: u32,\n op_degree: i32,\n op_index: usize,\n input_degree: i32,\n input: FpSlice<'_>,\n)

The length of input need not be equal to the dimension of the module in said degree.\nMissing entries are interpreted to be 0, while extra entries must be zero. Read more
source§

fn act_by_element(\n &self,\n result: FpSliceMut<'_>,\n coeff: u32,\n op_degree: i32,\n op: FpSlice<'_>,\n input_degree: i32,\n input: FpSlice<'_>,\n)

source§

fn act_by_element_on_basis(\n &self,\n result: FpSliceMut<'_>,\n coeff: u32,\n op_degree: i32,\n op: FpSlice<'_>,\n input_degree: i32,\n input_index: usize,\n)

source§

fn element_to_string(&self, degree: i32, element: FpSlice<'_>) -> String

Gives the name of an element. The default implementation is derived from\nModule::basis_element_to_string in the obvious way.
","Module","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Ord for Box<T, A>
where\n T: Ord + ?Sized,\n A: Allocator,

source§

fn cmp(&self, other: &Box<T, A>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> PartialEq for Box<T, A>
where\n T: PartialEq + ?Sized,\n A: Allocator,

source§

fn eq(&self, other: &Box<T, A>) -> bool

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

fn ne(&self, other: &Box<T, A>) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> PartialOrd for Box<T, A>
where\n T: PartialOrd + ?Sized,\n A: Allocator,

source§

fn partial_cmp(&self, other: &Box<T, A>) -> Option<Ordering>

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

fn lt(&self, other: &Box<T, A>) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
source§

fn le(&self, other: &Box<T, A>) -> bool

Tests less than or equal to (for self and other) and is used by the\n<= operator. Read more
source§

fn ge(&self, other: &Box<T, A>) -> bool

Tests greater than or equal to (for self and other) and is used by\nthe >= operator. Read more
source§

fn gt(&self, other: &Box<T, A>) -> bool

Tests greater than (for self and other) and is used by the >\noperator. Read more
","PartialOrd","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Pointer for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

source§

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

Formats the value using the given formatter. Read more
","Pointer","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<R> Read for Box<R>
where\n R: Read + ?Sized,

source§

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

Pull some bytes from this source into the specified buffer, returning\nhow many bytes were read. Read more
source§

fn read_buf(&mut self, cursor: 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_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\nimplementation. Read more
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
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
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_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\n Self: Sized,

Creates a “by reference” adaptor for this instance of Read. Read more
1.0.0 · source§

fn bytes(self) -> Bytes<Self>
where\n Self: Sized,

Transforms this Read instance to an Iterator over its bytes. Read more
1.0.0 · source§

fn chain<R>(self, next: R) -> Chain<Self, R>
where\n R: Read,\n Self: Sized,

Creates an adapter which will chain this stream with another. Read more
1.0.0 · source§

fn take(self, limit: u64) -> Take<Self>
where\n Self: Sized,

Creates an adapter which will read at most limit bytes from it. Read more
","Read","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<R> RngCore for Box<R>
where\n R: RngCore + ?Sized,

source§

fn next_u32(&mut self) -> u32

Return the next random u32. Read more
source§

fn next_u64(&mut self) -> u64

Return the next random u64. Read more
source§

fn fill_bytes(&mut self, dest: &mut [u8])

Fill dest with random data. Read more
source§

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

Fill dest entirely with random data. Read more
","RngCore","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<S> Seek for Box<S>
where\n S: Seek + ?Sized,

source§

fn seek(&mut self, pos: SeekFrom) -> Result<u64, Error>

Seek to an offset, in bytes, in a stream. Read more
source§

fn stream_position(&mut self) -> Result<u64, Error>

Returns the current seek position from the start of the stream. Read more
1.55.0 · source§

fn rewind(&mut self) -> Result<(), Error>

Rewind to the beginning of a stream. Read more
source§

fn stream_len(&mut self) -> Result<u64, Error>

🔬This is a nightly-only experimental API. (seek_stream_len)
Returns the length of this stream (in bytes). Read more
1.80.0 · source§

fn seek_relative(&mut self, offset: i64) -> Result<(), Error>

Seeks relative to the current position. Read more
","Seek","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T> Serialize for Box<T>
where\n T: Serialize + ?Sized,

source§

fn serialize<S>(\n &self,\n serializer: S,\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where\n S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","algebra::module::steenrod_module::SteenrodModule"],["
§

impl<S> Strategy for Box<S>
where\n S: Strategy + ?Sized,

§

type Tree = <S as Strategy>::Tree

The value tree generated by this Strategy.
§

type Value = <S as Strategy>::Value

The type of value used by functions under test generated by this Strategy. Read more
§

fn new_tree(\n &self,\n runner: &mut TestRunner,\n) -> Result<<Box<S> as Strategy>::Tree, Reason>

Generate a new value tree from the given runner. Read more
§

fn prop_map<O, F>(self, fun: F) -> Map<Self, F>
where\n O: Debug,\n F: Fn(Self::Value) -> O,\n Self: Sized,

Returns a strategy which produces values transformed by the function\nfun. Read more
§

fn prop_map_into<O>(self) -> MapInto<Self, O>
where\n O: Debug,\n Self: Sized,\n Self::Value: Into<O>,

Returns a strategy which produces values of type O by transforming\nSelf with Into<O>. Read more
§

fn prop_perturb<O, F>(self, fun: F) -> Perturb<Self, F>
where\n O: Debug,\n F: Fn(Self::Value, TestRng) -> O,\n Self: Sized,

Returns a strategy which produces values transformed by the function\nfun, which is additionally given a random number generator. Read more
§

fn prop_flat_map<S, F>(self, fun: F) -> Flatten<Map<Self, F>>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Maps values produced by this strategy into new strategies and picks\nvalues from those strategies. Read more
§

fn prop_ind_flat_map<S, F>(self, fun: F) -> IndFlatten<Map<Self, F>>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Maps values produced by this strategy into new strategies and picks\nvalues from those strategies while considering the new strategies to be\nindependent. Read more
§

fn prop_ind_flat_map2<S, F>(self, fun: F) -> IndFlattenMap<Self, F>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Similar to prop_ind_flat_map(), but produces 2-tuples with the input\ngenerated from self in slot 0 and the derived strategy in slot 1. Read more
§

fn prop_filter<R, F>(self, whence: R, fun: F) -> Filter<Self, F>
where\n R: Into<Reason>,\n F: Fn(&Self::Value) -> bool,\n Self: Sized,

Returns a strategy which only produces values accepted by fun. Read more
§

fn prop_filter_map<F, O>(\n self,\n whence: impl Into<Reason>,\n fun: F,\n) -> FilterMap<Self, F>
where\n F: Fn(Self::Value) -> Option<O>,\n O: Debug,\n Self: Sized,

Returns a strategy which only produces transformed values where fun\nreturns Some(value) and rejects those where fun returns None. Read more
§

fn prop_union(self, other: Self) -> Union<Self>
where\n Self: Sized,

Returns a strategy which picks uniformly from self and other. Read more
§

fn prop_recursive<R, F>(\n self,\n depth: u32,\n desired_size: u32,\n expected_branch_size: u32,\n recurse: F,\n) -> Recursive<Self::Value, F>
where\n R: Strategy<Value = Self::Value> + 'static,\n F: Fn(BoxedStrategy<Self::Value>) -> R,\n Self: Sized + 'static,

Generate a recursive structure with self items as leaves. Read more
§

fn boxed(self) -> BoxedStrategy<Self::Value>
where\n Self: Sized + 'static,

Erases the type of this Strategy so it can be passed around as a\nsimple trait object. Read more
§

fn no_shrink(self) -> NoShrink<Self>
where\n Self: Sized,

Wraps this strategy to prevent values from being subject to shrinking. Read more
","Strategy","algebra::module::steenrod_module::SteenrodModule"],["
§

impl<T> ValueTree for Box<T>
where\n T: ValueTree + ?Sized,

§

type Value = <T as ValueTree>::Value

The type of the value produced by this ValueTree.
§

fn current(&self) -> <Box<T> as ValueTree>::Value

Returns the current value.
§

fn simplify(&mut self) -> bool

Attempts to simplify the current value. Notionally, this sets the\n“high” value to the current value, and the current value to a “halfway\npoint” between high and low, rounding towards low. Read more
§

fn complicate(&mut self) -> bool

Attempts to partially undo the last simplification. Notionally, this\nsets the “low” value to one plus the current value, and the current\nvalue to a “halfway point” between high and the new low, rounding\ntowards low. Read more
","ValueTree","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<W> Write for Box<W>
where\n W: Write + ?Sized,

source§

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

Writes a buffer into this writer, returning how many bytes were written. Read more
source§

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

Like write, except that it writes from a slice of buffers. Read more
source§

fn is_write_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (can_vector)
Determines if this Writer has an efficient write_vectored\nimplementation. Read more
source§

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

Flushes this output stream, ensuring that all intermediately buffered\ncontents reach their destination. Read more
source§

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

Attempts to write an entire buffer into this writer. Read more
source§

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

Writes a formatted string into this writer, returning any error\nencountered. Read more
source§

fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>

🔬This is a nightly-only experimental API. (write_all_vectored)
Attempts to write multiple buffers into this writer. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where\n Self: Sized,

Creates a “by reference” adapter for this instance of Write. Read more
","Write","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T, U, A> CoerceUnsized<Box<U, A>> for Box<T, A>
where\n T: Unsize<U> + ?Sized,\n A: Allocator,\n U: ?Sized,

","CoerceUnsized>","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<R> CryptoRng for Box<R>
where\n R: CryptoRng + ?Sized,

","CryptoRng","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T, A> DerefPure for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

","DerefPure","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T, U> DispatchFromDyn<Box<U>> for Box<T>
where\n T: Unsize<U> + ?Sized,\n U: ?Sized,

","DispatchFromDyn>","algebra::module::steenrod_module::SteenrodModule"],["
1.0.0 · source§

impl<T, A> Eq for Box<T, A>
where\n T: Eq + ?Sized,\n A: Allocator,

","Eq","algebra::module::steenrod_module::SteenrodModule"],["
1.26.0 · source§

impl<I, A> FusedIterator for Box<I, A>
where\n I: FusedIterator + ?Sized,\n A: Allocator,

","FusedIterator","algebra::module::steenrod_module::SteenrodModule"],["
source§

impl<T, A> PinCoerceUnsized for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

","PinCoerceUnsized","algebra::module::steenrod_module::SteenrodModule"],["
1.33.0 · source§

impl<T, A> Unpin for Box<T, A>
where\n A: Allocator,\n T: ?Sized,

","Unpin","algebra::module::steenrod_module::SteenrodModule"]]]]); if (window.register_type_impls) { window.register_type_impls(type_impls); } else { diff --git a/docs/type.impl/alloc/vec/struct.Vec.js b/docs/type.impl/alloc/vec/struct.Vec.js index 2defcd4c9..495715d88 100644 --- a/docs/type.impl/alloc/vec/struct.Vec.js +++ b/docs/type.impl/alloc/vec/struct.Vec.js @@ -1,5 +1,5 @@ (function() { - var type_impls = Object.fromEntries([["algebra",[["
§

impl<A> Arbitrary for Vec<A>
where\n A: Arbitrary,

§

type Parameters = (SizeRange, <A as Arbitrary>::Parameters)

The type of parameters that arbitrary_with accepts for configuration\nof the generated Strategy. Parameters must implement Default.
§

type Strategy = VecStrategy<<A as Arbitrary>::Strategy>

The type of Strategy used to generate values of type Self.
§

fn arbitrary_with(\n args: <Vec<A> as Arbitrary>::Parameters,\n) -> <Vec<A> as Arbitrary>::Strategy

Generates a Strategy for producing arbitrary values of type the\nimplementing type (Self). The strategy is passed the arguments given\nin args. Read more
§

fn arbitrary() -> Self::Strategy

Generates a Strategy for producing arbitrary values\nof type the implementing type (Self). Read more
","Arbitrary","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
§

impl<A> ArbitraryF1<A> for Vec<A>
where\n A: Debug,

§

type Parameters = SizeRange

The type of parameters that lift1_with accepts for\nconfiguration of the lifted and generated Strategy. Parameters\nmust implement Default.
§

fn lift1_with<S>(\n base: S,\n args: <Vec<A> as ArbitraryF1<A>>::Parameters,\n) -> BoxedStrategy<Vec<A>>
where\n S: Strategy<Value = A> + 'static,

Lifts a given Strategy to a new Strategy for the (presumably)\nbigger type. This is useful for lifting a Strategy for SomeType\nto a container such as Vec of SomeType. The composite strategy is\npassed the arguments given in args. Read more
§

fn lift1<AS>(base: AS) -> BoxedStrategy<Self>
where\n AS: Strategy<Value = A> + 'static,

Lifts a given Strategy to a new Strategy for the (presumably)\nbigger type. This is useful for lifting a Strategy for SomeType\nto a container such as Vec<SomeType>. Read more
","ArbitraryF1","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.5.0 · source§

impl<T, A> AsMut<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut [T]

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut<[T]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.5.0 · source§

impl<T, A> AsMut<Vec<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut Vec<T, A>

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> AsRef<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn as_ref(&self) -> &[T]

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef<[T]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> AsRef<Vec<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn as_ref(&self) -> &Vec<T, A>

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Borrow<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn borrow(&self) -> &[T]

Immutably borrows from an owned value. Read more
","Borrow<[T]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> BorrowMut<[T]> for Vec<T, A>
where\n A: Allocator,

source§

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

Mutably borrows from an owned value. Read more
","BorrowMut<[T]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Clone for Vec<T, A>
where\n T: Clone,\n A: Allocator + Clone,

source§

fn clone_from(&mut self, source: &Vec<T, A>)

Overwrites the contents of self with a clone of the contents of source.

\n

This method is preferred over simply assigning source.clone() to self,\nas it avoids reallocation if possible. Additionally, if the element type\nT overrides clone_from(), this will reuse the resources of self’s\nelements as well.

\n
§Examples
\n
let x = vec![5, 6, 7];\nlet mut y = vec![8, 9, 10];\nlet yp: *const i32 = y.as_ptr();\n\ny.clone_from(&x);\n\n// The value is the same\nassert_eq!(x, y);\n\n// And no reallocation occurred\nassert_eq!(yp, y.as_ptr());
\n
source§

fn clone(&self) -> Vec<T, A>

Returns a copy of the value. Read more
","Clone","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Debug for Vec<T, A>
where\n T: Debug,\n A: Allocator,

source§

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

Formats the value using the given formatter. Read more
","Debug","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T> Default for Vec<T>

source§

fn default() -> Vec<T>

Creates an empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
","Default","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Deref for Vec<T, A>
where\n A: Allocator,

source§

type Target = [T]

The resulting type after dereferencing.
source§

fn deref(&self) -> &[T]

Dereferences the value.
","Deref","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> DerefMut for Vec<T, A>
where\n A: Allocator,

source§

fn deref_mut(&mut self) -> &mut [T]

Mutably dereferences the value.
","DerefMut","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<'de, T> Deserialize<'de> for Vec<T>
where\n T: Deserialize<'de>,

source§

fn deserialize<D>(\n deserializer: D,\n) -> Result<Vec<T>, <D as Deserializer<'de>>::Error>
where\n D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Drop for Vec<T, A>
where\n A: Allocator,

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
","Drop","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.2.0 · source§

impl<'a, T, A> Extend<&'a T> for Vec<T, A>
where\n T: Copy + 'a,\n A: Allocator,

Extend implementation that copies elements out of references before pushing them onto the Vec.

\n

This implementation is specialized for slice iterators, where it uses copy_from_slice to\nappend the entire slice at once.

\n
source§

fn extend<I>(&mut self, iter: I)
where\n I: IntoIterator<Item = &'a T>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, _: &'a T)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
","Extend<&'a T>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Extend<T> for Vec<T, A>
where\n A: Allocator,

source§

fn extend<I>(&mut self, iter: I)
where\n I: IntoIterator<Item = T>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: T)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
","Extend","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T> From<&[T]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &[T]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&[1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&[T]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.74.0 · source§

impl<T, const N: usize> From<&[T; N]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &[T; N]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&[1, 2, 3]), vec![1, 2, 3]);
\n
","From<&[T; N]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl From<&FpVector> for Vec<u32>

source§

fn from(v: &FpVector) -> Vec<u32>

Converts to this type from the input type.
","From<&FpVector>","algebra::algebra::milnor_algebra::PPart"],["
1.19.0 · source§

impl<T> From<&mut [T]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &mut [T]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&mut [T]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.74.0 · source§

impl<T, const N: usize> From<&mut [T; N]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &mut [T; N]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3]), vec![1, 2, 3]);
\n
","From<&mut [T; N]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.44.0 · source§

impl<T, const N: usize> From<[T; N]> for Vec<T>

source§

fn from(s: [T; N]) -> Vec<T>

Allocates a Vec<T> and moves s’s items into it.

\n
§Examples
\n
assert_eq!(Vec::from([1, 2, 3]), vec![1, 2, 3]);
\n
","From<[T; N]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.5.0 · source§

impl<T, A> From<BinaryHeap<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(heap: BinaryHeap<T, A>) -> Vec<T, A>

Converts a BinaryHeap<T> into a Vec<T>.

\n

This conversion requires no data movement or allocation, and has\nconstant time complexity.

\n
","From>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.18.0 · source§

impl<T, A> From<Box<[T], A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(s: Box<[T], A>) -> Vec<T, A>

Converts a boxed slice into a vector by transferring ownership of\nthe existing heap allocation.

\n
§Examples
\n
let b: Box<[i32]> = vec![1, 2, 3].into_boxed_slice();\nassert_eq!(Vec::from(b), vec![1, 2, 3]);
\n
","From>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.14.0 · source§

impl<'a, T> From<Cow<'a, [T]>> for Vec<T>
where\n [T]: ToOwned<Owned = Vec<T>>,

source§

fn from(s: Cow<'a, [T]>) -> Vec<T>

Converts a clone-on-write slice into a vector.

\n

If s already owns a Vec<T>, it will be returned directly.\nIf s is borrowing a slice, a new Vec<T> will be allocated and\nfilled by cloning s’s items into it.

\n
§Examples
\n
let o: Cow<'_, [i32]> = Cow::Owned(vec![1, 2, 3]);\nlet b: Cow<'_, [i32]> = Cow::Borrowed(&[1, 2, 3]);\nassert_eq!(Vec::from(o), Vec::from(b));
\n
","From>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.10.0 · source§

impl<T, A> From<VecDeque<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(other: VecDeque<T, A>) -> Vec<T, A>

Turn a VecDeque<T> into a Vec<T>.

\n

This never needs to re-allocate, but does need to do O(n) data movement if\nthe circular buffer doesn’t happen to be at the beginning of the allocation.

\n
§Examples
\n
use std::collections::VecDeque;\n\n// This one is *O*(1).\nlet deque: VecDeque<_> = (1..5).collect();\nlet ptr = deque.as_slices().0.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);\n\n// This one needs data rearranging.\nlet mut deque: VecDeque<_> = (1..5).collect();\ndeque.push_front(9);\ndeque.push_front(8);\nlet ptr = deque.as_slices().1.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [8, 9, 1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);
\n
","From>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T> FromIterator<T> for Vec<T>

Collects an iterator into a Vec, commonly called via Iterator::collect()

\n

§Allocation behavior

\n

In general Vec does not guarantee any particular growth or allocation strategy.\nThat also applies to this trait impl.

\n

Note: This section covers implementation details and is therefore exempt from\nstability guarantees.

\n

Vec may use any or none of the following strategies,\ndepending on the supplied iterator:

\n
    \n
  • preallocate based on Iterator::size_hint()\n
      \n
    • and panic if the number of items is outside the provided lower/upper bounds
    • \n
    \n
  • \n
  • use an amortized growth strategy similar to pushing one item at a time
  • \n
  • perform the iteration in-place on the original allocation backing the iterator
  • \n
\n

The last case warrants some attention. It is an optimization that in many cases reduces peak memory\nconsumption and improves cache locality. But when big, short-lived allocations are created,\nonly a small fraction of their items get collected, no further use is made of the spare capacity\nand the resulting Vec is moved into a longer-lived structure, then this can lead to the large\nallocations having their lifetimes unnecessarily extended which can result in increased memory\nfootprint.

\n

In cases where this is an issue, the excess capacity can be discarded with Vec::shrink_to(),\nVec::shrink_to_fit() or by collecting into Box<[T]> instead, which additionally reduces\nthe size of the long-lived struct.

\n\n
static LONG_LIVED: Mutex<Vec<Vec<u16>>> = Mutex::new(Vec::new());\n\nfor i in 0..10 {\n    let big_temporary: Vec<u16> = (0..1024).collect();\n    // discard most items\n    let mut result: Vec<_> = big_temporary.into_iter().filter(|i| i % 100 == 0).collect();\n    // without this a lot of unused capacity might be moved into the global\n    result.shrink_to_fit();\n    LONG_LIVED.lock().unwrap().push(result);\n}
\n
source§

fn from_iter<I>(iter: I) -> Vec<T>
where\n I: IntoIterator<Item = T>,

Creates a value from an iterator. Read more
","FromIterator","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
§

impl<T> FromParallelIterator<T> for Vec<T>
where\n T: Send,

Collects items from a parallel iterator into a vector.

\n
§

fn from_par_iter<I>(par_iter: I) -> Vec<T>
where\n I: IntoParallelIterator<Item = T>,

Creates an instance of the collection from the parallel iterator par_iter. Read more
","FromParallelIterator","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Hash for Vec<T, A>
where\n T: Hash,\n A: Allocator,

The hash of a vector is the same as that of the corresponding slice,\nas required by the core::borrow::Borrow implementation.

\n\n
use std::hash::BuildHasher;\n\nlet b = std::hash::RandomState::new();\nlet v: Vec<u8> = vec![0xa8, 0x3c, 0x09];\nlet s: &[u8] = &[0xa8, 0x3c, 0x09];\nassert_eq!(b.hash_one(v), b.hash_one(s));
\n
source§

fn hash<H>(&self, state: &mut H)
where\n H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, I, A> Index<I> for Vec<T, A>
where\n I: SliceIndex<[T]>,\n A: Allocator,

source§

type Output = <I as SliceIndex<[T]>>::Output

The returned type after indexing.
source§

fn index(&self, index: I) -> &<Vec<T, A> as Index<I>>::Output

Performs the indexing (container[index]) operation. Read more
","Index","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, I, A> IndexMut<I> for Vec<T, A>
where\n I: SliceIndex<[T]>,\n A: Allocator,

source§

fn index_mut(&mut self, index: I) -> &mut <Vec<T, A> as Index<I>>::Output

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<'de, T, E> IntoDeserializer<'de, E> for Vec<T>
where\n T: IntoDeserializer<'de, E>,\n E: Error,

source§

type Deserializer = SeqDeserializer<<Vec<T> as IntoIterator>::IntoIter, E>

The type of the deserializer being converted into.
source§

fn into_deserializer(self) -> <Vec<T> as IntoDeserializer<'de, E>>::Deserializer

Convert this value into a deserializer.
","IntoDeserializer<'de, E>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> IntoIterator for Vec<T, A>
where\n A: Allocator,

source§

fn into_iter(self) -> <Vec<T, A> as IntoIterator>::IntoIter

Creates a consuming iterator, that is, one that moves each value out of\nthe vector (from start to end). The vector cannot be used after calling\nthis.

\n
§Examples
\n
let v = vec![\"a\".to_string(), \"b\".to_string()];\nlet mut v_iter = v.into_iter();\n\nlet first_element: Option<String> = v_iter.next();\n\nassert_eq!(first_element, Some(\"a\".to_string()));\nassert_eq!(v_iter.next(), Some(\"b\".to_string()));\nassert_eq!(v_iter.next(), None);
\n
source§

type Item = T

The type of the elements being iterated over.
source§

type IntoIter = IntoIter<T, A>

Which kind of iterator are we turning this into?
","IntoIterator","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
§

impl<T> IntoParallelIterator for Vec<T>
where\n T: Send,

§

type Item = T

The type of item that the parallel iterator will produce.
§

type Iter = IntoIter<T>

The parallel iterator type that will be created.
§

fn into_par_iter(self) -> <Vec<T> as IntoParallelIterator>::Iter

Converts self into a parallel iterator. Read more
","IntoParallelIterator","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Ord for Vec<T, A>
where\n T: Ord,\n A: Allocator,

Implements ordering of vectors, lexicographically.

\n
source§

fn cmp(&self, other: &Vec<T, A>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
§

impl<'a, T> ParallelExtend<&'a T> for Vec<T>
where\n T: 'a + Copy + Send + Sync,

Extends a vector with copied items from a parallel iterator.

\n
§

fn par_extend<I>(&mut self, par_iter: I)
where\n I: IntoParallelIterator<Item = &'a T>,

Extends an instance of the collection with the elements drawn\nfrom the parallel iterator par_iter. Read more
","ParallelExtend<&'a T>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
§

impl<T> ParallelExtend<T> for Vec<T>
where\n T: Send,

Extends a vector with items from a parallel iterator.

\n
§

fn par_extend<I>(&mut self, par_iter: I)
where\n I: IntoParallelIterator<Item = T>,

Extends an instance of the collection with the elements drawn\nfrom the parallel iterator par_iter. Read more
","ParallelExtend","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&[U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U]) -> bool

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

fn ne(&self, other: &&[U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&[U]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<&[U; N]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U; N]) -> bool

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

fn ne(&self, other: &&[U; N]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&[U; N]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&mut [U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&mut [U]) -> bool

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

fn ne(&self, other: &&mut [U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&mut [U]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.48.0 · source§

impl<T, U, A> PartialEq<[U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U]) -> bool

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

fn ne(&self, other: &[U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<[U]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<[U; N]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U; N]) -> bool

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

fn ne(&self, other: &[U; N]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<[U; N]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, U, A1, A2> PartialEq<Vec<U, A2>> for Vec<T, A1>
where\n A1: Allocator,\n A2: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &Vec<U, A2>) -> bool

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

fn ne(&self, other: &Vec<U, A2>) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A1, A2> PartialOrd<Vec<T, A2>> for Vec<T, A1>
where\n T: PartialOrd,\n A1: Allocator,\n A2: Allocator,

Implements comparison of vectors, lexicographically.

\n
source§

fn partial_cmp(&self, other: &Vec<T, A2>) -> Option<Ordering>

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

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

Tests less than or equal to (for self and other) and is used by the\n<= operator. Read more
1.0.0 · source§

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

Tests greater than (for self and other) and is used by the >\noperator. Read more
1.0.0 · source§

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

Tests greater than or equal to (for self and other) and is used by\nthe >= operator. Read more
","PartialOrd>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<T> Serialize for Vec<T>
where\n T: Serialize,

source§

fn serialize<S>(\n &self,\n serializer: S,\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where\n S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
§

impl<T> Shuffleable for Vec<T>

§

fn shuffle_len(&self) -> usize

Return the length of this collection.
§

fn shuffle_swap(&mut self, a: usize, b: usize)

Swap the elements at the given indices.
","Shuffleable","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
§

impl<T> Strategy for Vec<T>
where\n T: Strategy,

§

type Tree = VecValueTree<<T as Strategy>::Tree>

The value tree generated by this Strategy.
§

type Value = Vec<<T as Strategy>::Value>

The type of value used by functions under test generated by this Strategy. Read more
§

fn new_tree(\n &self,\n runner: &mut TestRunner,\n) -> Result<<Vec<T> as Strategy>::Tree, Reason>

Generate a new value tree from the given runner. Read more
§

fn prop_map<O, F>(self, fun: F) -> Map<Self, F>
where\n O: Debug,\n F: Fn(Self::Value) -> O,\n Self: Sized,

Returns a strategy which produces values transformed by the function\nfun. Read more
§

fn prop_map_into<O>(self) -> MapInto<Self, O>
where\n O: Debug,\n Self: Sized,\n Self::Value: Into<O>,

Returns a strategy which produces values of type O by transforming\nSelf with Into<O>. Read more
§

fn prop_perturb<O, F>(self, fun: F) -> Perturb<Self, F>
where\n O: Debug,\n F: Fn(Self::Value, TestRng) -> O,\n Self: Sized,

Returns a strategy which produces values transformed by the function\nfun, which is additionally given a random number generator. Read more
§

fn prop_flat_map<S, F>(self, fun: F) -> Flatten<Map<Self, F>>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Maps values produced by this strategy into new strategies and picks\nvalues from those strategies. Read more
§

fn prop_ind_flat_map<S, F>(self, fun: F) -> IndFlatten<Map<Self, F>>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Maps values produced by this strategy into new strategies and picks\nvalues from those strategies while considering the new strategies to be\nindependent. Read more
§

fn prop_ind_flat_map2<S, F>(self, fun: F) -> IndFlattenMap<Self, F>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Similar to prop_ind_flat_map(), but produces 2-tuples with the input\ngenerated from self in slot 0 and the derived strategy in slot 1. Read more
§

fn prop_filter<R, F>(self, whence: R, fun: F) -> Filter<Self, F>
where\n R: Into<Reason>,\n F: Fn(&Self::Value) -> bool,\n Self: Sized,

Returns a strategy which only produces values accepted by fun. Read more
§

fn prop_filter_map<F, O>(\n self,\n whence: impl Into<Reason>,\n fun: F,\n) -> FilterMap<Self, F>
where\n F: Fn(Self::Value) -> Option<O>,\n O: Debug,\n Self: Sized,

Returns a strategy which only produces transformed values where fun\nreturns Some(value) and rejects those where fun returns None. Read more
§

fn prop_union(self, other: Self) -> Union<Self>
where\n Self: Sized,

Returns a strategy which picks uniformly from self and other. Read more
§

fn prop_recursive<R, F>(\n self,\n depth: u32,\n desired_size: u32,\n expected_branch_size: u32,\n recurse: F,\n) -> Recursive<Self::Value, F>
where\n R: Strategy<Value = Self::Value> + 'static,\n F: Fn(BoxedStrategy<Self::Value>) -> R,\n Self: Sized + 'static,

Generate a recursive structure with self items as leaves. Read more
§

fn boxed(self) -> BoxedStrategy<Self::Value>
where\n Self: Sized + 'static,

Erases the type of this Strategy so it can be passed around as a\nsimple trait object. Read more
§

fn no_shrink(self) -> NoShrink<Self>
where\n Self: Sized,

Wraps this strategy to prevent values from being subject to shrinking. Read more
","Strategy","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<T> Vec<T>

1.0.0 (const: 1.39.0) · source

pub const fn new() -> Vec<T>

Constructs a new, empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
§Examples
\n
let mut vec: Vec<i32> = Vec::new();
\n
1.0.0 · source

pub fn with_capacity(capacity: usize) -> Vec<T>

Constructs a new, empty Vec<T> with at least the specified capacity.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<()>::with_capacity(10);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
source

pub fn try_with_capacity(capacity: usize) -> Result<Vec<T>, TryReserveError>

🔬This is a nightly-only experimental API. (try_with_capacity)

Constructs a new, empty Vec<T> with at least the specified capacity.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n
§Errors
\n

Returns an error if the capacity exceeds isize::MAX bytes,\nor if the allocator reports allocation failure.

\n
1.0.0 · source

pub unsafe fn from_raw_parts(\n ptr: *mut T,\n length: usize,\n capacity: usize,\n) -> Vec<T>

Creates a Vec<T> directly from a pointer, a length, and a capacity.

\n
§Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must have been allocated using the global allocator, such as via\nthe alloc::alloc function.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to be the capacity that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is normally not safe\nto build a Vec<u8> from a pointer to a C char array with length\nsize_t, doing so is only safe if the array was initially allocated by\na Vec or String.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1. To avoid\nthese issues, it is often preferable to do casting/transmuting using\nslice::from_raw_parts instead.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
§Examples
\n
use std::ptr;\nuse std::mem;\n\nlet v = vec![1, 2, 3];\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts(p, len, cap);\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
use std::alloc::{alloc, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect(\"overflow cannot happen\");\n\n    let vec = unsafe {\n        let mem = alloc(layout).cast::<u32>();\n        if mem.is_null() {\n            return;\n        }\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts(mem, 1, 16)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
",0,"algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<T, A> Vec<T, A>
where\n T: Clone,\n A: Allocator,

1.5.0 · source

pub fn resize(&mut self, new_len: usize, value: T)

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with value.\nIf new_len is less than len, the Vec is simply truncated.

\n

This method requires T to implement Clone,\nin order to be able to clone the passed value.\nIf you need more flexibility (or want to rely on Default instead of\nClone), use Vec::resize_with.\nIf you only need to resize to a smaller size, use Vec::truncate.

\n
§Examples
\n
let mut vec = vec![\"hello\"];\nvec.resize(3, \"world\");\nassert_eq!(vec, [\"hello\", \"world\", \"world\"]);\n\nlet mut vec = vec![1, 2, 3, 4];\nvec.resize(2, 0);\nassert_eq!(vec, [1, 2]);
\n
1.6.0 · source

pub fn extend_from_slice(&mut self, other: &[T])

Clones and appends all elements in a slice to the Vec.

\n

Iterates over the slice other, clones each element, and then appends\nit to this Vec. The other slice is traversed in-order.

\n

Note that this function is same as extend except that it is\nspecialized to work with slices instead. If and when Rust gets\nspecialization this function will likely be deprecated (but still\navailable).

\n
§Examples
\n
let mut vec = vec![1];\nvec.extend_from_slice(&[2, 3, 4]);\nassert_eq!(vec, [1, 2, 3, 4]);
\n
1.53.0 · source

pub fn extend_from_within<R>(&mut self, src: R)
where\n R: RangeBounds<usize>,

Copies elements from src range to the end of the vector.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Examples
\n
let mut vec = vec![0, 1, 2, 3, 4];\n\nvec.extend_from_within(2..);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4]);\n\nvec.extend_from_within(..2);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1]);\n\nvec.extend_from_within(4..8);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1, 4, 2, 3, 4]);
\n
",0,"algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<T, A> Vec<T, A>
where\n T: PartialEq,\n A: Allocator,

1.0.0 · source

pub fn dedup(&mut self)

Removes consecutive repeated elements in the vector according to the\nPartialEq trait implementation.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![1, 2, 2, 3, 2];\n\nvec.dedup();\n\nassert_eq!(vec, [1, 2, 3, 2]);
\n
",0,"algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<T, A> Vec<T, A>
where\n A: Allocator,

1.21.0 · source

pub fn splice<R, I>(\n &mut self,\n range: R,\n replace_with: I,\n) -> Splice<'_, <I as IntoIterator>::IntoIter, A>
where\n R: RangeBounds<usize>,\n I: IntoIterator<Item = T>,

Creates a splicing iterator that replaces the specified range in the vector\nwith the given replace_with iterator and yields the removed items.\nreplace_with does not need to be the same length as range.

\n

range is removed even if the iterator is not consumed until the end.

\n

It is unspecified how many elements are removed from the vector\nif the Splice value is leaked.

\n

The input iterator replace_with is only consumed when the Splice value is dropped.

\n

This is optimal if:

\n
    \n
  • The tail (elements in the vector after range) is empty,
  • \n
  • or replace_with yields fewer or equal elements than range’s length
  • \n
  • or the lower bound of its size_hint() is exact.
  • \n
\n

Otherwise, a temporary vector is allocated and the tail is moved twice.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Examples
\n
let mut v = vec![1, 2, 3, 4];\nlet new = [7, 8, 9];\nlet u: Vec<_> = v.splice(1..3, new).collect();\nassert_eq!(v, &[1, 7, 8, 9, 4]);\nassert_eq!(u, &[2, 3]);
\n
source

pub fn extract_if<F>(&mut self, filter: F) -> ExtractIf<'_, T, F, A>
where\n F: FnMut(&mut T) -> bool,

🔬This is a nightly-only experimental API. (extract_if)

Creates an iterator which uses a closure to determine if an element should be removed.

\n

If the closure returns true, then the element is removed and yielded.\nIf the closure returns false, the element will remain in the vector and will not be yielded\nby the iterator.

\n

If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

\n

Using this method is equivalent to the following code:

\n\n
let mut i = 0;\nwhile i < vec.len() {\n    if some_predicate(&mut vec[i]) {\n        let val = vec.remove(i);\n        // your code here\n    } else {\n        i += 1;\n    }\n}\n
\n

But extract_if is easier to use. extract_if is also more efficient,\nbecause it can backshift the elements of the array in bulk.

\n

Note that extract_if also lets you mutate every element in the filter closure,\nregardless of whether you choose to keep or remove it.

\n
§Examples
\n

Splitting an array into evens and odds, reusing the original allocation:

\n\n
#![feature(extract_if)]\nlet mut numbers = vec![1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15];\n\nlet evens = numbers.extract_if(|x| *x % 2 == 0).collect::<Vec<_>>();\nlet odds = numbers;\n\nassert_eq!(evens, vec![2, 4, 6, 8, 14]);\nassert_eq!(odds, vec![1, 3, 5, 9, 11, 13, 15]);
\n
",0,"algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<T, A> Vec<T, A>
where\n A: Allocator,

source

pub const fn new_in(alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A>.

\n

The vector will not allocate until elements are pushed onto it.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec: Vec<i32, _> = Vec::new_in(System);
\n
source

pub fn with_capacity_in(capacity: usize, alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A> with at least the specified capacity\nwith the provided allocator.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T, A> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec = Vec::with_capacity_in(10, System);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<(), System>::with_capacity_in(10, System);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
source

pub fn try_with_capacity_in(\n capacity: usize,\n alloc: A,\n) -> Result<Vec<T, A>, TryReserveError>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A> with at least the specified capacity\nwith the provided allocator.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n
§Errors
\n

Returns an error if the capacity exceeds isize::MAX bytes,\nor if the allocator reports allocation failure.

\n
source

pub unsafe fn from_raw_parts_in(\n ptr: *mut T,\n length: usize,\n capacity: usize,\n alloc: A,\n) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Creates a Vec<T, A> directly from a pointer, a length, a capacity,\nand an allocator.

\n
§Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must be currently allocated via the given allocator alloc.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to fit the layout size that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T, A>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is not safe\nto build a Vec<u8> from a pointer to a C char array with length size_t.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nuse std::ptr;\nuse std::mem;\n\nlet mut v = Vec::with_capacity_in(3, System);\nv.push(1);\nv.push(2);\nv.push(3);\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\nlet alloc = v.allocator();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts_in(p, len, cap, alloc.clone());\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
#![feature(allocator_api)]\n\nuse std::alloc::{AllocError, Allocator, Global, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect(\"overflow cannot happen\");\n\n    let vec = unsafe {\n        let mem = match Global.allocate(layout) {\n            Ok(mem) => mem.cast::<u32>().as_ptr(),\n            Err(AllocError) => return,\n        };\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts_in(mem, 1, 16, Global)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
source

pub fn into_raw_parts(self) -> (*mut T, usize, usize)

🔬This is a nightly-only experimental API. (vec_into_raw_parts)

Decomposes a Vec<T> into its raw components: (pointer, length, capacity).

\n

Returns the raw pointer to the underlying data, the length of\nthe vector (in elements), and the allocated capacity of the\ndata (in elements). These are the same arguments in the same\norder as the arguments to from_raw_parts.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts function, allowing\nthe destructor to perform the cleanup.

\n
§Examples
\n
#![feature(vec_into_raw_parts)]\nlet v: Vec<i32> = vec![-1, 0, 1];\n\nlet (ptr, len, cap) = v.into_raw_parts();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts(ptr, len, cap)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
source

pub fn into_raw_parts_with_alloc(self) -> (*mut T, usize, usize, A)

🔬This is a nightly-only experimental API. (allocator_api)

Decomposes a Vec<T> into its raw components: (pointer, length, capacity, allocator).

\n

Returns the raw pointer to the underlying data, the length of the vector (in elements),\nthe allocated capacity of the data (in elements), and the allocator. These are the same\narguments in the same order as the arguments to from_raw_parts_in.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts_in function, allowing\nthe destructor to perform the cleanup.

\n
§Examples
\n
#![feature(allocator_api, vec_into_raw_parts)]\n\nuse std::alloc::System;\n\nlet mut v: Vec<i32, System> = Vec::new_in(System);\nv.push(-1);\nv.push(0);\nv.push(1);\n\nlet (ptr, len, cap, alloc) = v.into_raw_parts_with_alloc();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts_in(ptr, len, cap, alloc)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
1.0.0 · source

pub fn capacity(&self) -> usize

Returns the total number of elements the vector can hold without\nreallocating.

\n
§Examples
\n
let mut vec: Vec<i32> = Vec::with_capacity(10);\nvec.push(42);\nassert!(vec.capacity() >= 10);
\n
1.0.0 · source

pub fn reserve(&mut self, additional: usize)

Reserves capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to\nspeculatively avoid frequent reallocations. After calling reserve,\ncapacity will be greater than or equal to self.len() + additional.\nDoes nothing if capacity is already sufficient.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1];\nvec.reserve(10);\nassert!(vec.capacity() >= 11);
\n
1.0.0 · source

pub fn reserve_exact(&mut self, additional: usize)

Reserves the minimum capacity for at least additional more elements to\nbe inserted in the given Vec<T>. Unlike reserve, this will not\ndeliberately over-allocate to speculatively avoid frequent allocations.\nAfter calling reserve_exact, capacity will be greater than or equal to\nself.len() + additional. Does nothing if the capacity is already\nsufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer reserve if future insertions are expected.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1];\nvec.reserve_exact(10);\nassert!(vec.capacity() >= 11);
\n
1.57.0 · source

pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>

Tries to reserve capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to speculatively avoid\nfrequent reallocations. After calling try_reserve, capacity will be\ngreater than or equal to self.len() + additional if it returns\nOk(()). Does nothing if capacity is already sufficient. This method\npreserves the contents even if an error occurs.

\n
§Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
§Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.57.0 · source

pub fn try_reserve_exact(\n &mut self,\n additional: usize,\n) -> Result<(), TryReserveError>

Tries to reserve the minimum capacity for at least additional\nelements to be inserted in the given Vec<T>. Unlike try_reserve,\nthis will not deliberately over-allocate to speculatively avoid frequent\nallocations. After calling try_reserve_exact, capacity will be greater\nthan or equal to self.len() + additional if it returns Ok(()).\nDoes nothing if the capacity is already sufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer try_reserve if future insertions are expected.

\n
§Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
§Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve_exact(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.0.0 · source

pub fn shrink_to_fit(&mut self)

Shrinks the capacity of the vector as much as possible.

\n

The behavior of this method depends on the allocator, which may either shrink the vector\nin-place or reallocate. The resulting vector might still have some excess capacity, just as\nis the case for with_capacity. See Allocator::shrink for more details.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to_fit();\nassert!(vec.capacity() >= 3);
\n
1.56.0 · source

pub fn shrink_to(&mut self, min_capacity: usize)

Shrinks the capacity of the vector with a lower bound.

\n

The capacity will remain at least as large as both the length\nand the supplied value.

\n

If the current capacity is less than the lower limit, this is a no-op.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to(4);\nassert!(vec.capacity() >= 4);\nvec.shrink_to(0);\nassert!(vec.capacity() >= 3);
\n
1.0.0 · source

pub fn into_boxed_slice(self) -> Box<[T], A>

Converts the vector into Box<[T]>.

\n

Before doing the conversion, this method discards excess capacity like shrink_to_fit.

\n
§Examples
\n
let v = vec![1, 2, 3];\n\nlet slice = v.into_boxed_slice();
\n

Any excess capacity is removed:

\n\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\n\nassert!(vec.capacity() >= 10);\nlet slice = vec.into_boxed_slice();\nassert_eq!(slice.into_vec().capacity(), 3);
\n
1.0.0 · source

pub fn truncate(&mut self, len: usize)

Shortens the vector, keeping the first len elements and dropping\nthe rest.

\n

If len is greater or equal to the vector’s current length, this has\nno effect.

\n

The drain method can emulate truncate, but causes the excess\nelements to be returned instead of dropped.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
§Examples
\n

Truncating a five element vector to two elements:

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nvec.truncate(2);\nassert_eq!(vec, [1, 2]);
\n

No truncation occurs when len is greater than the vector’s current\nlength:

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(8);\nassert_eq!(vec, [1, 2, 3]);
\n

Truncating when len == 0 is equivalent to calling the clear\nmethod.

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(0);\nassert_eq!(vec, []);
\n
1.7.0 · source

pub fn as_slice(&self) -> &[T]

Extracts a slice containing the entire vector.

\n

Equivalent to &s[..].

\n
§Examples
\n
use std::io::{self, Write};\nlet buffer = vec![1, 2, 3, 5, 8];\nio::sink().write(buffer.as_slice()).unwrap();
\n
1.7.0 · source

pub fn as_mut_slice(&mut self) -> &mut [T]

Extracts a mutable slice of the entire vector.

\n

Equivalent to &mut s[..].

\n
§Examples
\n
use std::io::{self, Read};\nlet mut buffer = vec![0; 3];\nio::repeat(0b101).read_exact(buffer.as_mut_slice()).unwrap();
\n
1.37.0 · source

pub fn as_ptr(&self) -> *const T

Returns a raw pointer to the vector’s buffer, or a dangling raw pointer\nvalid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up dangling.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

The caller must also ensure that the memory the pointer (non-transitively) points to\nis never written to (except inside an UnsafeCell) using this pointer or any pointer\nderived from it. If you need to mutate the contents of the slice, use as_mut_ptr.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize mutable references to the slice,\nor mutable references to specific elements you are planning on accessing through this pointer,\nas well as writing to those elements, may still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
§Examples
\n
let x = vec![1, 2, 4];\nlet x_ptr = x.as_ptr();\n\nunsafe {\n    for i in 0..x.len() {\n        assert_eq!(*x_ptr.add(i), 1 << i);\n    }\n}
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0, 1, 2];\n    let ptr1 = v.as_ptr();\n    let _ = ptr1.read();\n    let ptr2 = v.as_mut_ptr().offset(2);\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`\n    // because it mutated a different element:\n    let _ = ptr1.read();\n}
\n
1.37.0 · source

pub fn as_mut_ptr(&mut self) -> *mut T

Returns a raw mutable pointer to the vector’s buffer, or a dangling\nraw pointer valid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up dangling.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize references to the slice,\nor references to specific elements you are planning on accessing through this pointer,\nmay still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
§Examples
\n
// Allocate vector big enough for 4 elements.\nlet size = 4;\nlet mut x: Vec<i32> = Vec::with_capacity(size);\nlet x_ptr = x.as_mut_ptr();\n\n// Initialize elements via raw pointer writes, then set length.\nunsafe {\n    for i in 0..size {\n        *x_ptr.add(i) = i as i32;\n    }\n    x.set_len(size);\n}\nassert_eq!(&*x, &[0, 1, 2, 3]);
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0];\n    let ptr1 = v.as_mut_ptr();\n    ptr1.write(1);\n    let ptr2 = v.as_mut_ptr();\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`:\n    ptr1.write(3);\n}
\n
source

pub fn allocator(&self) -> &A

🔬This is a nightly-only experimental API. (allocator_api)

Returns a reference to the underlying allocator.

\n
1.0.0 · source

pub unsafe fn set_len(&mut self, new_len: usize)

Forces the length of the vector to new_len.

\n

This is a low-level operation that maintains none of the normal\ninvariants of the type. Normally changing the length of a vector\nis done using one of the safe operations instead, such as\ntruncate, resize, extend, or clear.

\n
§Safety
\n
    \n
  • new_len must be less than or equal to capacity().
  • \n
  • The elements at old_len..new_len must be initialized.
  • \n
\n
§Examples
\n

This method can be useful for situations in which the vector\nis serving as a buffer for other code, particularly over FFI:

\n\n
pub fn get_dictionary(&self) -> Option<Vec<u8>> {\n    // Per the FFI method's docs, \"32768 bytes is always enough\".\n    let mut dict = Vec::with_capacity(32_768);\n    let mut dict_length = 0;\n    // SAFETY: When `deflateGetDictionary` returns `Z_OK`, it holds that:\n    // 1. `dict_length` elements were initialized.\n    // 2. `dict_length` <= the capacity (32_768)\n    // which makes `set_len` safe to call.\n    unsafe {\n        // Make the FFI call...\n        let r = deflateGetDictionary(self.strm, dict.as_mut_ptr(), &mut dict_length);\n        if r == Z_OK {\n            // ...and update the length to what was initialized.\n            dict.set_len(dict_length);\n            Some(dict)\n        } else {\n            None\n        }\n    }\n}
\n

While the following example is sound, there is a memory leak since\nthe inner vectors were not freed prior to the set_len call:

\n\n
let mut vec = vec![vec![1, 0, 0],\n                   vec![0, 1, 0],\n                   vec![0, 0, 1]];\n// SAFETY:\n// 1. `old_len..0` is empty so no elements need to be initialized.\n// 2. `0 <= capacity` always holds whatever `capacity` is.\nunsafe {\n    vec.set_len(0);\n}
\n

Normally, here, one would use clear instead to correctly drop\nthe contents and thus not leak memory.

\n
1.0.0 · source

pub fn swap_remove(&mut self, index: usize) -> T

Removes an element from the vector and returns it.

\n

The removed element is replaced by the last element of the vector.

\n

This does not preserve ordering of the remaining elements, but is O(1).\nIf you need to preserve the element order, use remove instead.

\n
§Panics
\n

Panics if index is out of bounds.

\n
§Examples
\n
let mut v = vec![\"foo\", \"bar\", \"baz\", \"qux\"];\n\nassert_eq!(v.swap_remove(1), \"bar\");\nassert_eq!(v, [\"foo\", \"qux\", \"baz\"]);\n\nassert_eq!(v.swap_remove(0), \"foo\");\nassert_eq!(v, [\"baz\", \"qux\"]);
\n
1.0.0 · source

pub fn insert(&mut self, index: usize, element: T)

Inserts an element at position index within the vector, shifting all\nelements after it to the right.

\n
§Panics
\n

Panics if index > len.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nvec.insert(1, 4);\nassert_eq!(vec, [1, 4, 2, 3]);\nvec.insert(4, 5);\nassert_eq!(vec, [1, 4, 2, 3, 5]);
\n
§Time complexity
\n

Takes O(Vec::len) time. All items after the insertion index must be\nshifted to the right. In the worst case, all elements are shifted when\nthe insertion index is 0.

\n
1.0.0 · source

pub fn remove(&mut self, index: usize) -> T

Removes and returns the element at position index within the vector,\nshifting all elements after it to the left.

\n

Note: Because this shifts over the remaining elements, it has a\nworst-case performance of O(n). If you don’t need the order of elements\nto be preserved, use swap_remove instead. If you’d like to remove\nelements from the beginning of the Vec, consider using\nVecDeque::pop_front instead.

\n
§Panics
\n

Panics if index is out of bounds.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\nassert_eq!(v.remove(1), 2);\nassert_eq!(v, [1, 3]);
\n
1.0.0 · source

pub fn retain<F>(&mut self, f: F)
where\n F: FnMut(&T) -> bool,

Retains only the elements specified by the predicate.

\n

In other words, remove all elements e for which f(&e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
§Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain(|&x| x % 2 == 0);\nassert_eq!(vec, [2, 4]);
\n

Because the elements are visited exactly once in the original order,\nexternal state may be used to decide which elements to keep.

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nlet keep = [false, true, true, false, true];\nlet mut iter = keep.iter();\nvec.retain(|_| *iter.next().unwrap());\nassert_eq!(vec, [2, 3, 5]);
\n
1.61.0 · source

pub fn retain_mut<F>(&mut self, f: F)
where\n F: FnMut(&mut T) -> bool,

Retains only the elements specified by the predicate, passing a mutable reference to it.

\n

In other words, remove all elements e such that f(&mut e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
§Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain_mut(|x| if *x <= 3 {\n    *x += 1;\n    true\n} else {\n    false\n});\nassert_eq!(vec, [2, 3, 4]);
\n
1.16.0 · source

pub fn dedup_by_key<F, K>(&mut self, key: F)
where\n F: FnMut(&mut T) -> K,\n K: PartialEq,

Removes all but the first of consecutive elements in the vector that resolve to the same\nkey.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![10, 20, 21, 30, 20];\n\nvec.dedup_by_key(|i| *i / 10);\n\nassert_eq!(vec, [10, 20, 30, 20]);
\n
1.16.0 · source

pub fn dedup_by<F>(&mut self, same_bucket: F)
where\n F: FnMut(&mut T, &mut T) -> bool,

Removes all but the first of consecutive elements in the vector satisfying a given equality\nrelation.

\n

The same_bucket function is passed references to two elements from the vector and\nmust determine if the elements compare equal. The elements are passed in opposite order\nfrom their order in the slice, so if same_bucket(a, b) returns true, a is removed.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![\"foo\", \"bar\", \"Bar\", \"baz\", \"bar\"];\n\nvec.dedup_by(|a, b| a.eq_ignore_ascii_case(b));\n\nassert_eq!(vec, [\"foo\", \"bar\", \"baz\", \"bar\"]);
\n
1.0.0 · source

pub fn push(&mut self, value: T)

Appends an element to the back of a collection.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1, 2];\nvec.push(3);\nassert_eq!(vec, [1, 2, 3]);
\n
§Time complexity
\n

Takes amortized O(1) time. If the vector’s length would exceed its\ncapacity after the push, O(capacity) time is taken to copy the\nvector’s elements to a larger allocation. This expensive operation is\noffset by the capacity O(1) insertions it allows.

\n
source

pub fn push_within_capacity(&mut self, value: T) -> Result<(), T>

🔬This is a nightly-only experimental API. (vec_push_within_capacity)

Appends an element if there is sufficient spare capacity, otherwise an error is returned\nwith the element.

\n

Unlike push this method will not reallocate when there’s insufficient capacity.\nThe caller should use reserve or try_reserve to ensure that there is enough capacity.

\n
§Examples
\n

A manual, panic-free alternative to FromIterator:

\n\n
#![feature(vec_push_within_capacity)]\n\nuse std::collections::TryReserveError;\nfn from_iter_fallible<T>(iter: impl Iterator<Item=T>) -> Result<Vec<T>, TryReserveError> {\n    let mut vec = Vec::new();\n    for value in iter {\n        if let Err(value) = vec.push_within_capacity(value) {\n            vec.try_reserve(1)?;\n            // this cannot fail, the previous line either returned or added at least 1 free slot\n            let _ = vec.push_within_capacity(value);\n        }\n    }\n    Ok(vec)\n}\nassert_eq!(from_iter_fallible(0..100), Ok(Vec::from_iter(0..100)));
\n
§Time complexity
\n

Takes O(1) time.

\n
1.0.0 · source

pub fn pop(&mut self) -> Option<T>

Removes the last element from a vector and returns it, or None if it\nis empty.

\n

If you’d like to pop the first element, consider using\nVecDeque::pop_front instead.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nassert_eq!(vec.pop(), Some(3));\nassert_eq!(vec, [1, 2]);
\n
§Time complexity
\n

Takes O(1) time.

\n
source

pub fn pop_if<F>(&mut self, f: F) -> Option<T>
where\n F: FnOnce(&mut T) -> bool,

🔬This is a nightly-only experimental API. (vec_pop_if)

Removes and returns the last element in a vector if the predicate\nreturns true, or None if the predicate returns false or the vector\nis empty.

\n
§Examples
\n
#![feature(vec_pop_if)]\n\nlet mut vec = vec![1, 2, 3, 4];\nlet pred = |x: &mut i32| *x % 2 == 0;\n\nassert_eq!(vec.pop_if(pred), Some(4));\nassert_eq!(vec, [1, 2, 3]);\nassert_eq!(vec.pop_if(pred), None);
\n
1.4.0 · source

pub fn append(&mut self, other: &mut Vec<T, A>)

Moves all the elements of other into self, leaving other empty.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nlet mut vec2 = vec![4, 5, 6];\nvec.append(&mut vec2);\nassert_eq!(vec, [1, 2, 3, 4, 5, 6]);\nassert_eq!(vec2, []);
\n
1.6.0 · source

pub fn drain<R>(&mut self, range: R) -> Drain<'_, T, A>
where\n R: RangeBounds<usize>,

Removes the specified range from the vector in bulk, returning all\nremoved elements as an iterator. If the iterator is dropped before\nbeing fully consumed, it drops the remaining removed elements.

\n

The returned iterator keeps a mutable borrow on the vector to optimize\nits implementation.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Leaking
\n

If the returned iterator goes out of scope without being dropped (due to\nmem::forget, for example), the vector may have lost and leaked\nelements arbitrarily, including elements outside the range.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\nlet u: Vec<_> = v.drain(1..).collect();\nassert_eq!(v, &[1]);\nassert_eq!(u, &[2, 3]);\n\n// A full range clears the vector, like `clear()` does\nv.drain(..);\nassert_eq!(v, &[]);
\n
1.0.0 · source

pub fn clear(&mut self)

Clears the vector, removing all values.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\n\nv.clear();\n\nassert!(v.is_empty());
\n
1.0.0 · source

pub fn len(&self) -> usize

Returns the number of elements in the vector, also referred to\nas its ‘length’.

\n
§Examples
\n
let a = vec![1, 2, 3];\nassert_eq!(a.len(), 3);
\n
1.0.0 · source

pub fn is_empty(&self) -> bool

Returns true if the vector contains no elements.

\n
§Examples
\n
let mut v = Vec::new();\nassert!(v.is_empty());\n\nv.push(1);\nassert!(!v.is_empty());
\n
1.4.0 · source

pub fn split_off(&mut self, at: usize) -> Vec<T, A>
where\n A: Clone,

Splits the collection into two at the given index.

\n

Returns a newly allocated vector containing the elements in the range\n[at, len). After the call, the original vector will be left containing\nthe elements [0, at) with its previous capacity unchanged.

\n
    \n
  • If you want to take ownership of the entire contents and capacity of\nthe vector, see mem::take or mem::replace.
  • \n
  • If you don’t need the returned vector at all, see Vec::truncate.
  • \n
  • If you want to take ownership of an arbitrary subslice, or you don’t\nnecessarily want to store the removed items in a vector, see Vec::drain.
  • \n
\n
§Panics
\n

Panics if at > len.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nlet vec2 = vec.split_off(1);\nassert_eq!(vec, [1]);\nassert_eq!(vec2, [2, 3]);
\n
1.33.0 · source

pub fn resize_with<F>(&mut self, new_len: usize, f: F)
where\n F: FnMut() -> T,

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with the result of\ncalling the closure f. The return values from f will end up\nin the Vec in the order they have been generated.

\n

If new_len is less than len, the Vec is simply truncated.

\n

This method uses a closure to create new values on every push. If\nyou’d rather Clone a given value, use Vec::resize. If you\nwant to use the Default trait to generate values, you can\npass Default::default as the second argument.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nvec.resize_with(5, Default::default);\nassert_eq!(vec, [1, 2, 3, 0, 0]);\n\nlet mut vec = vec![];\nlet mut p = 1;\nvec.resize_with(4, || { p *= 2; p });\nassert_eq!(vec, [2, 4, 8, 16]);
\n
1.47.0 · source

pub fn leak<'a>(self) -> &'a mut [T]
where\n A: 'a,

Consumes and leaks the Vec, returning a mutable reference to the contents,\n&'a mut [T].

\n

Note that the type T must outlive the chosen lifetime 'a. If the type\nhas only static references, or none at all, then this may be chosen to be\n'static.

\n

As of Rust 1.57, this method does not reallocate or shrink the Vec,\nso the leaked allocation may include unused capacity that is not part\nof the returned slice.

\n

This function is mainly useful for data that lives for the remainder of\nthe program’s life. Dropping the returned reference will cause a memory\nleak.

\n
§Examples
\n

Simple usage:

\n\n
let x = vec![1, 2, 3];\nlet static_ref: &'static mut [usize] = x.leak();\nstatic_ref[0] += 1;\nassert_eq!(static_ref, &[2, 2, 3]);
\n
1.60.0 · source

pub fn spare_capacity_mut(&mut self) -> &mut [MaybeUninit<T>]

Returns the remaining spare capacity of the vector as a slice of\nMaybeUninit<T>.

\n

The returned slice can be used to fill the vector with data (e.g. by\nreading from a file) before marking the data as initialized using the\nset_len method.

\n
§Examples
\n
// Allocate vector big enough for 10 elements.\nlet mut v = Vec::with_capacity(10);\n\n// Fill in the first 3 elements.\nlet uninit = v.spare_capacity_mut();\nuninit[0].write(0);\nuninit[1].write(1);\nuninit[2].write(2);\n\n// Mark the first 3 elements of the vector as being initialized.\nunsafe {\n    v.set_len(3);\n}\n\nassert_eq!(&v, &[0, 1, 2]);
\n
source

pub fn split_at_spare_mut(&mut self) -> (&mut [T], &mut [MaybeUninit<T>])

🔬This is a nightly-only experimental API. (vec_split_at_spare)

Returns vector content as a slice of T, along with the remaining spare\ncapacity of the vector as a slice of MaybeUninit<T>.

\n

The returned spare capacity slice can be used to fill the vector with data\n(e.g. by reading from a file) before marking the data as initialized using\nthe set_len method.

\n

Note that this is a low-level API, which should be used with care for\noptimization purposes. If you need to append data to a Vec\nyou can use push, extend, extend_from_slice,\nextend_from_within, insert, append, resize or\nresize_with, depending on your exact needs.

\n
§Examples
\n
#![feature(vec_split_at_spare)]\n\nlet mut v = vec![1, 1, 2];\n\n// Reserve additional space big enough for 10 elements.\nv.reserve(10);\n\nlet (init, uninit) = v.split_at_spare_mut();\nlet sum = init.iter().copied().sum::<u32>();\n\n// Fill in the next 4 elements.\nuninit[0].write(sum);\nuninit[1].write(sum * 2);\nuninit[2].write(sum * 3);\nuninit[3].write(sum * 4);\n\n// Mark the 4 elements of the vector as being initialized.\nunsafe {\n    let len = v.len();\n    v.set_len(len + 4);\n}\n\nassert_eq!(&v, &[1, 1, 2, 4, 8, 12, 16]);
\n
",0,"algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<T, A> DerefPure for Vec<T, A>
where\n A: Allocator,

","DerefPure","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Eq for Vec<T, A>
where\n T: Eq,\n A: Allocator,

","Eq","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"]]],["ext",[["
§

impl<A> Arbitrary for Vec<A>
where\n A: Arbitrary,

§

type Parameters = (SizeRange, <A as Arbitrary>::Parameters)

The type of parameters that arbitrary_with accepts for configuration\nof the generated Strategy. Parameters must implement Default.
§

type Strategy = VecStrategy<<A as Arbitrary>::Strategy>

The type of Strategy used to generate values of type Self.
§

fn arbitrary_with(\n args: <Vec<A> as Arbitrary>::Parameters,\n) -> <Vec<A> as Arbitrary>::Strategy

Generates a Strategy for producing arbitrary values of type the\nimplementing type (Self). The strategy is passed the arguments given\nin args. Read more
§

fn arbitrary() -> Self::Strategy

Generates a Strategy for producing arbitrary values\nof type the implementing type (Self). Read more
","Arbitrary","ext::secondary::CompositeData"],["
§

impl<A> ArbitraryF1<A> for Vec<A>
where\n A: Debug,

§

type Parameters = SizeRange

The type of parameters that lift1_with accepts for\nconfiguration of the lifted and generated Strategy. Parameters\nmust implement Default.
§

fn lift1_with<S>(\n base: S,\n args: <Vec<A> as ArbitraryF1<A>>::Parameters,\n) -> BoxedStrategy<Vec<A>>
where\n S: Strategy<Value = A> + 'static,

Lifts a given Strategy to a new Strategy for the (presumably)\nbigger type. This is useful for lifting a Strategy for SomeType\nto a container such as Vec of SomeType. The composite strategy is\npassed the arguments given in args. Read more
§

fn lift1<AS>(base: AS) -> BoxedStrategy<Self>
where\n AS: Strategy<Value = A> + 'static,

Lifts a given Strategy to a new Strategy for the (presumably)\nbigger type. This is useful for lifting a Strategy for SomeType\nto a container such as Vec<SomeType>. Read more
","ArbitraryF1","ext::secondary::CompositeData"],["
1.5.0 · source§

impl<T, A> AsMut<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut [T]

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut<[T]>","ext::secondary::CompositeData"],["
1.5.0 · source§

impl<T, A> AsMut<Vec<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut Vec<T, A>

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> AsRef<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn as_ref(&self) -> &[T]

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef<[T]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> AsRef<Vec<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn as_ref(&self) -> &Vec<T, A>

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Borrow<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn borrow(&self) -> &[T]

Immutably borrows from an owned value. Read more
","Borrow<[T]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> BorrowMut<[T]> for Vec<T, A>
where\n A: Allocator,

source§

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

Mutably borrows from an owned value. Read more
","BorrowMut<[T]>","ext::secondary::CompositeData"],["
source§

impl<T> Clear for Vec<T>

source§

fn clear(&mut self)

Clear all data in self, retaining the allocated capacithy.
","Clear","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Clone for Vec<T, A>
where\n T: Clone,\n A: Allocator + Clone,

source§

fn clone_from(&mut self, source: &Vec<T, A>)

Overwrites the contents of self with a clone of the contents of source.

\n

This method is preferred over simply assigning source.clone() to self,\nas it avoids reallocation if possible. Additionally, if the element type\nT overrides clone_from(), this will reuse the resources of self’s\nelements as well.

\n
§Examples
\n
let x = vec![5, 6, 7];\nlet mut y = vec![8, 9, 10];\nlet yp: *const i32 = y.as_ptr();\n\ny.clone_from(&x);\n\n// The value is the same\nassert_eq!(x, y);\n\n// And no reallocation occurred\nassert_eq!(yp, y.as_ptr());
\n
source§

fn clone(&self) -> Vec<T, A>

Returns a copy of the value. Read more
","Clone","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Debug for Vec<T, A>
where\n T: Debug,\n A: Allocator,

source§

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

Formats the value using the given formatter. Read more
","Debug","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T> Default for Vec<T>

source§

fn default() -> Vec<T>

Creates an empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
","Default","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Deref for Vec<T, A>
where\n A: Allocator,

source§

type Target = [T]

The resulting type after dereferencing.
source§

fn deref(&self) -> &[T]

Dereferences the value.
","Deref","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> DerefMut for Vec<T, A>
where\n A: Allocator,

source§

fn deref_mut(&mut self) -> &mut [T]

Mutably dereferences the value.
","DerefMut","ext::secondary::CompositeData"],["
source§

impl<'de, T> Deserialize<'de> for Vec<T>
where\n T: Deserialize<'de>,

source§

fn deserialize<D>(\n deserializer: D,\n) -> Result<Vec<T>, <D as Deserializer<'de>>::Error>
where\n D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Drop for Vec<T, A>
where\n A: Allocator,

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
","Drop","ext::secondary::CompositeData"],["
1.2.0 · source§

impl<'a, T, A> Extend<&'a T> for Vec<T, A>
where\n T: Copy + 'a,\n A: Allocator,

Extend implementation that copies elements out of references before pushing them onto the Vec.

\n

This implementation is specialized for slice iterators, where it uses copy_from_slice to\nappend the entire slice at once.

\n
source§

fn extend<I>(&mut self, iter: I)
where\n I: IntoIterator<Item = &'a T>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, _: &'a T)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
","Extend<&'a T>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Extend<T> for Vec<T, A>
where\n A: Allocator,

source§

fn extend<I>(&mut self, iter: I)
where\n I: IntoIterator<Item = T>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: T)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
","Extend","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T> From<&[T]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &[T]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&[1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&[T]>","ext::secondary::CompositeData"],["
1.74.0 · source§

impl<T, const N: usize> From<&[T; N]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &[T; N]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&[1, 2, 3]), vec![1, 2, 3]);
\n
","From<&[T; N]>","ext::secondary::CompositeData"],["
1.19.0 · source§

impl<T> From<&mut [T]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &mut [T]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&mut [T]>","ext::secondary::CompositeData"],["
1.74.0 · source§

impl<T, const N: usize> From<&mut [T; N]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &mut [T; N]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3]), vec![1, 2, 3]);
\n
","From<&mut [T; N]>","ext::secondary::CompositeData"],["
1.44.0 · source§

impl<T, const N: usize> From<[T; N]> for Vec<T>

source§

fn from(s: [T; N]) -> Vec<T>

Allocates a Vec<T> and moves s’s items into it.

\n
§Examples
\n
assert_eq!(Vec::from([1, 2, 3]), vec![1, 2, 3]);
\n
","From<[T; N]>","ext::secondary::CompositeData"],["
1.5.0 · source§

impl<T, A> From<BinaryHeap<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(heap: BinaryHeap<T, A>) -> Vec<T, A>

Converts a BinaryHeap<T> into a Vec<T>.

\n

This conversion requires no data movement or allocation, and has\nconstant time complexity.

\n
","From>","ext::secondary::CompositeData"],["
1.18.0 · source§

impl<T, A> From<Box<[T], A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(s: Box<[T], A>) -> Vec<T, A>

Converts a boxed slice into a vector by transferring ownership of\nthe existing heap allocation.

\n
§Examples
\n
let b: Box<[i32]> = vec![1, 2, 3].into_boxed_slice();\nassert_eq!(Vec::from(b), vec![1, 2, 3]);
\n
","From>","ext::secondary::CompositeData"],["
1.14.0 · source§

impl<'a, T> From<Cow<'a, [T]>> for Vec<T>
where\n [T]: ToOwned<Owned = Vec<T>>,

source§

fn from(s: Cow<'a, [T]>) -> Vec<T>

Converts a clone-on-write slice into a vector.

\n

If s already owns a Vec<T>, it will be returned directly.\nIf s is borrowing a slice, a new Vec<T> will be allocated and\nfilled by cloning s’s items into it.

\n
§Examples
\n
let o: Cow<'_, [i32]> = Cow::Owned(vec![1, 2, 3]);\nlet b: Cow<'_, [i32]> = Cow::Borrowed(&[1, 2, 3]);\nassert_eq!(Vec::from(o), Vec::from(b));
\n
","From>","ext::secondary::CompositeData"],["
1.10.0 · source§

impl<T, A> From<VecDeque<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(other: VecDeque<T, A>) -> Vec<T, A>

Turn a VecDeque<T> into a Vec<T>.

\n

This never needs to re-allocate, but does need to do O(n) data movement if\nthe circular buffer doesn’t happen to be at the beginning of the allocation.

\n
§Examples
\n
use std::collections::VecDeque;\n\n// This one is *O*(1).\nlet deque: VecDeque<_> = (1..5).collect();\nlet ptr = deque.as_slices().0.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);\n\n// This one needs data rearranging.\nlet mut deque: VecDeque<_> = (1..5).collect();\ndeque.push_front(9);\ndeque.push_front(8);\nlet ptr = deque.as_slices().1.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [8, 9, 1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);
\n
","From>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T> FromIterator<T> for Vec<T>

Collects an iterator into a Vec, commonly called via Iterator::collect()

\n

§Allocation behavior

\n

In general Vec does not guarantee any particular growth or allocation strategy.\nThat also applies to this trait impl.

\n

Note: This section covers implementation details and is therefore exempt from\nstability guarantees.

\n

Vec may use any or none of the following strategies,\ndepending on the supplied iterator:

\n
    \n
  • preallocate based on Iterator::size_hint()\n
      \n
    • and panic if the number of items is outside the provided lower/upper bounds
    • \n
    \n
  • \n
  • use an amortized growth strategy similar to pushing one item at a time
  • \n
  • perform the iteration in-place on the original allocation backing the iterator
  • \n
\n

The last case warrants some attention. It is an optimization that in many cases reduces peak memory\nconsumption and improves cache locality. But when big, short-lived allocations are created,\nonly a small fraction of their items get collected, no further use is made of the spare capacity\nand the resulting Vec is moved into a longer-lived structure, then this can lead to the large\nallocations having their lifetimes unnecessarily extended which can result in increased memory\nfootprint.

\n

In cases where this is an issue, the excess capacity can be discarded with Vec::shrink_to(),\nVec::shrink_to_fit() or by collecting into Box<[T]> instead, which additionally reduces\nthe size of the long-lived struct.

\n\n
static LONG_LIVED: Mutex<Vec<Vec<u16>>> = Mutex::new(Vec::new());\n\nfor i in 0..10 {\n    let big_temporary: Vec<u16> = (0..1024).collect();\n    // discard most items\n    let mut result: Vec<_> = big_temporary.into_iter().filter(|i| i % 100 == 0).collect();\n    // without this a lot of unused capacity might be moved into the global\n    result.shrink_to_fit();\n    LONG_LIVED.lock().unwrap().push(result);\n}
\n
source§

fn from_iter<I>(iter: I) -> Vec<T>
where\n I: IntoIterator<Item = T>,

Creates a value from an iterator. Read more
","FromIterator","ext::secondary::CompositeData"],["
§

impl<T> FromParallelIterator<T> for Vec<T>
where\n T: Send,

Collects items from a parallel iterator into a vector.

\n
§

fn from_par_iter<I>(par_iter: I) -> Vec<T>
where\n I: IntoParallelIterator<Item = T>,

Creates an instance of the collection from the parallel iterator par_iter. Read more
","FromParallelIterator","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Hash for Vec<T, A>
where\n T: Hash,\n A: Allocator,

The hash of a vector is the same as that of the corresponding slice,\nas required by the core::borrow::Borrow implementation.

\n\n
use std::hash::BuildHasher;\n\nlet b = std::hash::RandomState::new();\nlet v: Vec<u8> = vec![0xa8, 0x3c, 0x09];\nlet s: &[u8] = &[0xa8, 0x3c, 0x09];\nassert_eq!(b.hash_one(v), b.hash_one(s));
\n
source§

fn hash<H>(&self, state: &mut H)
where\n H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, I, A> Index<I> for Vec<T, A>
where\n I: SliceIndex<[T]>,\n A: Allocator,

source§

type Output = <I as SliceIndex<[T]>>::Output

The returned type after indexing.
source§

fn index(&self, index: I) -> &<Vec<T, A> as Index<I>>::Output

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
§

impl<T> Index<PatternID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: PatternID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
§

impl<T> Index<SmallIndex> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: SmallIndex) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
§

impl<T> Index<StateID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: StateID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, I, A> IndexMut<I> for Vec<T, A>
where\n I: SliceIndex<[T]>,\n A: Allocator,

source§

fn index_mut(&mut self, index: I) -> &mut <Vec<T, A> as Index<I>>::Output

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
§

impl<T> IndexMut<PatternID> for Vec<T>

§

fn index_mut(&mut self, index: PatternID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
§

impl<T> IndexMut<SmallIndex> for Vec<T>

§

fn index_mut(&mut self, index: SmallIndex) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
§

impl<T> IndexMut<StateID> for Vec<T>

§

fn index_mut(&mut self, index: StateID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
source§

impl<'de, T, E> IntoDeserializer<'de, E> for Vec<T>
where\n T: IntoDeserializer<'de, E>,\n E: Error,

source§

type Deserializer = SeqDeserializer<<Vec<T> as IntoIterator>::IntoIter, E>

The type of the deserializer being converted into.
source§

fn into_deserializer(self) -> <Vec<T> as IntoDeserializer<'de, E>>::Deserializer

Convert this value into a deserializer.
","IntoDeserializer<'de, E>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> IntoIterator for Vec<T, A>
where\n A: Allocator,

source§

fn into_iter(self) -> <Vec<T, A> as IntoIterator>::IntoIter

Creates a consuming iterator, that is, one that moves each value out of\nthe vector (from start to end). The vector cannot be used after calling\nthis.

\n
§Examples
\n
let v = vec![\"a\".to_string(), \"b\".to_string()];\nlet mut v_iter = v.into_iter();\n\nlet first_element: Option<String> = v_iter.next();\n\nassert_eq!(first_element, Some(\"a\".to_string()));\nassert_eq!(v_iter.next(), Some(\"b\".to_string()));\nassert_eq!(v_iter.next(), None);
\n
source§

type Item = T

The type of the elements being iterated over.
source§

type IntoIter = IntoIter<T, A>

Which kind of iterator are we turning this into?
","IntoIterator","ext::secondary::CompositeData"],["
§

impl<T> IntoParallelIterator for Vec<T>
where\n T: Send,

§

type Item = T

The type of item that the parallel iterator will produce.
§

type Iter = IntoIter<T>

The parallel iterator type that will be created.
§

fn into_par_iter(self) -> <Vec<T> as IntoParallelIterator>::Iter

Converts self into a parallel iterator. Read more
","IntoParallelIterator","ext::secondary::CompositeData"],["
§

impl<S, L> Layer<S> for Vec<L>
where\n L: Layer<S>,\n S: Subscriber,

§

fn on_layer(&mut self, subscriber: &mut S)

Performs late initialization when attaching a Layer to a\n[Subscriber]. Read more
§

fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest

Registers a new callsite with this layer, returning whether or not\nthe layer is interested in being notified about the callsite, similarly\nto Subscriber::register_callsite. Read more
§

fn enabled(&self, metadata: &Metadata<'_>, ctx: Context<'_, S>) -> bool

Returns true if this layer is interested in a span or event with the\ngiven metadata in the current [Context], similarly to\nSubscriber::enabled. Read more
§

fn event_enabled(&self, event: &Event<'_>, ctx: Context<'_, S>) -> bool

Called before on_event, to determine if on_event should be called. Read more
§

fn on_new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>)

Notifies this layer that a new span was constructed with the given\nAttributes and Id.
§

fn on_record(&self, span: &Id, values: &Record<'_>, ctx: Context<'_, S>)

Notifies this layer that a span with the given Id recorded the given\nvalues.
§

fn on_follows_from(&self, span: &Id, follows: &Id, ctx: Context<'_, S>)

Notifies this layer that a span with the ID span recorded that it\nfollows from the span with the ID follows.
§

fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>)

Notifies this layer that an event has occurred.
§

fn on_enter(&self, id: &Id, ctx: Context<'_, S>)

Notifies this layer that a span with the given ID was entered.
§

fn on_exit(&self, id: &Id, ctx: Context<'_, S>)

Notifies this layer that the span with the given ID was exited.
§

fn on_close(&self, id: Id, ctx: Context<'_, S>)

Notifies this layer that the span with the given ID has been closed.
§

fn on_register_dispatch(&self, subscriber: &Dispatch)

Performs late initialization when installing this layer as a\nSubscriber. Read more
§

fn on_id_change(&self, _old: &Id, _new: &Id, _ctx: Context<'_, S>)

Notifies this layer that a span ID has been cloned, and that the\nsubscriber returned a different ID.
§

fn and_then<L>(self, layer: L) -> Layered<L, Self, S>
where\n L: Layer<S>,\n Self: Sized,

Composes this layer around the given Layer, returning a Layered\nstruct implementing Layer. Read more
§

fn with_subscriber(self, inner: S) -> Layered<Self, S>
where\n Self: Sized,

Composes this Layer with the given Subscriber, returning a\nLayered struct that implements Subscriber. Read more
§

fn with_filter<F>(self, filter: F) -> Filtered<Self, F, S>
where\n Self: Sized,\n F: Filter<S>,

Combines self with a [Filter], returning a Filtered layer. Read more
","Layer","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Ord for Vec<T, A>
where\n T: Ord,\n A: Allocator,

Implements ordering of vectors, lexicographically.

\n
source§

fn cmp(&self, other: &Vec<T, A>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","ext::secondary::CompositeData"],["
§

impl<'a, T> ParallelExtend<&'a T> for Vec<T>
where\n T: 'a + Copy + Send + Sync,

Extends a vector with copied items from a parallel iterator.

\n
§

fn par_extend<I>(&mut self, par_iter: I)
where\n I: IntoParallelIterator<Item = &'a T>,

Extends an instance of the collection with the elements drawn\nfrom the parallel iterator par_iter. Read more
","ParallelExtend<&'a T>","ext::secondary::CompositeData"],["
§

impl<T> ParallelExtend<T> for Vec<T>
where\n T: Send,

Extends a vector with items from a parallel iterator.

\n
§

fn par_extend<I>(&mut self, par_iter: I)
where\n I: IntoParallelIterator<Item = T>,

Extends an instance of the collection with the elements drawn\nfrom the parallel iterator par_iter. Read more
","ParallelExtend","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&[U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U]) -> bool

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

fn ne(&self, other: &&[U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&[U]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<&[U; N]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U; N]) -> bool

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

fn ne(&self, other: &&[U; N]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&[U; N]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&mut [U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&mut [U]) -> bool

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

fn ne(&self, other: &&mut [U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&mut [U]>","ext::secondary::CompositeData"],["
1.48.0 · source§

impl<T, U, A> PartialEq<[U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U]) -> bool

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

fn ne(&self, other: &[U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<[U]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<[U; N]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U; N]) -> bool

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

fn ne(&self, other: &[U; N]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<[U; N]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A1, A2> PartialEq<Vec<U, A2>> for Vec<T, A1>
where\n A1: Allocator,\n A2: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &Vec<U, A2>) -> bool

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

fn ne(&self, other: &Vec<U, A2>) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A1, A2> PartialOrd<Vec<T, A2>> for Vec<T, A1>
where\n T: PartialOrd,\n A1: Allocator,\n A2: Allocator,

Implements comparison of vectors, lexicographically.

\n
source§

fn partial_cmp(&self, other: &Vec<T, A2>) -> Option<Ordering>

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

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

Tests less than or equal to (for self and other) and is used by the\n<= operator. Read more
1.0.0 · source§

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

Tests greater than (for self and other) and is used by the >\noperator. Read more
1.0.0 · source§

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

Tests greater than or equal to (for self and other) and is used by\nthe >= operator. Read more
","PartialOrd>","ext::secondary::CompositeData"],["
source§

impl<T> Serialize for Vec<T>
where\n T: Serialize,

source§

fn serialize<S>(\n &self,\n serializer: S,\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where\n S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","ext::secondary::CompositeData"],["
§

impl<T> Shuffleable for Vec<T>

§

fn shuffle_len(&self) -> usize

Return the length of this collection.
§

fn shuffle_swap(&mut self, a: usize, b: usize)

Swap the elements at the given indices.
","Shuffleable","ext::secondary::CompositeData"],["
§

impl<T> Strategy for Vec<T>
where\n T: Strategy,

§

type Tree = VecValueTree<<T as Strategy>::Tree>

The value tree generated by this Strategy.
§

type Value = Vec<<T as Strategy>::Value>

The type of value used by functions under test generated by this Strategy. Read more
§

fn new_tree(\n &self,\n runner: &mut TestRunner,\n) -> Result<<Vec<T> as Strategy>::Tree, Reason>

Generate a new value tree from the given runner. Read more
§

fn prop_map<O, F>(self, fun: F) -> Map<Self, F>
where\n O: Debug,\n F: Fn(Self::Value) -> O,\n Self: Sized,

Returns a strategy which produces values transformed by the function\nfun. Read more
§

fn prop_map_into<O>(self) -> MapInto<Self, O>
where\n O: Debug,\n Self: Sized,\n Self::Value: Into<O>,

Returns a strategy which produces values of type O by transforming\nSelf with Into<O>. Read more
§

fn prop_perturb<O, F>(self, fun: F) -> Perturb<Self, F>
where\n O: Debug,\n F: Fn(Self::Value, TestRng) -> O,\n Self: Sized,

Returns a strategy which produces values transformed by the function\nfun, which is additionally given a random number generator. Read more
§

fn prop_flat_map<S, F>(self, fun: F) -> Flatten<Map<Self, F>>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Maps values produced by this strategy into new strategies and picks\nvalues from those strategies. Read more
§

fn prop_ind_flat_map<S, F>(self, fun: F) -> IndFlatten<Map<Self, F>>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Maps values produced by this strategy into new strategies and picks\nvalues from those strategies while considering the new strategies to be\nindependent. Read more
§

fn prop_ind_flat_map2<S, F>(self, fun: F) -> IndFlattenMap<Self, F>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Similar to prop_ind_flat_map(), but produces 2-tuples with the input\ngenerated from self in slot 0 and the derived strategy in slot 1. Read more
§

fn prop_filter<R, F>(self, whence: R, fun: F) -> Filter<Self, F>
where\n R: Into<Reason>,\n F: Fn(&Self::Value) -> bool,\n Self: Sized,

Returns a strategy which only produces values accepted by fun. Read more
§

fn prop_filter_map<F, O>(\n self,\n whence: impl Into<Reason>,\n fun: F,\n) -> FilterMap<Self, F>
where\n F: Fn(Self::Value) -> Option<O>,\n O: Debug,\n Self: Sized,

Returns a strategy which only produces transformed values where fun\nreturns Some(value) and rejects those where fun returns None. Read more
§

fn prop_union(self, other: Self) -> Union<Self>
where\n Self: Sized,

Returns a strategy which picks uniformly from self and other. Read more
§

fn prop_recursive<R, F>(\n self,\n depth: u32,\n desired_size: u32,\n expected_branch_size: u32,\n recurse: F,\n) -> Recursive<Self::Value, F>
where\n R: Strategy<Value = Self::Value> + 'static,\n F: Fn(BoxedStrategy<Self::Value>) -> R,\n Self: Sized + 'static,

Generate a recursive structure with self items as leaves. Read more
§

fn boxed(self) -> BoxedStrategy<Self::Value>
where\n Self: Sized + 'static,

Erases the type of this Strategy so it can be passed around as a\nsimple trait object. Read more
§

fn no_shrink(self) -> NoShrink<Self>
where\n Self: Sized,

Wraps this strategy to prevent values from being subject to shrinking. Read more
","Strategy","ext::secondary::CompositeData"],["
source§

impl<T> Vec<T>

1.0.0 (const: 1.39.0) · source

pub const fn new() -> Vec<T>

Constructs a new, empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
§Examples
\n
let mut vec: Vec<i32> = Vec::new();
\n
1.0.0 · source

pub fn with_capacity(capacity: usize) -> Vec<T>

Constructs a new, empty Vec<T> with at least the specified capacity.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<()>::with_capacity(10);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
source

pub fn try_with_capacity(capacity: usize) -> Result<Vec<T>, TryReserveError>

🔬This is a nightly-only experimental API. (try_with_capacity)

Constructs a new, empty Vec<T> with at least the specified capacity.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n
§Errors
\n

Returns an error if the capacity exceeds isize::MAX bytes,\nor if the allocator reports allocation failure.

\n
1.0.0 · source

pub unsafe fn from_raw_parts(\n ptr: *mut T,\n length: usize,\n capacity: usize,\n) -> Vec<T>

Creates a Vec<T> directly from a pointer, a length, and a capacity.

\n
§Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must have been allocated using the global allocator, such as via\nthe alloc::alloc function.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to be the capacity that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is normally not safe\nto build a Vec<u8> from a pointer to a C char array with length\nsize_t, doing so is only safe if the array was initially allocated by\na Vec or String.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1. To avoid\nthese issues, it is often preferable to do casting/transmuting using\nslice::from_raw_parts instead.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
§Examples
\n
use std::ptr;\nuse std::mem;\n\nlet v = vec![1, 2, 3];\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts(p, len, cap);\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
use std::alloc::{alloc, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect(\"overflow cannot happen\");\n\n    let vec = unsafe {\n        let mem = alloc(layout).cast::<u32>();\n        if mem.is_null() {\n            return;\n        }\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts(mem, 1, 16)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n T: Clone,\n A: Allocator,

1.5.0 · source

pub fn resize(&mut self, new_len: usize, value: T)

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with value.\nIf new_len is less than len, the Vec is simply truncated.

\n

This method requires T to implement Clone,\nin order to be able to clone the passed value.\nIf you need more flexibility (or want to rely on Default instead of\nClone), use Vec::resize_with.\nIf you only need to resize to a smaller size, use Vec::truncate.

\n
§Examples
\n
let mut vec = vec![\"hello\"];\nvec.resize(3, \"world\");\nassert_eq!(vec, [\"hello\", \"world\", \"world\"]);\n\nlet mut vec = vec![1, 2, 3, 4];\nvec.resize(2, 0);\nassert_eq!(vec, [1, 2]);
\n
1.6.0 · source

pub fn extend_from_slice(&mut self, other: &[T])

Clones and appends all elements in a slice to the Vec.

\n

Iterates over the slice other, clones each element, and then appends\nit to this Vec. The other slice is traversed in-order.

\n

Note that this function is same as extend except that it is\nspecialized to work with slices instead. If and when Rust gets\nspecialization this function will likely be deprecated (but still\navailable).

\n
§Examples
\n
let mut vec = vec![1];\nvec.extend_from_slice(&[2, 3, 4]);\nassert_eq!(vec, [1, 2, 3, 4]);
\n
1.53.0 · source

pub fn extend_from_within<R>(&mut self, src: R)
where\n R: RangeBounds<usize>,

Copies elements from src range to the end of the vector.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Examples
\n
let mut vec = vec![0, 1, 2, 3, 4];\n\nvec.extend_from_within(2..);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4]);\n\nvec.extend_from_within(..2);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1]);\n\nvec.extend_from_within(4..8);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1, 4, 2, 3, 4]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n T: PartialEq,\n A: Allocator,

1.0.0 · source

pub fn dedup(&mut self)

Removes consecutive repeated elements in the vector according to the\nPartialEq trait implementation.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![1, 2, 2, 3, 2];\n\nvec.dedup();\n\nassert_eq!(vec, [1, 2, 3, 2]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n A: Allocator,

1.21.0 · source

pub fn splice<R, I>(\n &mut self,\n range: R,\n replace_with: I,\n) -> Splice<'_, <I as IntoIterator>::IntoIter, A>
where\n R: RangeBounds<usize>,\n I: IntoIterator<Item = T>,

Creates a splicing iterator that replaces the specified range in the vector\nwith the given replace_with iterator and yields the removed items.\nreplace_with does not need to be the same length as range.

\n

range is removed even if the iterator is not consumed until the end.

\n

It is unspecified how many elements are removed from the vector\nif the Splice value is leaked.

\n

The input iterator replace_with is only consumed when the Splice value is dropped.

\n

This is optimal if:

\n
    \n
  • The tail (elements in the vector after range) is empty,
  • \n
  • or replace_with yields fewer or equal elements than range’s length
  • \n
  • or the lower bound of its size_hint() is exact.
  • \n
\n

Otherwise, a temporary vector is allocated and the tail is moved twice.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Examples
\n
let mut v = vec![1, 2, 3, 4];\nlet new = [7, 8, 9];\nlet u: Vec<_> = v.splice(1..3, new).collect();\nassert_eq!(v, &[1, 7, 8, 9, 4]);\nassert_eq!(u, &[2, 3]);
\n
source

pub fn extract_if<F>(&mut self, filter: F) -> ExtractIf<'_, T, F, A>
where\n F: FnMut(&mut T) -> bool,

🔬This is a nightly-only experimental API. (extract_if)

Creates an iterator which uses a closure to determine if an element should be removed.

\n

If the closure returns true, then the element is removed and yielded.\nIf the closure returns false, the element will remain in the vector and will not be yielded\nby the iterator.

\n

If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

\n

Using this method is equivalent to the following code:

\n\n
let mut i = 0;\nwhile i < vec.len() {\n    if some_predicate(&mut vec[i]) {\n        let val = vec.remove(i);\n        // your code here\n    } else {\n        i += 1;\n    }\n}\n
\n

But extract_if is easier to use. extract_if is also more efficient,\nbecause it can backshift the elements of the array in bulk.

\n

Note that extract_if also lets you mutate every element in the filter closure,\nregardless of whether you choose to keep or remove it.

\n
§Examples
\n

Splitting an array into evens and odds, reusing the original allocation:

\n\n
#![feature(extract_if)]\nlet mut numbers = vec![1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15];\n\nlet evens = numbers.extract_if(|x| *x % 2 == 0).collect::<Vec<_>>();\nlet odds = numbers;\n\nassert_eq!(evens, vec![2, 4, 6, 8, 14]);\nassert_eq!(odds, vec![1, 3, 5, 9, 11, 13, 15]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n A: Allocator,

source

pub const fn new_in(alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A>.

\n

The vector will not allocate until elements are pushed onto it.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec: Vec<i32, _> = Vec::new_in(System);
\n
source

pub fn with_capacity_in(capacity: usize, alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A> with at least the specified capacity\nwith the provided allocator.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T, A> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec = Vec::with_capacity_in(10, System);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<(), System>::with_capacity_in(10, System);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
source

pub fn try_with_capacity_in(\n capacity: usize,\n alloc: A,\n) -> Result<Vec<T, A>, TryReserveError>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A> with at least the specified capacity\nwith the provided allocator.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n
§Errors
\n

Returns an error if the capacity exceeds isize::MAX bytes,\nor if the allocator reports allocation failure.

\n
source

pub unsafe fn from_raw_parts_in(\n ptr: *mut T,\n length: usize,\n capacity: usize,\n alloc: A,\n) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Creates a Vec<T, A> directly from a pointer, a length, a capacity,\nand an allocator.

\n
§Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must be currently allocated via the given allocator alloc.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to fit the layout size that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T, A>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is not safe\nto build a Vec<u8> from a pointer to a C char array with length size_t.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nuse std::ptr;\nuse std::mem;\n\nlet mut v = Vec::with_capacity_in(3, System);\nv.push(1);\nv.push(2);\nv.push(3);\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\nlet alloc = v.allocator();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts_in(p, len, cap, alloc.clone());\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
#![feature(allocator_api)]\n\nuse std::alloc::{AllocError, Allocator, Global, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect(\"overflow cannot happen\");\n\n    let vec = unsafe {\n        let mem = match Global.allocate(layout) {\n            Ok(mem) => mem.cast::<u32>().as_ptr(),\n            Err(AllocError) => return,\n        };\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts_in(mem, 1, 16, Global)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
source

pub fn into_raw_parts(self) -> (*mut T, usize, usize)

🔬This is a nightly-only experimental API. (vec_into_raw_parts)

Decomposes a Vec<T> into its raw components: (pointer, length, capacity).

\n

Returns the raw pointer to the underlying data, the length of\nthe vector (in elements), and the allocated capacity of the\ndata (in elements). These are the same arguments in the same\norder as the arguments to from_raw_parts.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts function, allowing\nthe destructor to perform the cleanup.

\n
§Examples
\n
#![feature(vec_into_raw_parts)]\nlet v: Vec<i32> = vec![-1, 0, 1];\n\nlet (ptr, len, cap) = v.into_raw_parts();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts(ptr, len, cap)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
source

pub fn into_raw_parts_with_alloc(self) -> (*mut T, usize, usize, A)

🔬This is a nightly-only experimental API. (allocator_api)

Decomposes a Vec<T> into its raw components: (pointer, length, capacity, allocator).

\n

Returns the raw pointer to the underlying data, the length of the vector (in elements),\nthe allocated capacity of the data (in elements), and the allocator. These are the same\narguments in the same order as the arguments to from_raw_parts_in.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts_in function, allowing\nthe destructor to perform the cleanup.

\n
§Examples
\n
#![feature(allocator_api, vec_into_raw_parts)]\n\nuse std::alloc::System;\n\nlet mut v: Vec<i32, System> = Vec::new_in(System);\nv.push(-1);\nv.push(0);\nv.push(1);\n\nlet (ptr, len, cap, alloc) = v.into_raw_parts_with_alloc();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts_in(ptr, len, cap, alloc)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
1.0.0 · source

pub fn capacity(&self) -> usize

Returns the total number of elements the vector can hold without\nreallocating.

\n
§Examples
\n
let mut vec: Vec<i32> = Vec::with_capacity(10);\nvec.push(42);\nassert!(vec.capacity() >= 10);
\n
1.0.0 · source

pub fn reserve(&mut self, additional: usize)

Reserves capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to\nspeculatively avoid frequent reallocations. After calling reserve,\ncapacity will be greater than or equal to self.len() + additional.\nDoes nothing if capacity is already sufficient.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1];\nvec.reserve(10);\nassert!(vec.capacity() >= 11);
\n
1.0.0 · source

pub fn reserve_exact(&mut self, additional: usize)

Reserves the minimum capacity for at least additional more elements to\nbe inserted in the given Vec<T>. Unlike reserve, this will not\ndeliberately over-allocate to speculatively avoid frequent allocations.\nAfter calling reserve_exact, capacity will be greater than or equal to\nself.len() + additional. Does nothing if the capacity is already\nsufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer reserve if future insertions are expected.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1];\nvec.reserve_exact(10);\nassert!(vec.capacity() >= 11);
\n
1.57.0 · source

pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>

Tries to reserve capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to speculatively avoid\nfrequent reallocations. After calling try_reserve, capacity will be\ngreater than or equal to self.len() + additional if it returns\nOk(()). Does nothing if capacity is already sufficient. This method\npreserves the contents even if an error occurs.

\n
§Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
§Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.57.0 · source

pub fn try_reserve_exact(\n &mut self,\n additional: usize,\n) -> Result<(), TryReserveError>

Tries to reserve the minimum capacity for at least additional\nelements to be inserted in the given Vec<T>. Unlike try_reserve,\nthis will not deliberately over-allocate to speculatively avoid frequent\nallocations. After calling try_reserve_exact, capacity will be greater\nthan or equal to self.len() + additional if it returns Ok(()).\nDoes nothing if the capacity is already sufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer try_reserve if future insertions are expected.

\n
§Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
§Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve_exact(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.0.0 · source

pub fn shrink_to_fit(&mut self)

Shrinks the capacity of the vector as much as possible.

\n

The behavior of this method depends on the allocator, which may either shrink the vector\nin-place or reallocate. The resulting vector might still have some excess capacity, just as\nis the case for with_capacity. See Allocator::shrink for more details.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to_fit();\nassert!(vec.capacity() >= 3);
\n
1.56.0 · source

pub fn shrink_to(&mut self, min_capacity: usize)

Shrinks the capacity of the vector with a lower bound.

\n

The capacity will remain at least as large as both the length\nand the supplied value.

\n

If the current capacity is less than the lower limit, this is a no-op.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to(4);\nassert!(vec.capacity() >= 4);\nvec.shrink_to(0);\nassert!(vec.capacity() >= 3);
\n
1.0.0 · source

pub fn into_boxed_slice(self) -> Box<[T], A>

Converts the vector into Box<[T]>.

\n

Before doing the conversion, this method discards excess capacity like shrink_to_fit.

\n
§Examples
\n
let v = vec![1, 2, 3];\n\nlet slice = v.into_boxed_slice();
\n

Any excess capacity is removed:

\n\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\n\nassert!(vec.capacity() >= 10);\nlet slice = vec.into_boxed_slice();\nassert_eq!(slice.into_vec().capacity(), 3);
\n
1.0.0 · source

pub fn truncate(&mut self, len: usize)

Shortens the vector, keeping the first len elements and dropping\nthe rest.

\n

If len is greater or equal to the vector’s current length, this has\nno effect.

\n

The drain method can emulate truncate, but causes the excess\nelements to be returned instead of dropped.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
§Examples
\n

Truncating a five element vector to two elements:

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nvec.truncate(2);\nassert_eq!(vec, [1, 2]);
\n

No truncation occurs when len is greater than the vector’s current\nlength:

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(8);\nassert_eq!(vec, [1, 2, 3]);
\n

Truncating when len == 0 is equivalent to calling the clear\nmethod.

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(0);\nassert_eq!(vec, []);
\n
1.7.0 · source

pub fn as_slice(&self) -> &[T]

Extracts a slice containing the entire vector.

\n

Equivalent to &s[..].

\n
§Examples
\n
use std::io::{self, Write};\nlet buffer = vec![1, 2, 3, 5, 8];\nio::sink().write(buffer.as_slice()).unwrap();
\n
1.7.0 · source

pub fn as_mut_slice(&mut self) -> &mut [T]

Extracts a mutable slice of the entire vector.

\n

Equivalent to &mut s[..].

\n
§Examples
\n
use std::io::{self, Read};\nlet mut buffer = vec![0; 3];\nio::repeat(0b101).read_exact(buffer.as_mut_slice()).unwrap();
\n
1.37.0 · source

pub fn as_ptr(&self) -> *const T

Returns a raw pointer to the vector’s buffer, or a dangling raw pointer\nvalid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up dangling.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

The caller must also ensure that the memory the pointer (non-transitively) points to\nis never written to (except inside an UnsafeCell) using this pointer or any pointer\nderived from it. If you need to mutate the contents of the slice, use as_mut_ptr.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize mutable references to the slice,\nor mutable references to specific elements you are planning on accessing through this pointer,\nas well as writing to those elements, may still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
§Examples
\n
let x = vec![1, 2, 4];\nlet x_ptr = x.as_ptr();\n\nunsafe {\n    for i in 0..x.len() {\n        assert_eq!(*x_ptr.add(i), 1 << i);\n    }\n}
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0, 1, 2];\n    let ptr1 = v.as_ptr();\n    let _ = ptr1.read();\n    let ptr2 = v.as_mut_ptr().offset(2);\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`\n    // because it mutated a different element:\n    let _ = ptr1.read();\n}
\n
1.37.0 · source

pub fn as_mut_ptr(&mut self) -> *mut T

Returns a raw mutable pointer to the vector’s buffer, or a dangling\nraw pointer valid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up dangling.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize references to the slice,\nor references to specific elements you are planning on accessing through this pointer,\nmay still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
§Examples
\n
// Allocate vector big enough for 4 elements.\nlet size = 4;\nlet mut x: Vec<i32> = Vec::with_capacity(size);\nlet x_ptr = x.as_mut_ptr();\n\n// Initialize elements via raw pointer writes, then set length.\nunsafe {\n    for i in 0..size {\n        *x_ptr.add(i) = i as i32;\n    }\n    x.set_len(size);\n}\nassert_eq!(&*x, &[0, 1, 2, 3]);
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0];\n    let ptr1 = v.as_mut_ptr();\n    ptr1.write(1);\n    let ptr2 = v.as_mut_ptr();\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`:\n    ptr1.write(3);\n}
\n
source

pub fn allocator(&self) -> &A

🔬This is a nightly-only experimental API. (allocator_api)

Returns a reference to the underlying allocator.

\n
1.0.0 · source

pub unsafe fn set_len(&mut self, new_len: usize)

Forces the length of the vector to new_len.

\n

This is a low-level operation that maintains none of the normal\ninvariants of the type. Normally changing the length of a vector\nis done using one of the safe operations instead, such as\ntruncate, resize, extend, or clear.

\n
§Safety
\n
    \n
  • new_len must be less than or equal to capacity().
  • \n
  • The elements at old_len..new_len must be initialized.
  • \n
\n
§Examples
\n

This method can be useful for situations in which the vector\nis serving as a buffer for other code, particularly over FFI:

\n\n
pub fn get_dictionary(&self) -> Option<Vec<u8>> {\n    // Per the FFI method's docs, \"32768 bytes is always enough\".\n    let mut dict = Vec::with_capacity(32_768);\n    let mut dict_length = 0;\n    // SAFETY: When `deflateGetDictionary` returns `Z_OK`, it holds that:\n    // 1. `dict_length` elements were initialized.\n    // 2. `dict_length` <= the capacity (32_768)\n    // which makes `set_len` safe to call.\n    unsafe {\n        // Make the FFI call...\n        let r = deflateGetDictionary(self.strm, dict.as_mut_ptr(), &mut dict_length);\n        if r == Z_OK {\n            // ...and update the length to what was initialized.\n            dict.set_len(dict_length);\n            Some(dict)\n        } else {\n            None\n        }\n    }\n}
\n

While the following example is sound, there is a memory leak since\nthe inner vectors were not freed prior to the set_len call:

\n\n
let mut vec = vec![vec![1, 0, 0],\n                   vec![0, 1, 0],\n                   vec![0, 0, 1]];\n// SAFETY:\n// 1. `old_len..0` is empty so no elements need to be initialized.\n// 2. `0 <= capacity` always holds whatever `capacity` is.\nunsafe {\n    vec.set_len(0);\n}
\n

Normally, here, one would use clear instead to correctly drop\nthe contents and thus not leak memory.

\n
1.0.0 · source

pub fn swap_remove(&mut self, index: usize) -> T

Removes an element from the vector and returns it.

\n

The removed element is replaced by the last element of the vector.

\n

This does not preserve ordering of the remaining elements, but is O(1).\nIf you need to preserve the element order, use remove instead.

\n
§Panics
\n

Panics if index is out of bounds.

\n
§Examples
\n
let mut v = vec![\"foo\", \"bar\", \"baz\", \"qux\"];\n\nassert_eq!(v.swap_remove(1), \"bar\");\nassert_eq!(v, [\"foo\", \"qux\", \"baz\"]);\n\nassert_eq!(v.swap_remove(0), \"foo\");\nassert_eq!(v, [\"baz\", \"qux\"]);
\n
1.0.0 · source

pub fn insert(&mut self, index: usize, element: T)

Inserts an element at position index within the vector, shifting all\nelements after it to the right.

\n
§Panics
\n

Panics if index > len.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nvec.insert(1, 4);\nassert_eq!(vec, [1, 4, 2, 3]);\nvec.insert(4, 5);\nassert_eq!(vec, [1, 4, 2, 3, 5]);
\n
§Time complexity
\n

Takes O(Vec::len) time. All items after the insertion index must be\nshifted to the right. In the worst case, all elements are shifted when\nthe insertion index is 0.

\n
1.0.0 · source

pub fn remove(&mut self, index: usize) -> T

Removes and returns the element at position index within the vector,\nshifting all elements after it to the left.

\n

Note: Because this shifts over the remaining elements, it has a\nworst-case performance of O(n). If you don’t need the order of elements\nto be preserved, use swap_remove instead. If you’d like to remove\nelements from the beginning of the Vec, consider using\nVecDeque::pop_front instead.

\n
§Panics
\n

Panics if index is out of bounds.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\nassert_eq!(v.remove(1), 2);\nassert_eq!(v, [1, 3]);
\n
1.0.0 · source

pub fn retain<F>(&mut self, f: F)
where\n F: FnMut(&T) -> bool,

Retains only the elements specified by the predicate.

\n

In other words, remove all elements e for which f(&e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
§Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain(|&x| x % 2 == 0);\nassert_eq!(vec, [2, 4]);
\n

Because the elements are visited exactly once in the original order,\nexternal state may be used to decide which elements to keep.

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nlet keep = [false, true, true, false, true];\nlet mut iter = keep.iter();\nvec.retain(|_| *iter.next().unwrap());\nassert_eq!(vec, [2, 3, 5]);
\n
1.61.0 · source

pub fn retain_mut<F>(&mut self, f: F)
where\n F: FnMut(&mut T) -> bool,

Retains only the elements specified by the predicate, passing a mutable reference to it.

\n

In other words, remove all elements e such that f(&mut e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
§Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain_mut(|x| if *x <= 3 {\n    *x += 1;\n    true\n} else {\n    false\n});\nassert_eq!(vec, [2, 3, 4]);
\n
1.16.0 · source

pub fn dedup_by_key<F, K>(&mut self, key: F)
where\n F: FnMut(&mut T) -> K,\n K: PartialEq,

Removes all but the first of consecutive elements in the vector that resolve to the same\nkey.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![10, 20, 21, 30, 20];\n\nvec.dedup_by_key(|i| *i / 10);\n\nassert_eq!(vec, [10, 20, 30, 20]);
\n
1.16.0 · source

pub fn dedup_by<F>(&mut self, same_bucket: F)
where\n F: FnMut(&mut T, &mut T) -> bool,

Removes all but the first of consecutive elements in the vector satisfying a given equality\nrelation.

\n

The same_bucket function is passed references to two elements from the vector and\nmust determine if the elements compare equal. The elements are passed in opposite order\nfrom their order in the slice, so if same_bucket(a, b) returns true, a is removed.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![\"foo\", \"bar\", \"Bar\", \"baz\", \"bar\"];\n\nvec.dedup_by(|a, b| a.eq_ignore_ascii_case(b));\n\nassert_eq!(vec, [\"foo\", \"bar\", \"baz\", \"bar\"]);
\n
1.0.0 · source

pub fn push(&mut self, value: T)

Appends an element to the back of a collection.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1, 2];\nvec.push(3);\nassert_eq!(vec, [1, 2, 3]);
\n
§Time complexity
\n

Takes amortized O(1) time. If the vector’s length would exceed its\ncapacity after the push, O(capacity) time is taken to copy the\nvector’s elements to a larger allocation. This expensive operation is\noffset by the capacity O(1) insertions it allows.

\n
source

pub fn push_within_capacity(&mut self, value: T) -> Result<(), T>

🔬This is a nightly-only experimental API. (vec_push_within_capacity)

Appends an element if there is sufficient spare capacity, otherwise an error is returned\nwith the element.

\n

Unlike push this method will not reallocate when there’s insufficient capacity.\nThe caller should use reserve or try_reserve to ensure that there is enough capacity.

\n
§Examples
\n

A manual, panic-free alternative to FromIterator:

\n\n
#![feature(vec_push_within_capacity)]\n\nuse std::collections::TryReserveError;\nfn from_iter_fallible<T>(iter: impl Iterator<Item=T>) -> Result<Vec<T>, TryReserveError> {\n    let mut vec = Vec::new();\n    for value in iter {\n        if let Err(value) = vec.push_within_capacity(value) {\n            vec.try_reserve(1)?;\n            // this cannot fail, the previous line either returned or added at least 1 free slot\n            let _ = vec.push_within_capacity(value);\n        }\n    }\n    Ok(vec)\n}\nassert_eq!(from_iter_fallible(0..100), Ok(Vec::from_iter(0..100)));
\n
§Time complexity
\n

Takes O(1) time.

\n
1.0.0 · source

pub fn pop(&mut self) -> Option<T>

Removes the last element from a vector and returns it, or None if it\nis empty.

\n

If you’d like to pop the first element, consider using\nVecDeque::pop_front instead.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nassert_eq!(vec.pop(), Some(3));\nassert_eq!(vec, [1, 2]);
\n
§Time complexity
\n

Takes O(1) time.

\n
source

pub fn pop_if<F>(&mut self, f: F) -> Option<T>
where\n F: FnOnce(&mut T) -> bool,

🔬This is a nightly-only experimental API. (vec_pop_if)

Removes and returns the last element in a vector if the predicate\nreturns true, or None if the predicate returns false or the vector\nis empty.

\n
§Examples
\n
#![feature(vec_pop_if)]\n\nlet mut vec = vec![1, 2, 3, 4];\nlet pred = |x: &mut i32| *x % 2 == 0;\n\nassert_eq!(vec.pop_if(pred), Some(4));\nassert_eq!(vec, [1, 2, 3]);\nassert_eq!(vec.pop_if(pred), None);
\n
1.4.0 · source

pub fn append(&mut self, other: &mut Vec<T, A>)

Moves all the elements of other into self, leaving other empty.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nlet mut vec2 = vec![4, 5, 6];\nvec.append(&mut vec2);\nassert_eq!(vec, [1, 2, 3, 4, 5, 6]);\nassert_eq!(vec2, []);
\n
1.6.0 · source

pub fn drain<R>(&mut self, range: R) -> Drain<'_, T, A>
where\n R: RangeBounds<usize>,

Removes the specified range from the vector in bulk, returning all\nremoved elements as an iterator. If the iterator is dropped before\nbeing fully consumed, it drops the remaining removed elements.

\n

The returned iterator keeps a mutable borrow on the vector to optimize\nits implementation.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Leaking
\n

If the returned iterator goes out of scope without being dropped (due to\nmem::forget, for example), the vector may have lost and leaked\nelements arbitrarily, including elements outside the range.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\nlet u: Vec<_> = v.drain(1..).collect();\nassert_eq!(v, &[1]);\nassert_eq!(u, &[2, 3]);\n\n// A full range clears the vector, like `clear()` does\nv.drain(..);\nassert_eq!(v, &[]);
\n
1.0.0 · source

pub fn clear(&mut self)

Clears the vector, removing all values.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\n\nv.clear();\n\nassert!(v.is_empty());
\n
1.0.0 · source

pub fn len(&self) -> usize

Returns the number of elements in the vector, also referred to\nas its ‘length’.

\n
§Examples
\n
let a = vec![1, 2, 3];\nassert_eq!(a.len(), 3);
\n
1.0.0 · source

pub fn is_empty(&self) -> bool

Returns true if the vector contains no elements.

\n
§Examples
\n
let mut v = Vec::new();\nassert!(v.is_empty());\n\nv.push(1);\nassert!(!v.is_empty());
\n
1.4.0 · source

pub fn split_off(&mut self, at: usize) -> Vec<T, A>
where\n A: Clone,

Splits the collection into two at the given index.

\n

Returns a newly allocated vector containing the elements in the range\n[at, len). After the call, the original vector will be left containing\nthe elements [0, at) with its previous capacity unchanged.

\n
    \n
  • If you want to take ownership of the entire contents and capacity of\nthe vector, see mem::take or mem::replace.
  • \n
  • If you don’t need the returned vector at all, see Vec::truncate.
  • \n
  • If you want to take ownership of an arbitrary subslice, or you don’t\nnecessarily want to store the removed items in a vector, see Vec::drain.
  • \n
\n
§Panics
\n

Panics if at > len.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nlet vec2 = vec.split_off(1);\nassert_eq!(vec, [1]);\nassert_eq!(vec2, [2, 3]);
\n
1.33.0 · source

pub fn resize_with<F>(&mut self, new_len: usize, f: F)
where\n F: FnMut() -> T,

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with the result of\ncalling the closure f. The return values from f will end up\nin the Vec in the order they have been generated.

\n

If new_len is less than len, the Vec is simply truncated.

\n

This method uses a closure to create new values on every push. If\nyou’d rather Clone a given value, use Vec::resize. If you\nwant to use the Default trait to generate values, you can\npass Default::default as the second argument.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nvec.resize_with(5, Default::default);\nassert_eq!(vec, [1, 2, 3, 0, 0]);\n\nlet mut vec = vec![];\nlet mut p = 1;\nvec.resize_with(4, || { p *= 2; p });\nassert_eq!(vec, [2, 4, 8, 16]);
\n
1.47.0 · source

pub fn leak<'a>(self) -> &'a mut [T]
where\n A: 'a,

Consumes and leaks the Vec, returning a mutable reference to the contents,\n&'a mut [T].

\n

Note that the type T must outlive the chosen lifetime 'a. If the type\nhas only static references, or none at all, then this may be chosen to be\n'static.

\n

As of Rust 1.57, this method does not reallocate or shrink the Vec,\nso the leaked allocation may include unused capacity that is not part\nof the returned slice.

\n

This function is mainly useful for data that lives for the remainder of\nthe program’s life. Dropping the returned reference will cause a memory\nleak.

\n
§Examples
\n

Simple usage:

\n\n
let x = vec![1, 2, 3];\nlet static_ref: &'static mut [usize] = x.leak();\nstatic_ref[0] += 1;\nassert_eq!(static_ref, &[2, 2, 3]);
\n
1.60.0 · source

pub fn spare_capacity_mut(&mut self) -> &mut [MaybeUninit<T>]

Returns the remaining spare capacity of the vector as a slice of\nMaybeUninit<T>.

\n

The returned slice can be used to fill the vector with data (e.g. by\nreading from a file) before marking the data as initialized using the\nset_len method.

\n
§Examples
\n
// Allocate vector big enough for 10 elements.\nlet mut v = Vec::with_capacity(10);\n\n// Fill in the first 3 elements.\nlet uninit = v.spare_capacity_mut();\nuninit[0].write(0);\nuninit[1].write(1);\nuninit[2].write(2);\n\n// Mark the first 3 elements of the vector as being initialized.\nunsafe {\n    v.set_len(3);\n}\n\nassert_eq!(&v, &[0, 1, 2]);
\n
source

pub fn split_at_spare_mut(&mut self) -> (&mut [T], &mut [MaybeUninit<T>])

🔬This is a nightly-only experimental API. (vec_split_at_spare)

Returns vector content as a slice of T, along with the remaining spare\ncapacity of the vector as a slice of MaybeUninit<T>.

\n

The returned spare capacity slice can be used to fill the vector with data\n(e.g. by reading from a file) before marking the data as initialized using\nthe set_len method.

\n

Note that this is a low-level API, which should be used with care for\noptimization purposes. If you need to append data to a Vec\nyou can use push, extend, extend_from_slice,\nextend_from_within, insert, append, resize or\nresize_with, depending on your exact needs.

\n
§Examples
\n
#![feature(vec_split_at_spare)]\n\nlet mut v = vec![1, 1, 2];\n\n// Reserve additional space big enough for 10 elements.\nv.reserve(10);\n\nlet (init, uninit) = v.split_at_spare_mut();\nlet sum = init.iter().copied().sum::<u32>();\n\n// Fill in the next 4 elements.\nuninit[0].write(sum);\nuninit[1].write(sum * 2);\nuninit[2].write(sum * 3);\nuninit[3].write(sum * 4);\n\n// Mark the 4 elements of the vector as being initialized.\nunsafe {\n    let len = v.len();\n    v.set_len(len + 4);\n}\n\nassert_eq!(&v, &[1, 1, 2, 4, 8, 12, 16]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> DerefPure for Vec<T, A>
where\n A: Allocator,

","DerefPure","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Eq for Vec<T, A>
where\n T: Eq,\n A: Allocator,

","Eq","ext::secondary::CompositeData"]]],["ext",[["
1.5.0 · source§

impl<T, A> AsMut<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut [T]

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut<[T]>","ext::secondary::CompositeData"],["
1.5.0 · source§

impl<T, A> AsMut<Vec<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut Vec<T, A>

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> AsRef<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn as_ref(&self) -> &[T]

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef<[T]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> AsRef<Vec<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn as_ref(&self) -> &Vec<T, A>

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Borrow<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn borrow(&self) -> &[T]

Immutably borrows from an owned value. Read more
","Borrow<[T]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> BorrowMut<[T]> for Vec<T, A>
where\n A: Allocator,

source§

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

Mutably borrows from an owned value. Read more
","BorrowMut<[T]>","ext::secondary::CompositeData"],["
source§

impl<T> Clear for Vec<T>

source§

fn clear(&mut self)

Clear all data in self, retaining the allocated capacithy.
","Clear","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Clone for Vec<T, A>
where\n T: Clone,\n A: Allocator + Clone,

source§

fn clone_from(&mut self, source: &Vec<T, A>)

Overwrites the contents of self with a clone of the contents of source.

\n

This method is preferred over simply assigning source.clone() to self,\nas it avoids reallocation if possible. Additionally, if the element type\nT overrides clone_from(), this will reuse the resources of self’s\nelements as well.

\n
§Examples
\n
let x = vec![5, 6, 7];\nlet mut y = vec![8, 9, 10];\nlet yp: *const i32 = y.as_ptr();\n\ny.clone_from(&x);\n\n// The value is the same\nassert_eq!(x, y);\n\n// And no reallocation occurred\nassert_eq!(yp, y.as_ptr());
\n
source§

fn clone(&self) -> Vec<T, A>

Returns a copy of the value. Read more
","Clone","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Debug for Vec<T, A>
where\n T: Debug,\n A: Allocator,

source§

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

Formats the value using the given formatter. Read more
","Debug","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T> Default for Vec<T>

source§

fn default() -> Vec<T>

Creates an empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
","Default","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Deref for Vec<T, A>
where\n A: Allocator,

source§

type Target = [T]

The resulting type after dereferencing.
source§

fn deref(&self) -> &[T]

Dereferences the value.
","Deref","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> DerefMut for Vec<T, A>
where\n A: Allocator,

source§

fn deref_mut(&mut self) -> &mut [T]

Mutably dereferences the value.
","DerefMut","ext::secondary::CompositeData"],["
source§

impl<'de, T> Deserialize<'de> for Vec<T>
where\n T: Deserialize<'de>,

source§

fn deserialize<D>(\n deserializer: D,\n) -> Result<Vec<T>, <D as Deserializer<'de>>::Error>
where\n D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Drop for Vec<T, A>
where\n A: Allocator,

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
","Drop","ext::secondary::CompositeData"],["
1.2.0 · source§

impl<'a, T, A> Extend<&'a T> for Vec<T, A>
where\n T: Copy + 'a,\n A: Allocator,

Extend implementation that copies elements out of references before pushing them onto the Vec.

\n

This implementation is specialized for slice iterators, where it uses copy_from_slice to\nappend the entire slice at once.

\n
source§

fn extend<I>(&mut self, iter: I)
where\n I: IntoIterator<Item = &'a T>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, _: &'a T)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
","Extend<&'a T>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Extend<T> for Vec<T, A>
where\n A: Allocator,

source§

fn extend<I>(&mut self, iter: I)
where\n I: IntoIterator<Item = T>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: T)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
","Extend","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T> From<&[T]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &[T]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&[1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&[T]>","ext::secondary::CompositeData"],["
1.74.0 · source§

impl<T, const N: usize> From<&[T; N]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &[T; N]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&[1, 2, 3]), vec![1, 2, 3]);
\n
","From<&[T; N]>","ext::secondary::CompositeData"],["
1.19.0 · source§

impl<T> From<&mut [T]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &mut [T]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&mut [T]>","ext::secondary::CompositeData"],["
1.74.0 · source§

impl<T, const N: usize> From<&mut [T; N]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &mut [T; N]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3]), vec![1, 2, 3]);
\n
","From<&mut [T; N]>","ext::secondary::CompositeData"],["
1.44.0 · source§

impl<T, const N: usize> From<[T; N]> for Vec<T>

source§

fn from(s: [T; N]) -> Vec<T>

Allocates a Vec<T> and moves s’s items into it.

\n
§Examples
\n
assert_eq!(Vec::from([1, 2, 3]), vec![1, 2, 3]);
\n
","From<[T; N]>","ext::secondary::CompositeData"],["
1.5.0 · source§

impl<T, A> From<BinaryHeap<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(heap: BinaryHeap<T, A>) -> Vec<T, A>

Converts a BinaryHeap<T> into a Vec<T>.

\n

This conversion requires no data movement or allocation, and has\nconstant time complexity.

\n
","From>","ext::secondary::CompositeData"],["
1.18.0 · source§

impl<T, A> From<Box<[T], A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(s: Box<[T], A>) -> Vec<T, A>

Converts a boxed slice into a vector by transferring ownership of\nthe existing heap allocation.

\n
§Examples
\n
let b: Box<[i32]> = vec![1, 2, 3].into_boxed_slice();\nassert_eq!(Vec::from(b), vec![1, 2, 3]);
\n
","From>","ext::secondary::CompositeData"],["
1.14.0 · source§

impl<'a, T> From<Cow<'a, [T]>> for Vec<T>
where\n [T]: ToOwned<Owned = Vec<T>>,

source§

fn from(s: Cow<'a, [T]>) -> Vec<T>

Converts a clone-on-write slice into a vector.

\n

If s already owns a Vec<T>, it will be returned directly.\nIf s is borrowing a slice, a new Vec<T> will be allocated and\nfilled by cloning s’s items into it.

\n
§Examples
\n
let o: Cow<'_, [i32]> = Cow::Owned(vec![1, 2, 3]);\nlet b: Cow<'_, [i32]> = Cow::Borrowed(&[1, 2, 3]);\nassert_eq!(Vec::from(o), Vec::from(b));
\n
","From>","ext::secondary::CompositeData"],["
1.10.0 · source§

impl<T, A> From<VecDeque<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(other: VecDeque<T, A>) -> Vec<T, A>

Turn a VecDeque<T> into a Vec<T>.

\n

This never needs to re-allocate, but does need to do O(n) data movement if\nthe circular buffer doesn’t happen to be at the beginning of the allocation.

\n
§Examples
\n
use std::collections::VecDeque;\n\n// This one is *O*(1).\nlet deque: VecDeque<_> = (1..5).collect();\nlet ptr = deque.as_slices().0.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);\n\n// This one needs data rearranging.\nlet mut deque: VecDeque<_> = (1..5).collect();\ndeque.push_front(9);\ndeque.push_front(8);\nlet ptr = deque.as_slices().1.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [8, 9, 1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);
\n
","From>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T> FromIterator<T> for Vec<T>

Collects an iterator into a Vec, commonly called via Iterator::collect()

\n

§Allocation behavior

\n

In general Vec does not guarantee any particular growth or allocation strategy.\nThat also applies to this trait impl.

\n

Note: This section covers implementation details and is therefore exempt from\nstability guarantees.

\n

Vec may use any or none of the following strategies,\ndepending on the supplied iterator:

\n
    \n
  • preallocate based on Iterator::size_hint()\n
      \n
    • and panic if the number of items is outside the provided lower/upper bounds
    • \n
    \n
  • \n
  • use an amortized growth strategy similar to pushing one item at a time
  • \n
  • perform the iteration in-place on the original allocation backing the iterator
  • \n
\n

The last case warrants some attention. It is an optimization that in many cases reduces peak memory\nconsumption and improves cache locality. But when big, short-lived allocations are created,\nonly a small fraction of their items get collected, no further use is made of the spare capacity\nand the resulting Vec is moved into a longer-lived structure, then this can lead to the large\nallocations having their lifetimes unnecessarily extended which can result in increased memory\nfootprint.

\n

In cases where this is an issue, the excess capacity can be discarded with Vec::shrink_to(),\nVec::shrink_to_fit() or by collecting into Box<[T]> instead, which additionally reduces\nthe size of the long-lived struct.

\n\n
static LONG_LIVED: Mutex<Vec<Vec<u16>>> = Mutex::new(Vec::new());\n\nfor i in 0..10 {\n    let big_temporary: Vec<u16> = (0..1024).collect();\n    // discard most items\n    let mut result: Vec<_> = big_temporary.into_iter().filter(|i| i % 100 == 0).collect();\n    // without this a lot of unused capacity might be moved into the global\n    result.shrink_to_fit();\n    LONG_LIVED.lock().unwrap().push(result);\n}
\n
source§

fn from_iter<I>(iter: I) -> Vec<T>
where\n I: IntoIterator<Item = T>,

Creates a value from an iterator. Read more
","FromIterator","ext::secondary::CompositeData"],["
§

impl<T> FromParallelIterator<T> for Vec<T>
where\n T: Send,

Collects items from a parallel iterator into a vector.

\n
§

fn from_par_iter<I>(par_iter: I) -> Vec<T>
where\n I: IntoParallelIterator<Item = T>,

Creates an instance of the collection from the parallel iterator par_iter. Read more
","FromParallelIterator","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Hash for Vec<T, A>
where\n T: Hash,\n A: Allocator,

The hash of a vector is the same as that of the corresponding slice,\nas required by the core::borrow::Borrow implementation.

\n\n
use std::hash::BuildHasher;\n\nlet b = std::hash::RandomState::new();\nlet v: Vec<u8> = vec![0xa8, 0x3c, 0x09];\nlet s: &[u8] = &[0xa8, 0x3c, 0x09];\nassert_eq!(b.hash_one(v), b.hash_one(s));
\n
source§

fn hash<H>(&self, state: &mut H)
where\n H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, I, A> Index<I> for Vec<T, A>
where\n I: SliceIndex<[T]>,\n A: Allocator,

source§

type Output = <I as SliceIndex<[T]>>::Output

The returned type after indexing.
source§

fn index(&self, index: I) -> &<Vec<T, A> as Index<I>>::Output

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
§

impl<T> Index<PatternID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: PatternID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
§

impl<T> Index<SmallIndex> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: SmallIndex) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
§

impl<T> Index<StateID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: StateID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, I, A> IndexMut<I> for Vec<T, A>
where\n I: SliceIndex<[T]>,\n A: Allocator,

source§

fn index_mut(&mut self, index: I) -> &mut <Vec<T, A> as Index<I>>::Output

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
§

impl<T> IndexMut<PatternID> for Vec<T>

§

fn index_mut(&mut self, index: PatternID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
§

impl<T> IndexMut<SmallIndex> for Vec<T>

§

fn index_mut(&mut self, index: SmallIndex) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
§

impl<T> IndexMut<StateID> for Vec<T>

§

fn index_mut(&mut self, index: StateID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
source§

impl<'de, T, E> IntoDeserializer<'de, E> for Vec<T>
where\n T: IntoDeserializer<'de, E>,\n E: Error,

source§

type Deserializer = SeqDeserializer<<Vec<T> as IntoIterator>::IntoIter, E>

The type of the deserializer being converted into.
source§

fn into_deserializer(self) -> <Vec<T> as IntoDeserializer<'de, E>>::Deserializer

Convert this value into a deserializer.
","IntoDeserializer<'de, E>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> IntoIterator for Vec<T, A>
where\n A: Allocator,

source§

fn into_iter(self) -> <Vec<T, A> as IntoIterator>::IntoIter

Creates a consuming iterator, that is, one that moves each value out of\nthe vector (from start to end). The vector cannot be used after calling\nthis.

\n
§Examples
\n
let v = vec![\"a\".to_string(), \"b\".to_string()];\nlet mut v_iter = v.into_iter();\n\nlet first_element: Option<String> = v_iter.next();\n\nassert_eq!(first_element, Some(\"a\".to_string()));\nassert_eq!(v_iter.next(), Some(\"b\".to_string()));\nassert_eq!(v_iter.next(), None);
\n
source§

type Item = T

The type of the elements being iterated over.
source§

type IntoIter = IntoIter<T, A>

Which kind of iterator are we turning this into?
","IntoIterator","ext::secondary::CompositeData"],["
§

impl<T> IntoParallelIterator for Vec<T>
where\n T: Send,

§

type Item = T

The type of item that the parallel iterator will produce.
§

type Iter = IntoIter<T>

The parallel iterator type that will be created.
§

fn into_par_iter(self) -> <Vec<T> as IntoParallelIterator>::Iter

Converts self into a parallel iterator. Read more
","IntoParallelIterator","ext::secondary::CompositeData"],["
§

impl<S, L> Layer<S> for Vec<L>
where\n L: Layer<S>,\n S: Subscriber,

§

fn on_layer(&mut self, subscriber: &mut S)

Performs late initialization when attaching a Layer to a\n[Subscriber]. Read more
§

fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest

Registers a new callsite with this layer, returning whether or not\nthe layer is interested in being notified about the callsite, similarly\nto Subscriber::register_callsite. Read more
§

fn enabled(&self, metadata: &Metadata<'_>, ctx: Context<'_, S>) -> bool

Returns true if this layer is interested in a span or event with the\ngiven metadata in the current [Context], similarly to\nSubscriber::enabled. Read more
§

fn event_enabled(&self, event: &Event<'_>, ctx: Context<'_, S>) -> bool

Called before on_event, to determine if on_event should be called. Read more
§

fn on_new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>)

Notifies this layer that a new span was constructed with the given\nAttributes and Id.
§

fn on_record(&self, span: &Id, values: &Record<'_>, ctx: Context<'_, S>)

Notifies this layer that a span with the given Id recorded the given\nvalues.
§

fn on_follows_from(&self, span: &Id, follows: &Id, ctx: Context<'_, S>)

Notifies this layer that a span with the ID span recorded that it\nfollows from the span with the ID follows.
§

fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>)

Notifies this layer that an event has occurred.
§

fn on_enter(&self, id: &Id, ctx: Context<'_, S>)

Notifies this layer that a span with the given ID was entered.
§

fn on_exit(&self, id: &Id, ctx: Context<'_, S>)

Notifies this layer that the span with the given ID was exited.
§

fn on_close(&self, id: Id, ctx: Context<'_, S>)

Notifies this layer that the span with the given ID has been closed.
§

fn on_register_dispatch(&self, subscriber: &Dispatch)

Performs late initialization when installing this layer as a\nSubscriber. Read more
§

fn on_id_change(&self, _old: &Id, _new: &Id, _ctx: Context<'_, S>)

Notifies this layer that a span ID has been cloned, and that the\nsubscriber returned a different ID.
§

fn and_then<L>(self, layer: L) -> Layered<L, Self, S>
where\n L: Layer<S>,\n Self: Sized,

Composes this layer around the given Layer, returning a Layered\nstruct implementing Layer. Read more
§

fn with_subscriber(self, inner: S) -> Layered<Self, S>
where\n Self: Sized,

Composes this Layer with the given Subscriber, returning a\nLayered struct that implements Subscriber. Read more
§

fn with_filter<F>(self, filter: F) -> Filtered<Self, F, S>
where\n Self: Sized,\n F: Filter<S>,

Combines self with a [Filter], returning a Filtered layer. Read more
","Layer","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Ord for Vec<T, A>
where\n T: Ord,\n A: Allocator,

Implements ordering of vectors, lexicographically.

\n
source§

fn cmp(&self, other: &Vec<T, A>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","ext::secondary::CompositeData"],["
§

impl<'a, T> ParallelExtend<&'a T> for Vec<T>
where\n T: 'a + Copy + Send + Sync,

Extends a vector with copied items from a parallel iterator.

\n
§

fn par_extend<I>(&mut self, par_iter: I)
where\n I: IntoParallelIterator<Item = &'a T>,

Extends an instance of the collection with the elements drawn\nfrom the parallel iterator par_iter. Read more
","ParallelExtend<&'a T>","ext::secondary::CompositeData"],["
§

impl<T> ParallelExtend<T> for Vec<T>
where\n T: Send,

Extends a vector with items from a parallel iterator.

\n
§

fn par_extend<I>(&mut self, par_iter: I)
where\n I: IntoParallelIterator<Item = T>,

Extends an instance of the collection with the elements drawn\nfrom the parallel iterator par_iter. Read more
","ParallelExtend","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&[U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U]) -> bool

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

fn ne(&self, other: &&[U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&[U]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<&[U; N]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U; N]) -> bool

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

fn ne(&self, other: &&[U; N]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&[U; N]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&mut [U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&mut [U]) -> bool

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

fn ne(&self, other: &&mut [U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&mut [U]>","ext::secondary::CompositeData"],["
1.48.0 · source§

impl<T, U, A> PartialEq<[U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U]) -> bool

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

fn ne(&self, other: &[U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<[U]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<[U; N]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U; N]) -> bool

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

fn ne(&self, other: &[U; N]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<[U; N]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A1, A2> PartialEq<Vec<U, A2>> for Vec<T, A1>
where\n A1: Allocator,\n A2: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &Vec<U, A2>) -> bool

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

fn ne(&self, other: &Vec<U, A2>) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A1, A2> PartialOrd<Vec<T, A2>> for Vec<T, A1>
where\n T: PartialOrd,\n A1: Allocator,\n A2: Allocator,

Implements comparison of vectors, lexicographically.

\n
source§

fn partial_cmp(&self, other: &Vec<T, A2>) -> Option<Ordering>

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

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

Tests less than or equal to (for self and other) and is used by the\n<= operator. Read more
1.0.0 · source§

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

Tests greater than (for self and other) and is used by the >\noperator. Read more
1.0.0 · source§

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

Tests greater than or equal to (for self and other) and is used by\nthe >= operator. Read more
","PartialOrd>","ext::secondary::CompositeData"],["
source§

impl<T> Serialize for Vec<T>
where\n T: Serialize,

source§

fn serialize<S>(\n &self,\n serializer: S,\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where\n S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","ext::secondary::CompositeData"],["
source§

impl<T> Vec<T>

1.0.0 (const: 1.39.0) · source

pub const fn new() -> Vec<T>

Constructs a new, empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
§Examples
\n
let mut vec: Vec<i32> = Vec::new();
\n
1.0.0 · source

pub fn with_capacity(capacity: usize) -> Vec<T>

Constructs a new, empty Vec<T> with at least the specified capacity.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<()>::with_capacity(10);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
source

pub fn try_with_capacity(capacity: usize) -> Result<Vec<T>, TryReserveError>

🔬This is a nightly-only experimental API. (try_with_capacity)

Constructs a new, empty Vec<T> with at least the specified capacity.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n
§Errors
\n

Returns an error if the capacity exceeds isize::MAX bytes,\nor if the allocator reports allocation failure.

\n
1.0.0 · source

pub unsafe fn from_raw_parts(\n ptr: *mut T,\n length: usize,\n capacity: usize,\n) -> Vec<T>

Creates a Vec<T> directly from a pointer, a length, and a capacity.

\n
§Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must have been allocated using the global allocator, such as via\nthe alloc::alloc function.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to be the capacity that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is normally not safe\nto build a Vec<u8> from a pointer to a C char array with length\nsize_t, doing so is only safe if the array was initially allocated by\na Vec or String.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1. To avoid\nthese issues, it is often preferable to do casting/transmuting using\nslice::from_raw_parts instead.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
§Examples
\n
use std::ptr;\nuse std::mem;\n\nlet v = vec![1, 2, 3];\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts(p, len, cap);\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
use std::alloc::{alloc, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect(\"overflow cannot happen\");\n\n    let vec = unsafe {\n        let mem = alloc(layout).cast::<u32>();\n        if mem.is_null() {\n            return;\n        }\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts(mem, 1, 16)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n T: Clone,\n A: Allocator,

1.5.0 · source

pub fn resize(&mut self, new_len: usize, value: T)

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with value.\nIf new_len is less than len, the Vec is simply truncated.

\n

This method requires T to implement Clone,\nin order to be able to clone the passed value.\nIf you need more flexibility (or want to rely on Default instead of\nClone), use Vec::resize_with.\nIf you only need to resize to a smaller size, use Vec::truncate.

\n
§Examples
\n
let mut vec = vec![\"hello\"];\nvec.resize(3, \"world\");\nassert_eq!(vec, [\"hello\", \"world\", \"world\"]);\n\nlet mut vec = vec![1, 2, 3, 4];\nvec.resize(2, 0);\nassert_eq!(vec, [1, 2]);
\n
1.6.0 · source

pub fn extend_from_slice(&mut self, other: &[T])

Clones and appends all elements in a slice to the Vec.

\n

Iterates over the slice other, clones each element, and then appends\nit to this Vec. The other slice is traversed in-order.

\n

Note that this function is same as extend except that it is\nspecialized to work with slices instead. If and when Rust gets\nspecialization this function will likely be deprecated (but still\navailable).

\n
§Examples
\n
let mut vec = vec![1];\nvec.extend_from_slice(&[2, 3, 4]);\nassert_eq!(vec, [1, 2, 3, 4]);
\n
1.53.0 · source

pub fn extend_from_within<R>(&mut self, src: R)
where\n R: RangeBounds<usize>,

Copies elements from src range to the end of the vector.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Examples
\n
let mut vec = vec![0, 1, 2, 3, 4];\n\nvec.extend_from_within(2..);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4]);\n\nvec.extend_from_within(..2);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1]);\n\nvec.extend_from_within(4..8);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1, 4, 2, 3, 4]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n T: PartialEq,\n A: Allocator,

1.0.0 · source

pub fn dedup(&mut self)

Removes consecutive repeated elements in the vector according to the\nPartialEq trait implementation.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![1, 2, 2, 3, 2];\n\nvec.dedup();\n\nassert_eq!(vec, [1, 2, 3, 2]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n A: Allocator,

1.21.0 · source

pub fn splice<R, I>(\n &mut self,\n range: R,\n replace_with: I,\n) -> Splice<'_, <I as IntoIterator>::IntoIter, A>
where\n R: RangeBounds<usize>,\n I: IntoIterator<Item = T>,

Creates a splicing iterator that replaces the specified range in the vector\nwith the given replace_with iterator and yields the removed items.\nreplace_with does not need to be the same length as range.

\n

range is removed even if the iterator is not consumed until the end.

\n

It is unspecified how many elements are removed from the vector\nif the Splice value is leaked.

\n

The input iterator replace_with is only consumed when the Splice value is dropped.

\n

This is optimal if:

\n
    \n
  • The tail (elements in the vector after range) is empty,
  • \n
  • or replace_with yields fewer or equal elements than range’s length
  • \n
  • or the lower bound of its size_hint() is exact.
  • \n
\n

Otherwise, a temporary vector is allocated and the tail is moved twice.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Examples
\n
let mut v = vec![1, 2, 3, 4];\nlet new = [7, 8, 9];\nlet u: Vec<_> = v.splice(1..3, new).collect();\nassert_eq!(v, &[1, 7, 8, 9, 4]);\nassert_eq!(u, &[2, 3]);
\n
source

pub fn extract_if<F>(&mut self, filter: F) -> ExtractIf<'_, T, F, A>
where\n F: FnMut(&mut T) -> bool,

🔬This is a nightly-only experimental API. (extract_if)

Creates an iterator which uses a closure to determine if an element should be removed.

\n

If the closure returns true, then the element is removed and yielded.\nIf the closure returns false, the element will remain in the vector and will not be yielded\nby the iterator.

\n

If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

\n

Using this method is equivalent to the following code:

\n\n
let mut i = 0;\nwhile i < vec.len() {\n    if some_predicate(&mut vec[i]) {\n        let val = vec.remove(i);\n        // your code here\n    } else {\n        i += 1;\n    }\n}\n
\n

But extract_if is easier to use. extract_if is also more efficient,\nbecause it can backshift the elements of the array in bulk.

\n

Note that extract_if also lets you mutate every element in the filter closure,\nregardless of whether you choose to keep or remove it.

\n
§Examples
\n

Splitting an array into evens and odds, reusing the original allocation:

\n\n
#![feature(extract_if)]\nlet mut numbers = vec![1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15];\n\nlet evens = numbers.extract_if(|x| *x % 2 == 0).collect::<Vec<_>>();\nlet odds = numbers;\n\nassert_eq!(evens, vec![2, 4, 6, 8, 14]);\nassert_eq!(odds, vec![1, 3, 5, 9, 11, 13, 15]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n A: Allocator,

source

pub const fn new_in(alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A>.

\n

The vector will not allocate until elements are pushed onto it.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec: Vec<i32, _> = Vec::new_in(System);
\n
source

pub fn with_capacity_in(capacity: usize, alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A> with at least the specified capacity\nwith the provided allocator.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T, A> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec = Vec::with_capacity_in(10, System);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<(), System>::with_capacity_in(10, System);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
source

pub fn try_with_capacity_in(\n capacity: usize,\n alloc: A,\n) -> Result<Vec<T, A>, TryReserveError>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A> with at least the specified capacity\nwith the provided allocator.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n
§Errors
\n

Returns an error if the capacity exceeds isize::MAX bytes,\nor if the allocator reports allocation failure.

\n
source

pub unsafe fn from_raw_parts_in(\n ptr: *mut T,\n length: usize,\n capacity: usize,\n alloc: A,\n) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Creates a Vec<T, A> directly from a pointer, a length, a capacity,\nand an allocator.

\n
§Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must be currently allocated via the given allocator alloc.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to fit the layout size that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T, A>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is not safe\nto build a Vec<u8> from a pointer to a C char array with length size_t.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nuse std::ptr;\nuse std::mem;\n\nlet mut v = Vec::with_capacity_in(3, System);\nv.push(1);\nv.push(2);\nv.push(3);\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\nlet alloc = v.allocator();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts_in(p, len, cap, alloc.clone());\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
#![feature(allocator_api)]\n\nuse std::alloc::{AllocError, Allocator, Global, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect(\"overflow cannot happen\");\n\n    let vec = unsafe {\n        let mem = match Global.allocate(layout) {\n            Ok(mem) => mem.cast::<u32>().as_ptr(),\n            Err(AllocError) => return,\n        };\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts_in(mem, 1, 16, Global)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
source

pub fn into_raw_parts(self) -> (*mut T, usize, usize)

🔬This is a nightly-only experimental API. (vec_into_raw_parts)

Decomposes a Vec<T> into its raw components: (pointer, length, capacity).

\n

Returns the raw pointer to the underlying data, the length of\nthe vector (in elements), and the allocated capacity of the\ndata (in elements). These are the same arguments in the same\norder as the arguments to from_raw_parts.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts function, allowing\nthe destructor to perform the cleanup.

\n
§Examples
\n
#![feature(vec_into_raw_parts)]\nlet v: Vec<i32> = vec![-1, 0, 1];\n\nlet (ptr, len, cap) = v.into_raw_parts();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts(ptr, len, cap)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
source

pub fn into_raw_parts_with_alloc(self) -> (*mut T, usize, usize, A)

🔬This is a nightly-only experimental API. (allocator_api)

Decomposes a Vec<T> into its raw components: (pointer, length, capacity, allocator).

\n

Returns the raw pointer to the underlying data, the length of the vector (in elements),\nthe allocated capacity of the data (in elements), and the allocator. These are the same\narguments in the same order as the arguments to from_raw_parts_in.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts_in function, allowing\nthe destructor to perform the cleanup.

\n
§Examples
\n
#![feature(allocator_api, vec_into_raw_parts)]\n\nuse std::alloc::System;\n\nlet mut v: Vec<i32, System> = Vec::new_in(System);\nv.push(-1);\nv.push(0);\nv.push(1);\n\nlet (ptr, len, cap, alloc) = v.into_raw_parts_with_alloc();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts_in(ptr, len, cap, alloc)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
1.0.0 · source

pub fn capacity(&self) -> usize

Returns the total number of elements the vector can hold without\nreallocating.

\n
§Examples
\n
let mut vec: Vec<i32> = Vec::with_capacity(10);\nvec.push(42);\nassert!(vec.capacity() >= 10);
\n
1.0.0 · source

pub fn reserve(&mut self, additional: usize)

Reserves capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to\nspeculatively avoid frequent reallocations. After calling reserve,\ncapacity will be greater than or equal to self.len() + additional.\nDoes nothing if capacity is already sufficient.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1];\nvec.reserve(10);\nassert!(vec.capacity() >= 11);
\n
1.0.0 · source

pub fn reserve_exact(&mut self, additional: usize)

Reserves the minimum capacity for at least additional more elements to\nbe inserted in the given Vec<T>. Unlike reserve, this will not\ndeliberately over-allocate to speculatively avoid frequent allocations.\nAfter calling reserve_exact, capacity will be greater than or equal to\nself.len() + additional. Does nothing if the capacity is already\nsufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer reserve if future insertions are expected.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1];\nvec.reserve_exact(10);\nassert!(vec.capacity() >= 11);
\n
1.57.0 · source

pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>

Tries to reserve capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to speculatively avoid\nfrequent reallocations. After calling try_reserve, capacity will be\ngreater than or equal to self.len() + additional if it returns\nOk(()). Does nothing if capacity is already sufficient. This method\npreserves the contents even if an error occurs.

\n
§Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
§Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.57.0 · source

pub fn try_reserve_exact(\n &mut self,\n additional: usize,\n) -> Result<(), TryReserveError>

Tries to reserve the minimum capacity for at least additional\nelements to be inserted in the given Vec<T>. Unlike try_reserve,\nthis will not deliberately over-allocate to speculatively avoid frequent\nallocations. After calling try_reserve_exact, capacity will be greater\nthan or equal to self.len() + additional if it returns Ok(()).\nDoes nothing if the capacity is already sufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer try_reserve if future insertions are expected.

\n
§Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
§Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve_exact(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.0.0 · source

pub fn shrink_to_fit(&mut self)

Shrinks the capacity of the vector as much as possible.

\n

The behavior of this method depends on the allocator, which may either shrink the vector\nin-place or reallocate. The resulting vector might still have some excess capacity, just as\nis the case for with_capacity. See Allocator::shrink for more details.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to_fit();\nassert!(vec.capacity() >= 3);
\n
1.56.0 · source

pub fn shrink_to(&mut self, min_capacity: usize)

Shrinks the capacity of the vector with a lower bound.

\n

The capacity will remain at least as large as both the length\nand the supplied value.

\n

If the current capacity is less than the lower limit, this is a no-op.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to(4);\nassert!(vec.capacity() >= 4);\nvec.shrink_to(0);\nassert!(vec.capacity() >= 3);
\n
1.0.0 · source

pub fn into_boxed_slice(self) -> Box<[T], A>

Converts the vector into Box<[T]>.

\n

Before doing the conversion, this method discards excess capacity like shrink_to_fit.

\n
§Examples
\n
let v = vec![1, 2, 3];\n\nlet slice = v.into_boxed_slice();
\n

Any excess capacity is removed:

\n\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\n\nassert!(vec.capacity() >= 10);\nlet slice = vec.into_boxed_slice();\nassert_eq!(slice.into_vec().capacity(), 3);
\n
1.0.0 · source

pub fn truncate(&mut self, len: usize)

Shortens the vector, keeping the first len elements and dropping\nthe rest.

\n

If len is greater or equal to the vector’s current length, this has\nno effect.

\n

The drain method can emulate truncate, but causes the excess\nelements to be returned instead of dropped.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
§Examples
\n

Truncating a five element vector to two elements:

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nvec.truncate(2);\nassert_eq!(vec, [1, 2]);
\n

No truncation occurs when len is greater than the vector’s current\nlength:

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(8);\nassert_eq!(vec, [1, 2, 3]);
\n

Truncating when len == 0 is equivalent to calling the clear\nmethod.

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(0);\nassert_eq!(vec, []);
\n
1.7.0 · source

pub fn as_slice(&self) -> &[T]

Extracts a slice containing the entire vector.

\n

Equivalent to &s[..].

\n
§Examples
\n
use std::io::{self, Write};\nlet buffer = vec![1, 2, 3, 5, 8];\nio::sink().write(buffer.as_slice()).unwrap();
\n
1.7.0 · source

pub fn as_mut_slice(&mut self) -> &mut [T]

Extracts a mutable slice of the entire vector.

\n

Equivalent to &mut s[..].

\n
§Examples
\n
use std::io::{self, Read};\nlet mut buffer = vec![0; 3];\nio::repeat(0b101).read_exact(buffer.as_mut_slice()).unwrap();
\n
1.37.0 · source

pub fn as_ptr(&self) -> *const T

Returns a raw pointer to the vector’s buffer, or a dangling raw pointer\nvalid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up dangling.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

The caller must also ensure that the memory the pointer (non-transitively) points to\nis never written to (except inside an UnsafeCell) using this pointer or any pointer\nderived from it. If you need to mutate the contents of the slice, use as_mut_ptr.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize mutable references to the slice,\nor mutable references to specific elements you are planning on accessing through this pointer,\nas well as writing to those elements, may still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
§Examples
\n
let x = vec![1, 2, 4];\nlet x_ptr = x.as_ptr();\n\nunsafe {\n    for i in 0..x.len() {\n        assert_eq!(*x_ptr.add(i), 1 << i);\n    }\n}
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0, 1, 2];\n    let ptr1 = v.as_ptr();\n    let _ = ptr1.read();\n    let ptr2 = v.as_mut_ptr().offset(2);\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`\n    // because it mutated a different element:\n    let _ = ptr1.read();\n}
\n
1.37.0 · source

pub fn as_mut_ptr(&mut self) -> *mut T

Returns a raw mutable pointer to the vector’s buffer, or a dangling\nraw pointer valid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up dangling.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize references to the slice,\nor references to specific elements you are planning on accessing through this pointer,\nmay still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
§Examples
\n
// Allocate vector big enough for 4 elements.\nlet size = 4;\nlet mut x: Vec<i32> = Vec::with_capacity(size);\nlet x_ptr = x.as_mut_ptr();\n\n// Initialize elements via raw pointer writes, then set length.\nunsafe {\n    for i in 0..size {\n        *x_ptr.add(i) = i as i32;\n    }\n    x.set_len(size);\n}\nassert_eq!(&*x, &[0, 1, 2, 3]);
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0];\n    let ptr1 = v.as_mut_ptr();\n    ptr1.write(1);\n    let ptr2 = v.as_mut_ptr();\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`:\n    ptr1.write(3);\n}
\n
source

pub fn allocator(&self) -> &A

🔬This is a nightly-only experimental API. (allocator_api)

Returns a reference to the underlying allocator.

\n
1.0.0 · source

pub unsafe fn set_len(&mut self, new_len: usize)

Forces the length of the vector to new_len.

\n

This is a low-level operation that maintains none of the normal\ninvariants of the type. Normally changing the length of a vector\nis done using one of the safe operations instead, such as\ntruncate, resize, extend, or clear.

\n
§Safety
\n
    \n
  • new_len must be less than or equal to capacity().
  • \n
  • The elements at old_len..new_len must be initialized.
  • \n
\n
§Examples
\n

This method can be useful for situations in which the vector\nis serving as a buffer for other code, particularly over FFI:

\n\n
pub fn get_dictionary(&self) -> Option<Vec<u8>> {\n    // Per the FFI method's docs, \"32768 bytes is always enough\".\n    let mut dict = Vec::with_capacity(32_768);\n    let mut dict_length = 0;\n    // SAFETY: When `deflateGetDictionary` returns `Z_OK`, it holds that:\n    // 1. `dict_length` elements were initialized.\n    // 2. `dict_length` <= the capacity (32_768)\n    // which makes `set_len` safe to call.\n    unsafe {\n        // Make the FFI call...\n        let r = deflateGetDictionary(self.strm, dict.as_mut_ptr(), &mut dict_length);\n        if r == Z_OK {\n            // ...and update the length to what was initialized.\n            dict.set_len(dict_length);\n            Some(dict)\n        } else {\n            None\n        }\n    }\n}
\n

While the following example is sound, there is a memory leak since\nthe inner vectors were not freed prior to the set_len call:

\n\n
let mut vec = vec![vec![1, 0, 0],\n                   vec![0, 1, 0],\n                   vec![0, 0, 1]];\n// SAFETY:\n// 1. `old_len..0` is empty so no elements need to be initialized.\n// 2. `0 <= capacity` always holds whatever `capacity` is.\nunsafe {\n    vec.set_len(0);\n}
\n

Normally, here, one would use clear instead to correctly drop\nthe contents and thus not leak memory.

\n
1.0.0 · source

pub fn swap_remove(&mut self, index: usize) -> T

Removes an element from the vector and returns it.

\n

The removed element is replaced by the last element of the vector.

\n

This does not preserve ordering of the remaining elements, but is O(1).\nIf you need to preserve the element order, use remove instead.

\n
§Panics
\n

Panics if index is out of bounds.

\n
§Examples
\n
let mut v = vec![\"foo\", \"bar\", \"baz\", \"qux\"];\n\nassert_eq!(v.swap_remove(1), \"bar\");\nassert_eq!(v, [\"foo\", \"qux\", \"baz\"]);\n\nassert_eq!(v.swap_remove(0), \"foo\");\nassert_eq!(v, [\"baz\", \"qux\"]);
\n
1.0.0 · source

pub fn insert(&mut self, index: usize, element: T)

Inserts an element at position index within the vector, shifting all\nelements after it to the right.

\n
§Panics
\n

Panics if index > len.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nvec.insert(1, 4);\nassert_eq!(vec, [1, 4, 2, 3]);\nvec.insert(4, 5);\nassert_eq!(vec, [1, 4, 2, 3, 5]);
\n
§Time complexity
\n

Takes O(Vec::len) time. All items after the insertion index must be\nshifted to the right. In the worst case, all elements are shifted when\nthe insertion index is 0.

\n
1.0.0 · source

pub fn remove(&mut self, index: usize) -> T

Removes and returns the element at position index within the vector,\nshifting all elements after it to the left.

\n

Note: Because this shifts over the remaining elements, it has a\nworst-case performance of O(n). If you don’t need the order of elements\nto be preserved, use swap_remove instead. If you’d like to remove\nelements from the beginning of the Vec, consider using\nVecDeque::pop_front instead.

\n
§Panics
\n

Panics if index is out of bounds.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\nassert_eq!(v.remove(1), 2);\nassert_eq!(v, [1, 3]);
\n
1.0.0 · source

pub fn retain<F>(&mut self, f: F)
where\n F: FnMut(&T) -> bool,

Retains only the elements specified by the predicate.

\n

In other words, remove all elements e for which f(&e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
§Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain(|&x| x % 2 == 0);\nassert_eq!(vec, [2, 4]);
\n

Because the elements are visited exactly once in the original order,\nexternal state may be used to decide which elements to keep.

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nlet keep = [false, true, true, false, true];\nlet mut iter = keep.iter();\nvec.retain(|_| *iter.next().unwrap());\nassert_eq!(vec, [2, 3, 5]);
\n
1.61.0 · source

pub fn retain_mut<F>(&mut self, f: F)
where\n F: FnMut(&mut T) -> bool,

Retains only the elements specified by the predicate, passing a mutable reference to it.

\n

In other words, remove all elements e such that f(&mut e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
§Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain_mut(|x| if *x <= 3 {\n    *x += 1;\n    true\n} else {\n    false\n});\nassert_eq!(vec, [2, 3, 4]);
\n
1.16.0 · source

pub fn dedup_by_key<F, K>(&mut self, key: F)
where\n F: FnMut(&mut T) -> K,\n K: PartialEq,

Removes all but the first of consecutive elements in the vector that resolve to the same\nkey.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![10, 20, 21, 30, 20];\n\nvec.dedup_by_key(|i| *i / 10);\n\nassert_eq!(vec, [10, 20, 30, 20]);
\n
1.16.0 · source

pub fn dedup_by<F>(&mut self, same_bucket: F)
where\n F: FnMut(&mut T, &mut T) -> bool,

Removes all but the first of consecutive elements in the vector satisfying a given equality\nrelation.

\n

The same_bucket function is passed references to two elements from the vector and\nmust determine if the elements compare equal. The elements are passed in opposite order\nfrom their order in the slice, so if same_bucket(a, b) returns true, a is removed.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![\"foo\", \"bar\", \"Bar\", \"baz\", \"bar\"];\n\nvec.dedup_by(|a, b| a.eq_ignore_ascii_case(b));\n\nassert_eq!(vec, [\"foo\", \"bar\", \"baz\", \"bar\"]);
\n
1.0.0 · source

pub fn push(&mut self, value: T)

Appends an element to the back of a collection.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1, 2];\nvec.push(3);\nassert_eq!(vec, [1, 2, 3]);
\n
§Time complexity
\n

Takes amortized O(1) time. If the vector’s length would exceed its\ncapacity after the push, O(capacity) time is taken to copy the\nvector’s elements to a larger allocation. This expensive operation is\noffset by the capacity O(1) insertions it allows.

\n
source

pub fn push_within_capacity(&mut self, value: T) -> Result<(), T>

🔬This is a nightly-only experimental API. (vec_push_within_capacity)

Appends an element if there is sufficient spare capacity, otherwise an error is returned\nwith the element.

\n

Unlike push this method will not reallocate when there’s insufficient capacity.\nThe caller should use reserve or try_reserve to ensure that there is enough capacity.

\n
§Examples
\n

A manual, panic-free alternative to FromIterator:

\n\n
#![feature(vec_push_within_capacity)]\n\nuse std::collections::TryReserveError;\nfn from_iter_fallible<T>(iter: impl Iterator<Item=T>) -> Result<Vec<T>, TryReserveError> {\n    let mut vec = Vec::new();\n    for value in iter {\n        if let Err(value) = vec.push_within_capacity(value) {\n            vec.try_reserve(1)?;\n            // this cannot fail, the previous line either returned or added at least 1 free slot\n            let _ = vec.push_within_capacity(value);\n        }\n    }\n    Ok(vec)\n}\nassert_eq!(from_iter_fallible(0..100), Ok(Vec::from_iter(0..100)));
\n
§Time complexity
\n

Takes O(1) time.

\n
1.0.0 · source

pub fn pop(&mut self) -> Option<T>

Removes the last element from a vector and returns it, or None if it\nis empty.

\n

If you’d like to pop the first element, consider using\nVecDeque::pop_front instead.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nassert_eq!(vec.pop(), Some(3));\nassert_eq!(vec, [1, 2]);
\n
§Time complexity
\n

Takes O(1) time.

\n
source

pub fn pop_if<F>(&mut self, f: F) -> Option<T>
where\n F: FnOnce(&mut T) -> bool,

🔬This is a nightly-only experimental API. (vec_pop_if)

Removes and returns the last element in a vector if the predicate\nreturns true, or None if the predicate returns false or the vector\nis empty.

\n
§Examples
\n
#![feature(vec_pop_if)]\n\nlet mut vec = vec![1, 2, 3, 4];\nlet pred = |x: &mut i32| *x % 2 == 0;\n\nassert_eq!(vec.pop_if(pred), Some(4));\nassert_eq!(vec, [1, 2, 3]);\nassert_eq!(vec.pop_if(pred), None);
\n
1.4.0 · source

pub fn append(&mut self, other: &mut Vec<T, A>)

Moves all the elements of other into self, leaving other empty.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nlet mut vec2 = vec![4, 5, 6];\nvec.append(&mut vec2);\nassert_eq!(vec, [1, 2, 3, 4, 5, 6]);\nassert_eq!(vec2, []);
\n
1.6.0 · source

pub fn drain<R>(&mut self, range: R) -> Drain<'_, T, A>
where\n R: RangeBounds<usize>,

Removes the specified range from the vector in bulk, returning all\nremoved elements as an iterator. If the iterator is dropped before\nbeing fully consumed, it drops the remaining removed elements.

\n

The returned iterator keeps a mutable borrow on the vector to optimize\nits implementation.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Leaking
\n

If the returned iterator goes out of scope without being dropped (due to\nmem::forget, for example), the vector may have lost and leaked\nelements arbitrarily, including elements outside the range.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\nlet u: Vec<_> = v.drain(1..).collect();\nassert_eq!(v, &[1]);\nassert_eq!(u, &[2, 3]);\n\n// A full range clears the vector, like `clear()` does\nv.drain(..);\nassert_eq!(v, &[]);
\n
1.0.0 · source

pub fn clear(&mut self)

Clears the vector, removing all values.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\n\nv.clear();\n\nassert!(v.is_empty());
\n
1.0.0 · source

pub fn len(&self) -> usize

Returns the number of elements in the vector, also referred to\nas its ‘length’.

\n
§Examples
\n
let a = vec![1, 2, 3];\nassert_eq!(a.len(), 3);
\n
1.0.0 · source

pub fn is_empty(&self) -> bool

Returns true if the vector contains no elements.

\n
§Examples
\n
let mut v = Vec::new();\nassert!(v.is_empty());\n\nv.push(1);\nassert!(!v.is_empty());
\n
1.4.0 · source

pub fn split_off(&mut self, at: usize) -> Vec<T, A>
where\n A: Clone,

Splits the collection into two at the given index.

\n

Returns a newly allocated vector containing the elements in the range\n[at, len). After the call, the original vector will be left containing\nthe elements [0, at) with its previous capacity unchanged.

\n
    \n
  • If you want to take ownership of the entire contents and capacity of\nthe vector, see mem::take or mem::replace.
  • \n
  • If you don’t need the returned vector at all, see Vec::truncate.
  • \n
  • If you want to take ownership of an arbitrary subslice, or you don’t\nnecessarily want to store the removed items in a vector, see Vec::drain.
  • \n
\n
§Panics
\n

Panics if at > len.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nlet vec2 = vec.split_off(1);\nassert_eq!(vec, [1]);\nassert_eq!(vec2, [2, 3]);
\n
1.33.0 · source

pub fn resize_with<F>(&mut self, new_len: usize, f: F)
where\n F: FnMut() -> T,

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with the result of\ncalling the closure f. The return values from f will end up\nin the Vec in the order they have been generated.

\n

If new_len is less than len, the Vec is simply truncated.

\n

This method uses a closure to create new values on every push. If\nyou’d rather Clone a given value, use Vec::resize. If you\nwant to use the Default trait to generate values, you can\npass Default::default as the second argument.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nvec.resize_with(5, Default::default);\nassert_eq!(vec, [1, 2, 3, 0, 0]);\n\nlet mut vec = vec![];\nlet mut p = 1;\nvec.resize_with(4, || { p *= 2; p });\nassert_eq!(vec, [2, 4, 8, 16]);
\n
1.47.0 · source

pub fn leak<'a>(self) -> &'a mut [T]
where\n A: 'a,

Consumes and leaks the Vec, returning a mutable reference to the contents,\n&'a mut [T].

\n

Note that the type T must outlive the chosen lifetime 'a. If the type\nhas only static references, or none at all, then this may be chosen to be\n'static.

\n

As of Rust 1.57, this method does not reallocate or shrink the Vec,\nso the leaked allocation may include unused capacity that is not part\nof the returned slice.

\n

This function is mainly useful for data that lives for the remainder of\nthe program’s life. Dropping the returned reference will cause a memory\nleak.

\n
§Examples
\n

Simple usage:

\n\n
let x = vec![1, 2, 3];\nlet static_ref: &'static mut [usize] = x.leak();\nstatic_ref[0] += 1;\nassert_eq!(static_ref, &[2, 2, 3]);
\n
1.60.0 · source

pub fn spare_capacity_mut(&mut self) -> &mut [MaybeUninit<T>]

Returns the remaining spare capacity of the vector as a slice of\nMaybeUninit<T>.

\n

The returned slice can be used to fill the vector with data (e.g. by\nreading from a file) before marking the data as initialized using the\nset_len method.

\n
§Examples
\n
// Allocate vector big enough for 10 elements.\nlet mut v = Vec::with_capacity(10);\n\n// Fill in the first 3 elements.\nlet uninit = v.spare_capacity_mut();\nuninit[0].write(0);\nuninit[1].write(1);\nuninit[2].write(2);\n\n// Mark the first 3 elements of the vector as being initialized.\nunsafe {\n    v.set_len(3);\n}\n\nassert_eq!(&v, &[0, 1, 2]);
\n
source

pub fn split_at_spare_mut(&mut self) -> (&mut [T], &mut [MaybeUninit<T>])

🔬This is a nightly-only experimental API. (vec_split_at_spare)

Returns vector content as a slice of T, along with the remaining spare\ncapacity of the vector as a slice of MaybeUninit<T>.

\n

The returned spare capacity slice can be used to fill the vector with data\n(e.g. by reading from a file) before marking the data as initialized using\nthe set_len method.

\n

Note that this is a low-level API, which should be used with care for\noptimization purposes. If you need to append data to a Vec\nyou can use push, extend, extend_from_slice,\nextend_from_within, insert, append, resize or\nresize_with, depending on your exact needs.

\n
§Examples
\n
#![feature(vec_split_at_spare)]\n\nlet mut v = vec![1, 1, 2];\n\n// Reserve additional space big enough for 10 elements.\nv.reserve(10);\n\nlet (init, uninit) = v.split_at_spare_mut();\nlet sum = init.iter().copied().sum::<u32>();\n\n// Fill in the next 4 elements.\nuninit[0].write(sum);\nuninit[1].write(sum * 2);\nuninit[2].write(sum * 3);\nuninit[3].write(sum * 4);\n\n// Mark the 4 elements of the vector as being initialized.\nunsafe {\n    let len = v.len();\n    v.set_len(len + 4);\n}\n\nassert_eq!(&v, &[1, 1, 2, 4, 8, 12, 16]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> DerefPure for Vec<T, A>
where\n A: Allocator,

","DerefPure","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Eq for Vec<T, A>
where\n T: Eq,\n A: Allocator,

","Eq","ext::secondary::CompositeData"]]]]); + var type_impls = Object.fromEntries([["algebra",[["
§

impl<A> Arbitrary for Vec<A>
where\n A: Arbitrary,

§

type Parameters = (SizeRange, <A as Arbitrary>::Parameters)

The type of parameters that arbitrary_with accepts for configuration\nof the generated Strategy. Parameters must implement Default.
§

type Strategy = VecStrategy<<A as Arbitrary>::Strategy>

The type of Strategy used to generate values of type Self.
§

fn arbitrary_with(\n args: <Vec<A> as Arbitrary>::Parameters,\n) -> <Vec<A> as Arbitrary>::Strategy

Generates a Strategy for producing arbitrary values of type the\nimplementing type (Self). The strategy is passed the arguments given\nin args. Read more
§

fn arbitrary() -> Self::Strategy

Generates a Strategy for producing arbitrary values\nof type the implementing type (Self). Read more
","Arbitrary","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
§

impl<A> ArbitraryF1<A> for Vec<A>
where\n A: Debug,

§

type Parameters = SizeRange

The type of parameters that lift1_with accepts for\nconfiguration of the lifted and generated Strategy. Parameters\nmust implement Default.
§

fn lift1_with<S>(\n base: S,\n args: <Vec<A> as ArbitraryF1<A>>::Parameters,\n) -> BoxedStrategy<Vec<A>>
where\n S: Strategy<Value = A> + 'static,

Lifts a given Strategy to a new Strategy for the (presumably)\nbigger type. This is useful for lifting a Strategy for SomeType\nto a container such as Vec of SomeType. The composite strategy is\npassed the arguments given in args. Read more
§

fn lift1<AS>(base: AS) -> BoxedStrategy<Self>
where\n AS: Strategy<Value = A> + 'static,

Lifts a given Strategy to a new Strategy for the (presumably)\nbigger type. This is useful for lifting a Strategy for SomeType\nto a container such as Vec<SomeType>. Read more
","ArbitraryF1","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.5.0 · source§

impl<T, A> AsMut<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut [T]

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut<[T]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.5.0 · source§

impl<T, A> AsMut<Vec<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut Vec<T, A>

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> AsRef<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn as_ref(&self) -> &[T]

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef<[T]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> AsRef<Vec<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn as_ref(&self) -> &Vec<T, A>

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Borrow<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn borrow(&self) -> &[T]

Immutably borrows from an owned value. Read more
","Borrow<[T]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> BorrowMut<[T]> for Vec<T, A>
where\n A: Allocator,

source§

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

Mutably borrows from an owned value. Read more
","BorrowMut<[T]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Clone for Vec<T, A>
where\n T: Clone,\n A: Allocator + Clone,

source§

fn clone_from(&mut self, source: &Vec<T, A>)

Overwrites the contents of self with a clone of the contents of source.

\n

This method is preferred over simply assigning source.clone() to self,\nas it avoids reallocation if possible. Additionally, if the element type\nT overrides clone_from(), this will reuse the resources of self’s\nelements as well.

\n
§Examples
\n
let x = vec![5, 6, 7];\nlet mut y = vec![8, 9, 10];\nlet yp: *const i32 = y.as_ptr();\n\ny.clone_from(&x);\n\n// The value is the same\nassert_eq!(x, y);\n\n// And no reallocation occurred\nassert_eq!(yp, y.as_ptr());
\n
source§

fn clone(&self) -> Vec<T, A>

Returns a copy of the value. Read more
","Clone","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Debug for Vec<T, A>
where\n T: Debug,\n A: Allocator,

source§

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

Formats the value using the given formatter. Read more
","Debug","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T> Default for Vec<T>

source§

fn default() -> Vec<T>

Creates an empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
","Default","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Deref for Vec<T, A>
where\n A: Allocator,

source§

type Target = [T]

The resulting type after dereferencing.
source§

fn deref(&self) -> &[T]

Dereferences the value.
","Deref","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> DerefMut for Vec<T, A>
where\n A: Allocator,

source§

fn deref_mut(&mut self) -> &mut [T]

Mutably dereferences the value.
","DerefMut","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<'de, T> Deserialize<'de> for Vec<T>
where\n T: Deserialize<'de>,

source§

fn deserialize<D>(\n deserializer: D,\n) -> Result<Vec<T>, <D as Deserializer<'de>>::Error>
where\n D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Drop for Vec<T, A>
where\n A: Allocator,

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
","Drop","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.2.0 · source§

impl<'a, T, A> Extend<&'a T> for Vec<T, A>
where\n T: Copy + 'a,\n A: Allocator,

Extend implementation that copies elements out of references before pushing them onto the Vec.

\n

This implementation is specialized for slice iterators, where it uses copy_from_slice to\nappend the entire slice at once.

\n
source§

fn extend<I>(&mut self, iter: I)
where\n I: IntoIterator<Item = &'a T>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, _: &'a T)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
","Extend<&'a T>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Extend<T> for Vec<T, A>
where\n A: Allocator,

source§

fn extend<I>(&mut self, iter: I)
where\n I: IntoIterator<Item = T>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: T)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
","Extend","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T> From<&[T]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &[T]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&[1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&[T]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.74.0 · source§

impl<T, const N: usize> From<&[T; N]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &[T; N]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&[1, 2, 3]), vec![1, 2, 3]);
\n
","From<&[T; N]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl From<&FpVector> for Vec<u32>

source§

fn from(v: &FpVector) -> Vec<u32>

Converts to this type from the input type.
","From<&FpVector>","algebra::algebra::milnor_algebra::PPart"],["
1.19.0 · source§

impl<T> From<&mut [T]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &mut [T]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&mut [T]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.74.0 · source§

impl<T, const N: usize> From<&mut [T; N]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &mut [T; N]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3]), vec![1, 2, 3]);
\n
","From<&mut [T; N]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.44.0 · source§

impl<T, const N: usize> From<[T; N]> for Vec<T>

source§

fn from(s: [T; N]) -> Vec<T>

Allocates a Vec<T> and moves s’s items into it.

\n
§Examples
\n
assert_eq!(Vec::from([1, 2, 3]), vec![1, 2, 3]);
\n
","From<[T; N]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.5.0 · source§

impl<T, A> From<BinaryHeap<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(heap: BinaryHeap<T, A>) -> Vec<T, A>

Converts a BinaryHeap<T> into a Vec<T>.

\n

This conversion requires no data movement or allocation, and has\nconstant time complexity.

\n
","From>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.18.0 · source§

impl<T, A> From<Box<[T], A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(s: Box<[T], A>) -> Vec<T, A>

Converts a boxed slice into a vector by transferring ownership of\nthe existing heap allocation.

\n
§Examples
\n
let b: Box<[i32]> = vec![1, 2, 3].into_boxed_slice();\nassert_eq!(Vec::from(b), vec![1, 2, 3]);
\n
","From>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.14.0 · source§

impl<'a, T> From<Cow<'a, [T]>> for Vec<T>
where\n [T]: ToOwned<Owned = Vec<T>>,

source§

fn from(s: Cow<'a, [T]>) -> Vec<T>

Converts a clone-on-write slice into a vector.

\n

If s already owns a Vec<T>, it will be returned directly.\nIf s is borrowing a slice, a new Vec<T> will be allocated and\nfilled by cloning s’s items into it.

\n
§Examples
\n
let o: Cow<'_, [i32]> = Cow::Owned(vec![1, 2, 3]);\nlet b: Cow<'_, [i32]> = Cow::Borrowed(&[1, 2, 3]);\nassert_eq!(Vec::from(o), Vec::from(b));
\n
","From>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.10.0 · source§

impl<T, A> From<VecDeque<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(other: VecDeque<T, A>) -> Vec<T, A>

Turn a VecDeque<T> into a Vec<T>.

\n

This never needs to re-allocate, but does need to do O(n) data movement if\nthe circular buffer doesn’t happen to be at the beginning of the allocation.

\n
§Examples
\n
use std::collections::VecDeque;\n\n// This one is *O*(1).\nlet deque: VecDeque<_> = (1..5).collect();\nlet ptr = deque.as_slices().0.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);\n\n// This one needs data rearranging.\nlet mut deque: VecDeque<_> = (1..5).collect();\ndeque.push_front(9);\ndeque.push_front(8);\nlet ptr = deque.as_slices().1.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [8, 9, 1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);
\n
","From>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T> FromIterator<T> for Vec<T>

Collects an iterator into a Vec, commonly called via Iterator::collect()

\n

§Allocation behavior

\n

In general Vec does not guarantee any particular growth or allocation strategy.\nThat also applies to this trait impl.

\n

Note: This section covers implementation details and is therefore exempt from\nstability guarantees.

\n

Vec may use any or none of the following strategies,\ndepending on the supplied iterator:

\n
    \n
  • preallocate based on Iterator::size_hint()\n
      \n
    • and panic if the number of items is outside the provided lower/upper bounds
    • \n
    \n
  • \n
  • use an amortized growth strategy similar to pushing one item at a time
  • \n
  • perform the iteration in-place on the original allocation backing the iterator
  • \n
\n

The last case warrants some attention. It is an optimization that in many cases reduces peak memory\nconsumption and improves cache locality. But when big, short-lived allocations are created,\nonly a small fraction of their items get collected, no further use is made of the spare capacity\nand the resulting Vec is moved into a longer-lived structure, then this can lead to the large\nallocations having their lifetimes unnecessarily extended which can result in increased memory\nfootprint.

\n

In cases where this is an issue, the excess capacity can be discarded with Vec::shrink_to(),\nVec::shrink_to_fit() or by collecting into Box<[T]> instead, which additionally reduces\nthe size of the long-lived struct.

\n\n
static LONG_LIVED: Mutex<Vec<Vec<u16>>> = Mutex::new(Vec::new());\n\nfor i in 0..10 {\n    let big_temporary: Vec<u16> = (0..1024).collect();\n    // discard most items\n    let mut result: Vec<_> = big_temporary.into_iter().filter(|i| i % 100 == 0).collect();\n    // without this a lot of unused capacity might be moved into the global\n    result.shrink_to_fit();\n    LONG_LIVED.lock().unwrap().push(result);\n}
\n
source§

fn from_iter<I>(iter: I) -> Vec<T>
where\n I: IntoIterator<Item = T>,

Creates a value from an iterator. Read more
","FromIterator","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
§

impl<T> FromParallelIterator<T> for Vec<T>
where\n T: Send,

Collects items from a parallel iterator into a vector.

\n
§

fn from_par_iter<I>(par_iter: I) -> Vec<T>
where\n I: IntoParallelIterator<Item = T>,

Creates an instance of the collection from the parallel iterator par_iter. Read more
","FromParallelIterator","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Hash for Vec<T, A>
where\n T: Hash,\n A: Allocator,

The hash of a vector is the same as that of the corresponding slice,\nas required by the core::borrow::Borrow implementation.

\n\n
use std::hash::BuildHasher;\n\nlet b = std::hash::RandomState::new();\nlet v: Vec<u8> = vec![0xa8, 0x3c, 0x09];\nlet s: &[u8] = &[0xa8, 0x3c, 0x09];\nassert_eq!(b.hash_one(v), b.hash_one(s));
\n
source§

fn hash<H>(&self, state: &mut H)
where\n H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, I, A> Index<I> for Vec<T, A>
where\n I: SliceIndex<[T]>,\n A: Allocator,

source§

type Output = <I as SliceIndex<[T]>>::Output

The returned type after indexing.
source§

fn index(&self, index: I) -> &<Vec<T, A> as Index<I>>::Output

Performs the indexing (container[index]) operation. Read more
","Index","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, I, A> IndexMut<I> for Vec<T, A>
where\n I: SliceIndex<[T]>,\n A: Allocator,

source§

fn index_mut(&mut self, index: I) -> &mut <Vec<T, A> as Index<I>>::Output

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<'de, T, E> IntoDeserializer<'de, E> for Vec<T>
where\n T: IntoDeserializer<'de, E>,\n E: Error,

source§

type Deserializer = SeqDeserializer<<Vec<T> as IntoIterator>::IntoIter, E>

The type of the deserializer being converted into.
source§

fn into_deserializer(self) -> <Vec<T> as IntoDeserializer<'de, E>>::Deserializer

Convert this value into a deserializer.
","IntoDeserializer<'de, E>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> IntoIterator for Vec<T, A>
where\n A: Allocator,

source§

fn into_iter(self) -> <Vec<T, A> as IntoIterator>::IntoIter

Creates a consuming iterator, that is, one that moves each value out of\nthe vector (from start to end). The vector cannot be used after calling\nthis.

\n
§Examples
\n
let v = vec![\"a\".to_string(), \"b\".to_string()];\nlet mut v_iter = v.into_iter();\n\nlet first_element: Option<String> = v_iter.next();\n\nassert_eq!(first_element, Some(\"a\".to_string()));\nassert_eq!(v_iter.next(), Some(\"b\".to_string()));\nassert_eq!(v_iter.next(), None);
\n
source§

type Item = T

The type of the elements being iterated over.
source§

type IntoIter = IntoIter<T, A>

Which kind of iterator are we turning this into?
","IntoIterator","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
§

impl<T> IntoParallelIterator for Vec<T>
where\n T: Send,

§

type Item = T

The type of item that the parallel iterator will produce.
§

type Iter = IntoIter<T>

The parallel iterator type that will be created.
§

fn into_par_iter(self) -> <Vec<T> as IntoParallelIterator>::Iter

Converts self into a parallel iterator. Read more
","IntoParallelIterator","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Ord for Vec<T, A>
where\n T: Ord,\n A: Allocator,

Implements ordering of vectors, lexicographically.

\n
source§

fn cmp(&self, other: &Vec<T, A>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
§

impl<'a, T> ParallelExtend<&'a T> for Vec<T>
where\n T: 'a + Copy + Send + Sync,

Extends a vector with copied items from a parallel iterator.

\n
§

fn par_extend<I>(&mut self, par_iter: I)
where\n I: IntoParallelIterator<Item = &'a T>,

Extends an instance of the collection with the elements drawn\nfrom the parallel iterator par_iter. Read more
","ParallelExtend<&'a T>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
§

impl<T> ParallelExtend<T> for Vec<T>
where\n T: Send,

Extends a vector with items from a parallel iterator.

\n
§

fn par_extend<I>(&mut self, par_iter: I)
where\n I: IntoParallelIterator<Item = T>,

Extends an instance of the collection with the elements drawn\nfrom the parallel iterator par_iter. Read more
","ParallelExtend","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&[U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U]) -> bool

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

fn ne(&self, other: &&[U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&[U]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<&[U; N]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U; N]) -> bool

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

fn ne(&self, other: &&[U; N]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&[U; N]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&mut [U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&mut [U]) -> bool

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

fn ne(&self, other: &&mut [U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&mut [U]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.48.0 · source§

impl<T, U, A> PartialEq<[U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U]) -> bool

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

fn ne(&self, other: &[U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<[U]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<[U; N]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U; N]) -> bool

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

fn ne(&self, other: &[U; N]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<[U; N]>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, U, A1, A2> PartialEq<Vec<U, A2>> for Vec<T, A1>
where\n A1: Allocator,\n A2: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &Vec<U, A2>) -> bool

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

fn ne(&self, other: &Vec<U, A2>) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A1, A2> PartialOrd<Vec<T, A2>> for Vec<T, A1>
where\n T: PartialOrd,\n A1: Allocator,\n A2: Allocator,

Implements comparison of vectors, lexicographically.

\n
source§

fn partial_cmp(&self, other: &Vec<T, A2>) -> Option<Ordering>

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

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

Tests less than or equal to (for self and other) and is used by the\n<= operator. Read more
1.0.0 · source§

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

Tests greater than (for self and other) and is used by the >\noperator. Read more
1.0.0 · source§

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

Tests greater than or equal to (for self and other) and is used by\nthe >= operator. Read more
","PartialOrd>","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<T> Serialize for Vec<T>
where\n T: Serialize,

source§

fn serialize<S>(\n &self,\n serializer: S,\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where\n S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
§

impl<T> Shuffleable for Vec<T>

§

fn shuffle_len(&self) -> usize

Return the length of this collection.
§

fn shuffle_swap(&mut self, a: usize, b: usize)

Swap the elements at the given indices.
","Shuffleable","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
§

impl<T> Strategy for Vec<T>
where\n T: Strategy,

§

type Tree = VecValueTree<<T as Strategy>::Tree>

The value tree generated by this Strategy.
§

type Value = Vec<<T as Strategy>::Value>

The type of value used by functions under test generated by this Strategy. Read more
§

fn new_tree(\n &self,\n runner: &mut TestRunner,\n) -> Result<<Vec<T> as Strategy>::Tree, Reason>

Generate a new value tree from the given runner. Read more
§

fn prop_map<O, F>(self, fun: F) -> Map<Self, F>
where\n O: Debug,\n F: Fn(Self::Value) -> O,\n Self: Sized,

Returns a strategy which produces values transformed by the function\nfun. Read more
§

fn prop_map_into<O>(self) -> MapInto<Self, O>
where\n O: Debug,\n Self: Sized,\n Self::Value: Into<O>,

Returns a strategy which produces values of type O by transforming\nSelf with Into<O>. Read more
§

fn prop_perturb<O, F>(self, fun: F) -> Perturb<Self, F>
where\n O: Debug,\n F: Fn(Self::Value, TestRng) -> O,\n Self: Sized,

Returns a strategy which produces values transformed by the function\nfun, which is additionally given a random number generator. Read more
§

fn prop_flat_map<S, F>(self, fun: F) -> Flatten<Map<Self, F>>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Maps values produced by this strategy into new strategies and picks\nvalues from those strategies. Read more
§

fn prop_ind_flat_map<S, F>(self, fun: F) -> IndFlatten<Map<Self, F>>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Maps values produced by this strategy into new strategies and picks\nvalues from those strategies while considering the new strategies to be\nindependent. Read more
§

fn prop_ind_flat_map2<S, F>(self, fun: F) -> IndFlattenMap<Self, F>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Similar to prop_ind_flat_map(), but produces 2-tuples with the input\ngenerated from self in slot 0 and the derived strategy in slot 1. Read more
§

fn prop_filter<R, F>(self, whence: R, fun: F) -> Filter<Self, F>
where\n R: Into<Reason>,\n F: Fn(&Self::Value) -> bool,\n Self: Sized,

Returns a strategy which only produces values accepted by fun. Read more
§

fn prop_filter_map<F, O>(\n self,\n whence: impl Into<Reason>,\n fun: F,\n) -> FilterMap<Self, F>
where\n F: Fn(Self::Value) -> Option<O>,\n O: Debug,\n Self: Sized,

Returns a strategy which only produces transformed values where fun\nreturns Some(value) and rejects those where fun returns None. Read more
§

fn prop_union(self, other: Self) -> Union<Self>
where\n Self: Sized,

Returns a strategy which picks uniformly from self and other. Read more
§

fn prop_recursive<R, F>(\n self,\n depth: u32,\n desired_size: u32,\n expected_branch_size: u32,\n recurse: F,\n) -> Recursive<Self::Value, F>
where\n R: Strategy<Value = Self::Value> + 'static,\n F: Fn(BoxedStrategy<Self::Value>) -> R,\n Self: Sized + 'static,

Generate a recursive structure with self items as leaves. Read more
§

fn boxed(self) -> BoxedStrategy<Self::Value>
where\n Self: Sized + 'static,

Erases the type of this Strategy so it can be passed around as a\nsimple trait object. Read more
§

fn no_shrink(self) -> NoShrink<Self>
where\n Self: Sized,

Wraps this strategy to prevent values from being subject to shrinking. Read more
","Strategy","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<T> Vec<T>

1.0.0 (const: 1.39.0) · source

pub const fn new() -> Vec<T>

Constructs a new, empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
§Examples
\n
let mut vec: Vec<i32> = Vec::new();
\n
1.0.0 · source

pub fn with_capacity(capacity: usize) -> Vec<T>

Constructs a new, empty Vec<T> with at least the specified capacity.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<()>::with_capacity(10);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
source

pub fn try_with_capacity(capacity: usize) -> Result<Vec<T>, TryReserveError>

🔬This is a nightly-only experimental API. (try_with_capacity)

Constructs a new, empty Vec<T> with at least the specified capacity.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n
§Errors
\n

Returns an error if the capacity exceeds isize::MAX bytes,\nor if the allocator reports allocation failure.

\n
1.0.0 · source

pub unsafe fn from_raw_parts(\n ptr: *mut T,\n length: usize,\n capacity: usize,\n) -> Vec<T>

Creates a Vec<T> directly from a pointer, a length, and a capacity.

\n
§Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must have been allocated using the global allocator, such as via\nthe alloc::alloc function.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to be the capacity that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is normally not safe\nto build a Vec<u8> from a pointer to a C char array with length\nsize_t, doing so is only safe if the array was initially allocated by\na Vec or String.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1. To avoid\nthese issues, it is often preferable to do casting/transmuting using\nslice::from_raw_parts instead.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
§Examples
\n
use std::ptr;\nuse std::mem;\n\nlet v = vec![1, 2, 3];\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts(p, len, cap);\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
use std::alloc::{alloc, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect(\"overflow cannot happen\");\n\n    let vec = unsafe {\n        let mem = alloc(layout).cast::<u32>();\n        if mem.is_null() {\n            return;\n        }\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts(mem, 1, 16)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
",0,"algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<T, A> Vec<T, A>
where\n T: Clone,\n A: Allocator,

1.5.0 · source

pub fn resize(&mut self, new_len: usize, value: T)

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with value.\nIf new_len is less than len, the Vec is simply truncated.

\n

This method requires T to implement Clone,\nin order to be able to clone the passed value.\nIf you need more flexibility (or want to rely on Default instead of\nClone), use Vec::resize_with.\nIf you only need to resize to a smaller size, use Vec::truncate.

\n
§Examples
\n
let mut vec = vec![\"hello\"];\nvec.resize(3, \"world\");\nassert_eq!(vec, [\"hello\", \"world\", \"world\"]);\n\nlet mut vec = vec![1, 2, 3, 4];\nvec.resize(2, 0);\nassert_eq!(vec, [1, 2]);
\n
1.6.0 · source

pub fn extend_from_slice(&mut self, other: &[T])

Clones and appends all elements in a slice to the Vec.

\n

Iterates over the slice other, clones each element, and then appends\nit to this Vec. The other slice is traversed in-order.

\n

Note that this function is same as extend except that it is\nspecialized to work with slices instead. If and when Rust gets\nspecialization this function will likely be deprecated (but still\navailable).

\n
§Examples
\n
let mut vec = vec![1];\nvec.extend_from_slice(&[2, 3, 4]);\nassert_eq!(vec, [1, 2, 3, 4]);
\n
1.53.0 · source

pub fn extend_from_within<R>(&mut self, src: R)
where\n R: RangeBounds<usize>,

Copies elements from src range to the end of the vector.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Examples
\n
let mut vec = vec![0, 1, 2, 3, 4];\n\nvec.extend_from_within(2..);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4]);\n\nvec.extend_from_within(..2);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1]);\n\nvec.extend_from_within(4..8);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1, 4, 2, 3, 4]);
\n
",0,"algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<T, A> Vec<T, A>
where\n T: PartialEq,\n A: Allocator,

1.0.0 · source

pub fn dedup(&mut self)

Removes consecutive repeated elements in the vector according to the\nPartialEq trait implementation.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![1, 2, 2, 3, 2];\n\nvec.dedup();\n\nassert_eq!(vec, [1, 2, 3, 2]);
\n
",0,"algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<T, A> Vec<T, A>
where\n A: Allocator,

1.21.0 · source

pub fn splice<R, I>(\n &mut self,\n range: R,\n replace_with: I,\n) -> Splice<'_, <I as IntoIterator>::IntoIter, A>
where\n R: RangeBounds<usize>,\n I: IntoIterator<Item = T>,

Creates a splicing iterator that replaces the specified range in the vector\nwith the given replace_with iterator and yields the removed items.\nreplace_with does not need to be the same length as range.

\n

range is removed even if the iterator is not consumed until the end.

\n

It is unspecified how many elements are removed from the vector\nif the Splice value is leaked.

\n

The input iterator replace_with is only consumed when the Splice value is dropped.

\n

This is optimal if:

\n
    \n
  • The tail (elements in the vector after range) is empty,
  • \n
  • or replace_with yields fewer or equal elements than range’s length
  • \n
  • or the lower bound of its size_hint() is exact.
  • \n
\n

Otherwise, a temporary vector is allocated and the tail is moved twice.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Examples
\n
let mut v = vec![1, 2, 3, 4];\nlet new = [7, 8, 9];\nlet u: Vec<_> = v.splice(1..3, new).collect();\nassert_eq!(v, &[1, 7, 8, 9, 4]);\nassert_eq!(u, &[2, 3]);
\n
source

pub fn extract_if<F>(&mut self, filter: F) -> ExtractIf<'_, T, F, A>
where\n F: FnMut(&mut T) -> bool,

🔬This is a nightly-only experimental API. (extract_if)

Creates an iterator which uses a closure to determine if an element should be removed.

\n

If the closure returns true, then the element is removed and yielded.\nIf the closure returns false, the element will remain in the vector and will not be yielded\nby the iterator.

\n

If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

\n

Using this method is equivalent to the following code:

\n\n
let mut i = 0;\nwhile i < vec.len() {\n    if some_predicate(&mut vec[i]) {\n        let val = vec.remove(i);\n        // your code here\n    } else {\n        i += 1;\n    }\n}\n
\n

But extract_if is easier to use. extract_if is also more efficient,\nbecause it can backshift the elements of the array in bulk.

\n

Note that extract_if also lets you mutate every element in the filter closure,\nregardless of whether you choose to keep or remove it.

\n
§Examples
\n

Splitting an array into evens and odds, reusing the original allocation:

\n\n
#![feature(extract_if)]\nlet mut numbers = vec![1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15];\n\nlet evens = numbers.extract_if(|x| *x % 2 == 0).collect::<Vec<_>>();\nlet odds = numbers;\n\nassert_eq!(evens, vec![2, 4, 6, 8, 14]);\nassert_eq!(odds, vec![1, 3, 5, 9, 11, 13, 15]);
\n
",0,"algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<T, A> Vec<T, A>
where\n A: Allocator,

source

pub const fn new_in(alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A>.

\n

The vector will not allocate until elements are pushed onto it.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec: Vec<i32, _> = Vec::new_in(System);
\n
source

pub fn with_capacity_in(capacity: usize, alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A> with at least the specified capacity\nwith the provided allocator.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T, A> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec = Vec::with_capacity_in(10, System);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<(), System>::with_capacity_in(10, System);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
source

pub fn try_with_capacity_in(\n capacity: usize,\n alloc: A,\n) -> Result<Vec<T, A>, TryReserveError>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A> with at least the specified capacity\nwith the provided allocator.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n
§Errors
\n

Returns an error if the capacity exceeds isize::MAX bytes,\nor if the allocator reports allocation failure.

\n
source

pub unsafe fn from_raw_parts_in(\n ptr: *mut T,\n length: usize,\n capacity: usize,\n alloc: A,\n) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Creates a Vec<T, A> directly from a pointer, a length, a capacity,\nand an allocator.

\n
§Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must be currently allocated via the given allocator alloc.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to fit the layout size that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T, A>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is not safe\nto build a Vec<u8> from a pointer to a C char array with length size_t.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nuse std::ptr;\nuse std::mem;\n\nlet mut v = Vec::with_capacity_in(3, System);\nv.push(1);\nv.push(2);\nv.push(3);\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\nlet alloc = v.allocator();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts_in(p, len, cap, alloc.clone());\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
#![feature(allocator_api)]\n\nuse std::alloc::{AllocError, Allocator, Global, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect(\"overflow cannot happen\");\n\n    let vec = unsafe {\n        let mem = match Global.allocate(layout) {\n            Ok(mem) => mem.cast::<u32>().as_ptr(),\n            Err(AllocError) => return,\n        };\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts_in(mem, 1, 16, Global)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
source

pub fn into_raw_parts(self) -> (*mut T, usize, usize)

🔬This is a nightly-only experimental API. (vec_into_raw_parts)

Decomposes a Vec<T> into its raw components: (pointer, length, capacity).

\n

Returns the raw pointer to the underlying data, the length of\nthe vector (in elements), and the allocated capacity of the\ndata (in elements). These are the same arguments in the same\norder as the arguments to from_raw_parts.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts function, allowing\nthe destructor to perform the cleanup.

\n
§Examples
\n
#![feature(vec_into_raw_parts)]\nlet v: Vec<i32> = vec![-1, 0, 1];\n\nlet (ptr, len, cap) = v.into_raw_parts();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts(ptr, len, cap)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
source

pub fn into_raw_parts_with_alloc(self) -> (*mut T, usize, usize, A)

🔬This is a nightly-only experimental API. (allocator_api)

Decomposes a Vec<T> into its raw components: (pointer, length, capacity, allocator).

\n

Returns the raw pointer to the underlying data, the length of the vector (in elements),\nthe allocated capacity of the data (in elements), and the allocator. These are the same\narguments in the same order as the arguments to from_raw_parts_in.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts_in function, allowing\nthe destructor to perform the cleanup.

\n
§Examples
\n
#![feature(allocator_api, vec_into_raw_parts)]\n\nuse std::alloc::System;\n\nlet mut v: Vec<i32, System> = Vec::new_in(System);\nv.push(-1);\nv.push(0);\nv.push(1);\n\nlet (ptr, len, cap, alloc) = v.into_raw_parts_with_alloc();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts_in(ptr, len, cap, alloc)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
1.0.0 · source

pub fn capacity(&self) -> usize

Returns the total number of elements the vector can hold without\nreallocating.

\n
§Examples
\n
let mut vec: Vec<i32> = Vec::with_capacity(10);\nvec.push(42);\nassert!(vec.capacity() >= 10);
\n
1.0.0 · source

pub fn reserve(&mut self, additional: usize)

Reserves capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to\nspeculatively avoid frequent reallocations. After calling reserve,\ncapacity will be greater than or equal to self.len() + additional.\nDoes nothing if capacity is already sufficient.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1];\nvec.reserve(10);\nassert!(vec.capacity() >= 11);
\n
1.0.0 · source

pub fn reserve_exact(&mut self, additional: usize)

Reserves the minimum capacity for at least additional more elements to\nbe inserted in the given Vec<T>. Unlike reserve, this will not\ndeliberately over-allocate to speculatively avoid frequent allocations.\nAfter calling reserve_exact, capacity will be greater than or equal to\nself.len() + additional. Does nothing if the capacity is already\nsufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer reserve if future insertions are expected.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1];\nvec.reserve_exact(10);\nassert!(vec.capacity() >= 11);
\n
1.57.0 · source

pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>

Tries to reserve capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to speculatively avoid\nfrequent reallocations. After calling try_reserve, capacity will be\ngreater than or equal to self.len() + additional if it returns\nOk(()). Does nothing if capacity is already sufficient. This method\npreserves the contents even if an error occurs.

\n
§Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
§Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.57.0 · source

pub fn try_reserve_exact(\n &mut self,\n additional: usize,\n) -> Result<(), TryReserveError>

Tries to reserve the minimum capacity for at least additional\nelements to be inserted in the given Vec<T>. Unlike try_reserve,\nthis will not deliberately over-allocate to speculatively avoid frequent\nallocations. After calling try_reserve_exact, capacity will be greater\nthan or equal to self.len() + additional if it returns Ok(()).\nDoes nothing if the capacity is already sufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer try_reserve if future insertions are expected.

\n
§Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
§Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve_exact(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.0.0 · source

pub fn shrink_to_fit(&mut self)

Shrinks the capacity of the vector as much as possible.

\n

The behavior of this method depends on the allocator, which may either shrink the vector\nin-place or reallocate. The resulting vector might still have some excess capacity, just as\nis the case for with_capacity. See Allocator::shrink for more details.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to_fit();\nassert!(vec.capacity() >= 3);
\n
1.56.0 · source

pub fn shrink_to(&mut self, min_capacity: usize)

Shrinks the capacity of the vector with a lower bound.

\n

The capacity will remain at least as large as both the length\nand the supplied value.

\n

If the current capacity is less than the lower limit, this is a no-op.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to(4);\nassert!(vec.capacity() >= 4);\nvec.shrink_to(0);\nassert!(vec.capacity() >= 3);
\n
1.0.0 · source

pub fn into_boxed_slice(self) -> Box<[T], A>

Converts the vector into Box<[T]>.

\n

Before doing the conversion, this method discards excess capacity like shrink_to_fit.

\n
§Examples
\n
let v = vec![1, 2, 3];\n\nlet slice = v.into_boxed_slice();
\n

Any excess capacity is removed:

\n\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\n\nassert!(vec.capacity() >= 10);\nlet slice = vec.into_boxed_slice();\nassert_eq!(slice.into_vec().capacity(), 3);
\n
1.0.0 · source

pub fn truncate(&mut self, len: usize)

Shortens the vector, keeping the first len elements and dropping\nthe rest.

\n

If len is greater or equal to the vector’s current length, this has\nno effect.

\n

The drain method can emulate truncate, but causes the excess\nelements to be returned instead of dropped.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
§Examples
\n

Truncating a five element vector to two elements:

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nvec.truncate(2);\nassert_eq!(vec, [1, 2]);
\n

No truncation occurs when len is greater than the vector’s current\nlength:

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(8);\nassert_eq!(vec, [1, 2, 3]);
\n

Truncating when len == 0 is equivalent to calling the clear\nmethod.

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(0);\nassert_eq!(vec, []);
\n
1.7.0 · source

pub fn as_slice(&self) -> &[T]

Extracts a slice containing the entire vector.

\n

Equivalent to &s[..].

\n
§Examples
\n
use std::io::{self, Write};\nlet buffer = vec![1, 2, 3, 5, 8];\nio::sink().write(buffer.as_slice()).unwrap();
\n
1.7.0 · source

pub fn as_mut_slice(&mut self) -> &mut [T]

Extracts a mutable slice of the entire vector.

\n

Equivalent to &mut s[..].

\n
§Examples
\n
use std::io::{self, Read};\nlet mut buffer = vec![0; 3];\nio::repeat(0b101).read_exact(buffer.as_mut_slice()).unwrap();
\n
1.37.0 · source

pub fn as_ptr(&self) -> *const T

Returns a raw pointer to the vector’s buffer, or a dangling raw pointer\nvalid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up dangling.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

The caller must also ensure that the memory the pointer (non-transitively) points to\nis never written to (except inside an UnsafeCell) using this pointer or any pointer\nderived from it. If you need to mutate the contents of the slice, use as_mut_ptr.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize mutable references to the slice,\nor mutable references to specific elements you are planning on accessing through this pointer,\nas well as writing to those elements, may still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
§Examples
\n
let x = vec![1, 2, 4];\nlet x_ptr = x.as_ptr();\n\nunsafe {\n    for i in 0..x.len() {\n        assert_eq!(*x_ptr.add(i), 1 << i);\n    }\n}
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0, 1, 2];\n    let ptr1 = v.as_ptr();\n    let _ = ptr1.read();\n    let ptr2 = v.as_mut_ptr().offset(2);\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`\n    // because it mutated a different element:\n    let _ = ptr1.read();\n}
\n
1.37.0 · source

pub fn as_mut_ptr(&mut self) -> *mut T

Returns a raw mutable pointer to the vector’s buffer, or a dangling\nraw pointer valid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up dangling.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize references to the slice,\nor references to specific elements you are planning on accessing through this pointer,\nmay still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
§Examples
\n
// Allocate vector big enough for 4 elements.\nlet size = 4;\nlet mut x: Vec<i32> = Vec::with_capacity(size);\nlet x_ptr = x.as_mut_ptr();\n\n// Initialize elements via raw pointer writes, then set length.\nunsafe {\n    for i in 0..size {\n        *x_ptr.add(i) = i as i32;\n    }\n    x.set_len(size);\n}\nassert_eq!(&*x, &[0, 1, 2, 3]);
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0];\n    let ptr1 = v.as_mut_ptr();\n    ptr1.write(1);\n    let ptr2 = v.as_mut_ptr();\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`:\n    ptr1.write(3);\n}
\n
source

pub fn allocator(&self) -> &A

🔬This is a nightly-only experimental API. (allocator_api)

Returns a reference to the underlying allocator.

\n
1.0.0 · source

pub unsafe fn set_len(&mut self, new_len: usize)

Forces the length of the vector to new_len.

\n

This is a low-level operation that maintains none of the normal\ninvariants of the type. Normally changing the length of a vector\nis done using one of the safe operations instead, such as\ntruncate, resize, extend, or clear.

\n
§Safety
\n
    \n
  • new_len must be less than or equal to capacity().
  • \n
  • The elements at old_len..new_len must be initialized.
  • \n
\n
§Examples
\n

This method can be useful for situations in which the vector\nis serving as a buffer for other code, particularly over FFI:

\n\n
pub fn get_dictionary(&self) -> Option<Vec<u8>> {\n    // Per the FFI method's docs, \"32768 bytes is always enough\".\n    let mut dict = Vec::with_capacity(32_768);\n    let mut dict_length = 0;\n    // SAFETY: When `deflateGetDictionary` returns `Z_OK`, it holds that:\n    // 1. `dict_length` elements were initialized.\n    // 2. `dict_length` <= the capacity (32_768)\n    // which makes `set_len` safe to call.\n    unsafe {\n        // Make the FFI call...\n        let r = deflateGetDictionary(self.strm, dict.as_mut_ptr(), &mut dict_length);\n        if r == Z_OK {\n            // ...and update the length to what was initialized.\n            dict.set_len(dict_length);\n            Some(dict)\n        } else {\n            None\n        }\n    }\n}
\n

While the following example is sound, there is a memory leak since\nthe inner vectors were not freed prior to the set_len call:

\n\n
let mut vec = vec![vec![1, 0, 0],\n                   vec![0, 1, 0],\n                   vec![0, 0, 1]];\n// SAFETY:\n// 1. `old_len..0` is empty so no elements need to be initialized.\n// 2. `0 <= capacity` always holds whatever `capacity` is.\nunsafe {\n    vec.set_len(0);\n}
\n

Normally, here, one would use clear instead to correctly drop\nthe contents and thus not leak memory.

\n
1.0.0 · source

pub fn swap_remove(&mut self, index: usize) -> T

Removes an element from the vector and returns it.

\n

The removed element is replaced by the last element of the vector.

\n

This does not preserve ordering of the remaining elements, but is O(1).\nIf you need to preserve the element order, use remove instead.

\n
§Panics
\n

Panics if index is out of bounds.

\n
§Examples
\n
let mut v = vec![\"foo\", \"bar\", \"baz\", \"qux\"];\n\nassert_eq!(v.swap_remove(1), \"bar\");\nassert_eq!(v, [\"foo\", \"qux\", \"baz\"]);\n\nassert_eq!(v.swap_remove(0), \"foo\");\nassert_eq!(v, [\"baz\", \"qux\"]);
\n
1.0.0 · source

pub fn insert(&mut self, index: usize, element: T)

Inserts an element at position index within the vector, shifting all\nelements after it to the right.

\n
§Panics
\n

Panics if index > len.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nvec.insert(1, 4);\nassert_eq!(vec, [1, 4, 2, 3]);\nvec.insert(4, 5);\nassert_eq!(vec, [1, 4, 2, 3, 5]);
\n
§Time complexity
\n

Takes O(Vec::len) time. All items after the insertion index must be\nshifted to the right. In the worst case, all elements are shifted when\nthe insertion index is 0.

\n
1.0.0 · source

pub fn remove(&mut self, index: usize) -> T

Removes and returns the element at position index within the vector,\nshifting all elements after it to the left.

\n

Note: Because this shifts over the remaining elements, it has a\nworst-case performance of O(n). If you don’t need the order of elements\nto be preserved, use swap_remove instead. If you’d like to remove\nelements from the beginning of the Vec, consider using\nVecDeque::pop_front instead.

\n
§Panics
\n

Panics if index is out of bounds.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\nassert_eq!(v.remove(1), 2);\nassert_eq!(v, [1, 3]);
\n
1.0.0 · source

pub fn retain<F>(&mut self, f: F)
where\n F: FnMut(&T) -> bool,

Retains only the elements specified by the predicate.

\n

In other words, remove all elements e for which f(&e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
§Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain(|&x| x % 2 == 0);\nassert_eq!(vec, [2, 4]);
\n

Because the elements are visited exactly once in the original order,\nexternal state may be used to decide which elements to keep.

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nlet keep = [false, true, true, false, true];\nlet mut iter = keep.iter();\nvec.retain(|_| *iter.next().unwrap());\nassert_eq!(vec, [2, 3, 5]);
\n
1.61.0 · source

pub fn retain_mut<F>(&mut self, f: F)
where\n F: FnMut(&mut T) -> bool,

Retains only the elements specified by the predicate, passing a mutable reference to it.

\n

In other words, remove all elements e such that f(&mut e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
§Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain_mut(|x| if *x <= 3 {\n    *x += 1;\n    true\n} else {\n    false\n});\nassert_eq!(vec, [2, 3, 4]);
\n
1.16.0 · source

pub fn dedup_by_key<F, K>(&mut self, key: F)
where\n F: FnMut(&mut T) -> K,\n K: PartialEq,

Removes all but the first of consecutive elements in the vector that resolve to the same\nkey.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![10, 20, 21, 30, 20];\n\nvec.dedup_by_key(|i| *i / 10);\n\nassert_eq!(vec, [10, 20, 30, 20]);
\n
1.16.0 · source

pub fn dedup_by<F>(&mut self, same_bucket: F)
where\n F: FnMut(&mut T, &mut T) -> bool,

Removes all but the first of consecutive elements in the vector satisfying a given equality\nrelation.

\n

The same_bucket function is passed references to two elements from the vector and\nmust determine if the elements compare equal. The elements are passed in opposite order\nfrom their order in the slice, so if same_bucket(a, b) returns true, a is removed.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![\"foo\", \"bar\", \"Bar\", \"baz\", \"bar\"];\n\nvec.dedup_by(|a, b| a.eq_ignore_ascii_case(b));\n\nassert_eq!(vec, [\"foo\", \"bar\", \"baz\", \"bar\"]);
\n
1.0.0 · source

pub fn push(&mut self, value: T)

Appends an element to the back of a collection.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1, 2];\nvec.push(3);\nassert_eq!(vec, [1, 2, 3]);
\n
§Time complexity
\n

Takes amortized O(1) time. If the vector’s length would exceed its\ncapacity after the push, O(capacity) time is taken to copy the\nvector’s elements to a larger allocation. This expensive operation is\noffset by the capacity O(1) insertions it allows.

\n
source

pub fn push_within_capacity(&mut self, value: T) -> Result<(), T>

🔬This is a nightly-only experimental API. (vec_push_within_capacity)

Appends an element if there is sufficient spare capacity, otherwise an error is returned\nwith the element.

\n

Unlike push this method will not reallocate when there’s insufficient capacity.\nThe caller should use reserve or try_reserve to ensure that there is enough capacity.

\n
§Examples
\n

A manual, panic-free alternative to FromIterator:

\n\n
#![feature(vec_push_within_capacity)]\n\nuse std::collections::TryReserveError;\nfn from_iter_fallible<T>(iter: impl Iterator<Item=T>) -> Result<Vec<T>, TryReserveError> {\n    let mut vec = Vec::new();\n    for value in iter {\n        if let Err(value) = vec.push_within_capacity(value) {\n            vec.try_reserve(1)?;\n            // this cannot fail, the previous line either returned or added at least 1 free slot\n            let _ = vec.push_within_capacity(value);\n        }\n    }\n    Ok(vec)\n}\nassert_eq!(from_iter_fallible(0..100), Ok(Vec::from_iter(0..100)));
\n
§Time complexity
\n

Takes O(1) time.

\n
1.0.0 · source

pub fn pop(&mut self) -> Option<T>

Removes the last element from a vector and returns it, or None if it\nis empty.

\n

If you’d like to pop the first element, consider using\nVecDeque::pop_front instead.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nassert_eq!(vec.pop(), Some(3));\nassert_eq!(vec, [1, 2]);
\n
§Time complexity
\n

Takes O(1) time.

\n
source

pub fn pop_if<F>(&mut self, f: F) -> Option<T>
where\n F: FnOnce(&mut T) -> bool,

🔬This is a nightly-only experimental API. (vec_pop_if)

Removes and returns the last element in a vector if the predicate\nreturns true, or None if the predicate returns false or the vector\nis empty.

\n
§Examples
\n
#![feature(vec_pop_if)]\n\nlet mut vec = vec![1, 2, 3, 4];\nlet pred = |x: &mut i32| *x % 2 == 0;\n\nassert_eq!(vec.pop_if(pred), Some(4));\nassert_eq!(vec, [1, 2, 3]);\nassert_eq!(vec.pop_if(pred), None);
\n
1.4.0 · source

pub fn append(&mut self, other: &mut Vec<T, A>)

Moves all the elements of other into self, leaving other empty.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nlet mut vec2 = vec![4, 5, 6];\nvec.append(&mut vec2);\nassert_eq!(vec, [1, 2, 3, 4, 5, 6]);\nassert_eq!(vec2, []);
\n
1.6.0 · source

pub fn drain<R>(&mut self, range: R) -> Drain<'_, T, A>
where\n R: RangeBounds<usize>,

Removes the specified range from the vector in bulk, returning all\nremoved elements as an iterator. If the iterator is dropped before\nbeing fully consumed, it drops the remaining removed elements.

\n

The returned iterator keeps a mutable borrow on the vector to optimize\nits implementation.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Leaking
\n

If the returned iterator goes out of scope without being dropped (due to\nmem::forget, for example), the vector may have lost and leaked\nelements arbitrarily, including elements outside the range.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\nlet u: Vec<_> = v.drain(1..).collect();\nassert_eq!(v, &[1]);\nassert_eq!(u, &[2, 3]);\n\n// A full range clears the vector, like `clear()` does\nv.drain(..);\nassert_eq!(v, &[]);
\n
1.0.0 · source

pub fn clear(&mut self)

Clears the vector, removing all values.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\n\nv.clear();\n\nassert!(v.is_empty());
\n
1.0.0 · source

pub fn len(&self) -> usize

Returns the number of elements in the vector, also referred to\nas its ‘length’.

\n
§Examples
\n
let a = vec![1, 2, 3];\nassert_eq!(a.len(), 3);
\n
1.0.0 · source

pub fn is_empty(&self) -> bool

Returns true if the vector contains no elements.

\n
§Examples
\n
let mut v = Vec::new();\nassert!(v.is_empty());\n\nv.push(1);\nassert!(!v.is_empty());
\n
1.4.0 · source

pub fn split_off(&mut self, at: usize) -> Vec<T, A>
where\n A: Clone,

Splits the collection into two at the given index.

\n

Returns a newly allocated vector containing the elements in the range\n[at, len). After the call, the original vector will be left containing\nthe elements [0, at) with its previous capacity unchanged.

\n
    \n
  • If you want to take ownership of the entire contents and capacity of\nthe vector, see mem::take or mem::replace.
  • \n
  • If you don’t need the returned vector at all, see Vec::truncate.
  • \n
  • If you want to take ownership of an arbitrary subslice, or you don’t\nnecessarily want to store the removed items in a vector, see Vec::drain.
  • \n
\n
§Panics
\n

Panics if at > len.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nlet vec2 = vec.split_off(1);\nassert_eq!(vec, [1]);\nassert_eq!(vec2, [2, 3]);
\n
1.33.0 · source

pub fn resize_with<F>(&mut self, new_len: usize, f: F)
where\n F: FnMut() -> T,

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with the result of\ncalling the closure f. The return values from f will end up\nin the Vec in the order they have been generated.

\n

If new_len is less than len, the Vec is simply truncated.

\n

This method uses a closure to create new values on every push. If\nyou’d rather Clone a given value, use Vec::resize. If you\nwant to use the Default trait to generate values, you can\npass Default::default as the second argument.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nvec.resize_with(5, Default::default);\nassert_eq!(vec, [1, 2, 3, 0, 0]);\n\nlet mut vec = vec![];\nlet mut p = 1;\nvec.resize_with(4, || { p *= 2; p });\nassert_eq!(vec, [2, 4, 8, 16]);
\n
1.47.0 · source

pub fn leak<'a>(self) -> &'a mut [T]
where\n A: 'a,

Consumes and leaks the Vec, returning a mutable reference to the contents,\n&'a mut [T].

\n

Note that the type T must outlive the chosen lifetime 'a. If the type\nhas only static references, or none at all, then this may be chosen to be\n'static.

\n

As of Rust 1.57, this method does not reallocate or shrink the Vec,\nso the leaked allocation may include unused capacity that is not part\nof the returned slice.

\n

This function is mainly useful for data that lives for the remainder of\nthe program’s life. Dropping the returned reference will cause a memory\nleak.

\n
§Examples
\n

Simple usage:

\n\n
let x = vec![1, 2, 3];\nlet static_ref: &'static mut [usize] = x.leak();\nstatic_ref[0] += 1;\nassert_eq!(static_ref, &[2, 2, 3]);
\n
1.60.0 · source

pub fn spare_capacity_mut(&mut self) -> &mut [MaybeUninit<T>]

Returns the remaining spare capacity of the vector as a slice of\nMaybeUninit<T>.

\n

The returned slice can be used to fill the vector with data (e.g. by\nreading from a file) before marking the data as initialized using the\nset_len method.

\n
§Examples
\n
// Allocate vector big enough for 10 elements.\nlet mut v = Vec::with_capacity(10);\n\n// Fill in the first 3 elements.\nlet uninit = v.spare_capacity_mut();\nuninit[0].write(0);\nuninit[1].write(1);\nuninit[2].write(2);\n\n// Mark the first 3 elements of the vector as being initialized.\nunsafe {\n    v.set_len(3);\n}\n\nassert_eq!(&v, &[0, 1, 2]);
\n
source

pub fn split_at_spare_mut(&mut self) -> (&mut [T], &mut [MaybeUninit<T>])

🔬This is a nightly-only experimental API. (vec_split_at_spare)

Returns vector content as a slice of T, along with the remaining spare\ncapacity of the vector as a slice of MaybeUninit<T>.

\n

The returned spare capacity slice can be used to fill the vector with data\n(e.g. by reading from a file) before marking the data as initialized using\nthe set_len method.

\n

Note that this is a low-level API, which should be used with care for\noptimization purposes. If you need to append data to a Vec\nyou can use push, extend, extend_from_slice,\nextend_from_within, insert, append, resize or\nresize_with, depending on your exact needs.

\n
§Examples
\n
#![feature(vec_split_at_spare)]\n\nlet mut v = vec![1, 1, 2];\n\n// Reserve additional space big enough for 10 elements.\nv.reserve(10);\n\nlet (init, uninit) = v.split_at_spare_mut();\nlet sum = init.iter().copied().sum::<u32>();\n\n// Fill in the next 4 elements.\nuninit[0].write(sum);\nuninit[1].write(sum * 2);\nuninit[2].write(sum * 3);\nuninit[3].write(sum * 4);\n\n// Mark the 4 elements of the vector as being initialized.\nunsafe {\n    let len = v.len();\n    v.set_len(len + 4);\n}\n\nassert_eq!(&v, &[1, 1, 2, 4, 8, 12, 16]);
\n
",0,"algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
source§

impl<T, A> DerefPure for Vec<T, A>
where\n A: Allocator,

","DerefPure","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"],["
1.0.0 · source§

impl<T, A> Eq for Vec<T, A>
where\n T: Eq,\n A: Allocator,

","Eq","algebra::steenrod_parser::ModuleNode","algebra::algebra::milnor_algebra::PPart"]]],["ext",[["
§

impl<A> Arbitrary for Vec<A>
where\n A: Arbitrary,

§

type Parameters = (SizeRange, <A as Arbitrary>::Parameters)

The type of parameters that arbitrary_with accepts for configuration\nof the generated Strategy. Parameters must implement Default.
§

type Strategy = VecStrategy<<A as Arbitrary>::Strategy>

The type of Strategy used to generate values of type Self.
§

fn arbitrary_with(\n args: <Vec<A> as Arbitrary>::Parameters,\n) -> <Vec<A> as Arbitrary>::Strategy

Generates a Strategy for producing arbitrary values of type the\nimplementing type (Self). The strategy is passed the arguments given\nin args. Read more
§

fn arbitrary() -> Self::Strategy

Generates a Strategy for producing arbitrary values\nof type the implementing type (Self). Read more
","Arbitrary","ext::secondary::CompositeData"],["
§

impl<A> ArbitraryF1<A> for Vec<A>
where\n A: Debug,

§

type Parameters = SizeRange

The type of parameters that lift1_with accepts for\nconfiguration of the lifted and generated Strategy. Parameters\nmust implement Default.
§

fn lift1_with<S>(\n base: S,\n args: <Vec<A> as ArbitraryF1<A>>::Parameters,\n) -> BoxedStrategy<Vec<A>>
where\n S: Strategy<Value = A> + 'static,

Lifts a given Strategy to a new Strategy for the (presumably)\nbigger type. This is useful for lifting a Strategy for SomeType\nto a container such as Vec of SomeType. The composite strategy is\npassed the arguments given in args. Read more
§

fn lift1<AS>(base: AS) -> BoxedStrategy<Self>
where\n AS: Strategy<Value = A> + 'static,

Lifts a given Strategy to a new Strategy for the (presumably)\nbigger type. This is useful for lifting a Strategy for SomeType\nto a container such as Vec<SomeType>. Read more
","ArbitraryF1","ext::secondary::CompositeData"],["
1.5.0 · source§

impl<T, A> AsMut<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut [T]

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut<[T]>","ext::secondary::CompositeData"],["
1.5.0 · source§

impl<T, A> AsMut<Vec<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut Vec<T, A>

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> AsRef<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn as_ref(&self) -> &[T]

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef<[T]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> AsRef<Vec<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn as_ref(&self) -> &Vec<T, A>

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Borrow<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn borrow(&self) -> &[T]

Immutably borrows from an owned value. Read more
","Borrow<[T]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> BorrowMut<[T]> for Vec<T, A>
where\n A: Allocator,

source§

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

Mutably borrows from an owned value. Read more
","BorrowMut<[T]>","ext::secondary::CompositeData"],["
source§

impl<T> Clear for Vec<T>

source§

fn clear(&mut self)

Clear all data in self, retaining the allocated capacithy.
","Clear","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Clone for Vec<T, A>
where\n T: Clone,\n A: Allocator + Clone,

source§

fn clone_from(&mut self, source: &Vec<T, A>)

Overwrites the contents of self with a clone of the contents of source.

\n

This method is preferred over simply assigning source.clone() to self,\nas it avoids reallocation if possible. Additionally, if the element type\nT overrides clone_from(), this will reuse the resources of self’s\nelements as well.

\n
§Examples
\n
let x = vec![5, 6, 7];\nlet mut y = vec![8, 9, 10];\nlet yp: *const i32 = y.as_ptr();\n\ny.clone_from(&x);\n\n// The value is the same\nassert_eq!(x, y);\n\n// And no reallocation occurred\nassert_eq!(yp, y.as_ptr());
\n
source§

fn clone(&self) -> Vec<T, A>

Returns a copy of the value. Read more
","Clone","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Debug for Vec<T, A>
where\n T: Debug,\n A: Allocator,

source§

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

Formats the value using the given formatter. Read more
","Debug","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T> Default for Vec<T>

source§

fn default() -> Vec<T>

Creates an empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
","Default","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Deref for Vec<T, A>
where\n A: Allocator,

source§

type Target = [T]

The resulting type after dereferencing.
source§

fn deref(&self) -> &[T]

Dereferences the value.
","Deref","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> DerefMut for Vec<T, A>
where\n A: Allocator,

source§

fn deref_mut(&mut self) -> &mut [T]

Mutably dereferences the value.
","DerefMut","ext::secondary::CompositeData"],["
source§

impl<'de, T> Deserialize<'de> for Vec<T>
where\n T: Deserialize<'de>,

source§

fn deserialize<D>(\n deserializer: D,\n) -> Result<Vec<T>, <D as Deserializer<'de>>::Error>
where\n D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Drop for Vec<T, A>
where\n A: Allocator,

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
","Drop","ext::secondary::CompositeData"],["
1.2.0 · source§

impl<'a, T, A> Extend<&'a T> for Vec<T, A>
where\n T: Copy + 'a,\n A: Allocator,

Extend implementation that copies elements out of references before pushing them onto the Vec.

\n

This implementation is specialized for slice iterators, where it uses copy_from_slice to\nappend the entire slice at once.

\n
source§

fn extend<I>(&mut self, iter: I)
where\n I: IntoIterator<Item = &'a T>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, _: &'a T)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
","Extend<&'a T>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Extend<T> for Vec<T, A>
where\n A: Allocator,

source§

fn extend<I>(&mut self, iter: I)
where\n I: IntoIterator<Item = T>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: T)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
","Extend","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T> From<&[T]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &[T]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&[1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&[T]>","ext::secondary::CompositeData"],["
1.74.0 · source§

impl<T, const N: usize> From<&[T; N]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &[T; N]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&[1, 2, 3]), vec![1, 2, 3]);
\n
","From<&[T; N]>","ext::secondary::CompositeData"],["
1.19.0 · source§

impl<T> From<&mut [T]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &mut [T]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&mut [T]>","ext::secondary::CompositeData"],["
1.74.0 · source§

impl<T, const N: usize> From<&mut [T; N]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &mut [T; N]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3]), vec![1, 2, 3]);
\n
","From<&mut [T; N]>","ext::secondary::CompositeData"],["
1.44.0 · source§

impl<T, const N: usize> From<[T; N]> for Vec<T>

source§

fn from(s: [T; N]) -> Vec<T>

Allocates a Vec<T> and moves s’s items into it.

\n
§Examples
\n
assert_eq!(Vec::from([1, 2, 3]), vec![1, 2, 3]);
\n
","From<[T; N]>","ext::secondary::CompositeData"],["
1.5.0 · source§

impl<T, A> From<BinaryHeap<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(heap: BinaryHeap<T, A>) -> Vec<T, A>

Converts a BinaryHeap<T> into a Vec<T>.

\n

This conversion requires no data movement or allocation, and has\nconstant time complexity.

\n
","From>","ext::secondary::CompositeData"],["
1.18.0 · source§

impl<T, A> From<Box<[T], A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(s: Box<[T], A>) -> Vec<T, A>

Converts a boxed slice into a vector by transferring ownership of\nthe existing heap allocation.

\n
§Examples
\n
let b: Box<[i32]> = vec![1, 2, 3].into_boxed_slice();\nassert_eq!(Vec::from(b), vec![1, 2, 3]);
\n
","From>","ext::secondary::CompositeData"],["
1.14.0 · source§

impl<'a, T> From<Cow<'a, [T]>> for Vec<T>
where\n [T]: ToOwned<Owned = Vec<T>>,

source§

fn from(s: Cow<'a, [T]>) -> Vec<T>

Converts a clone-on-write slice into a vector.

\n

If s already owns a Vec<T>, it will be returned directly.\nIf s is borrowing a slice, a new Vec<T> will be allocated and\nfilled by cloning s’s items into it.

\n
§Examples
\n
let o: Cow<'_, [i32]> = Cow::Owned(vec![1, 2, 3]);\nlet b: Cow<'_, [i32]> = Cow::Borrowed(&[1, 2, 3]);\nassert_eq!(Vec::from(o), Vec::from(b));
\n
","From>","ext::secondary::CompositeData"],["
1.10.0 · source§

impl<T, A> From<VecDeque<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(other: VecDeque<T, A>) -> Vec<T, A>

Turn a VecDeque<T> into a Vec<T>.

\n

This never needs to re-allocate, but does need to do O(n) data movement if\nthe circular buffer doesn’t happen to be at the beginning of the allocation.

\n
§Examples
\n
use std::collections::VecDeque;\n\n// This one is *O*(1).\nlet deque: VecDeque<_> = (1..5).collect();\nlet ptr = deque.as_slices().0.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);\n\n// This one needs data rearranging.\nlet mut deque: VecDeque<_> = (1..5).collect();\ndeque.push_front(9);\ndeque.push_front(8);\nlet ptr = deque.as_slices().1.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [8, 9, 1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);
\n
","From>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T> FromIterator<T> for Vec<T>

Collects an iterator into a Vec, commonly called via Iterator::collect()

\n

§Allocation behavior

\n

In general Vec does not guarantee any particular growth or allocation strategy.\nThat also applies to this trait impl.

\n

Note: This section covers implementation details and is therefore exempt from\nstability guarantees.

\n

Vec may use any or none of the following strategies,\ndepending on the supplied iterator:

\n
    \n
  • preallocate based on Iterator::size_hint()\n
      \n
    • and panic if the number of items is outside the provided lower/upper bounds
    • \n
    \n
  • \n
  • use an amortized growth strategy similar to pushing one item at a time
  • \n
  • perform the iteration in-place on the original allocation backing the iterator
  • \n
\n

The last case warrants some attention. It is an optimization that in many cases reduces peak memory\nconsumption and improves cache locality. But when big, short-lived allocations are created,\nonly a small fraction of their items get collected, no further use is made of the spare capacity\nand the resulting Vec is moved into a longer-lived structure, then this can lead to the large\nallocations having their lifetimes unnecessarily extended which can result in increased memory\nfootprint.

\n

In cases where this is an issue, the excess capacity can be discarded with Vec::shrink_to(),\nVec::shrink_to_fit() or by collecting into Box<[T]> instead, which additionally reduces\nthe size of the long-lived struct.

\n\n
static LONG_LIVED: Mutex<Vec<Vec<u16>>> = Mutex::new(Vec::new());\n\nfor i in 0..10 {\n    let big_temporary: Vec<u16> = (0..1024).collect();\n    // discard most items\n    let mut result: Vec<_> = big_temporary.into_iter().filter(|i| i % 100 == 0).collect();\n    // without this a lot of unused capacity might be moved into the global\n    result.shrink_to_fit();\n    LONG_LIVED.lock().unwrap().push(result);\n}
\n
source§

fn from_iter<I>(iter: I) -> Vec<T>
where\n I: IntoIterator<Item = T>,

Creates a value from an iterator. Read more
","FromIterator","ext::secondary::CompositeData"],["
§

impl<T> FromParallelIterator<T> for Vec<T>
where\n T: Send,

Collects items from a parallel iterator into a vector.

\n
§

fn from_par_iter<I>(par_iter: I) -> Vec<T>
where\n I: IntoParallelIterator<Item = T>,

Creates an instance of the collection from the parallel iterator par_iter. Read more
","FromParallelIterator","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Hash for Vec<T, A>
where\n T: Hash,\n A: Allocator,

The hash of a vector is the same as that of the corresponding slice,\nas required by the core::borrow::Borrow implementation.

\n\n
use std::hash::BuildHasher;\n\nlet b = std::hash::RandomState::new();\nlet v: Vec<u8> = vec![0xa8, 0x3c, 0x09];\nlet s: &[u8] = &[0xa8, 0x3c, 0x09];\nassert_eq!(b.hash_one(v), b.hash_one(s));
\n
source§

fn hash<H>(&self, state: &mut H)
where\n H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, I, A> Index<I> for Vec<T, A>
where\n I: SliceIndex<[T]>,\n A: Allocator,

source§

type Output = <I as SliceIndex<[T]>>::Output

The returned type after indexing.
source§

fn index(&self, index: I) -> &<Vec<T, A> as Index<I>>::Output

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
§

impl<T> Index<PatternID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: PatternID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
§

impl<T> Index<SmallIndex> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: SmallIndex) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
§

impl<T> Index<StateID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: StateID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, I, A> IndexMut<I> for Vec<T, A>
where\n I: SliceIndex<[T]>,\n A: Allocator,

source§

fn index_mut(&mut self, index: I) -> &mut <Vec<T, A> as Index<I>>::Output

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
§

impl<T> IndexMut<PatternID> for Vec<T>

§

fn index_mut(&mut self, index: PatternID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
§

impl<T> IndexMut<SmallIndex> for Vec<T>

§

fn index_mut(&mut self, index: SmallIndex) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
§

impl<T> IndexMut<StateID> for Vec<T>

§

fn index_mut(&mut self, index: StateID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
source§

impl<'de, T, E> IntoDeserializer<'de, E> for Vec<T>
where\n T: IntoDeserializer<'de, E>,\n E: Error,

source§

type Deserializer = SeqDeserializer<<Vec<T> as IntoIterator>::IntoIter, E>

The type of the deserializer being converted into.
source§

fn into_deserializer(self) -> <Vec<T> as IntoDeserializer<'de, E>>::Deserializer

Convert this value into a deserializer.
","IntoDeserializer<'de, E>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> IntoIterator for Vec<T, A>
where\n A: Allocator,

source§

fn into_iter(self) -> <Vec<T, A> as IntoIterator>::IntoIter

Creates a consuming iterator, that is, one that moves each value out of\nthe vector (from start to end). The vector cannot be used after calling\nthis.

\n
§Examples
\n
let v = vec![\"a\".to_string(), \"b\".to_string()];\nlet mut v_iter = v.into_iter();\n\nlet first_element: Option<String> = v_iter.next();\n\nassert_eq!(first_element, Some(\"a\".to_string()));\nassert_eq!(v_iter.next(), Some(\"b\".to_string()));\nassert_eq!(v_iter.next(), None);
\n
source§

type Item = T

The type of the elements being iterated over.
source§

type IntoIter = IntoIter<T, A>

Which kind of iterator are we turning this into?
","IntoIterator","ext::secondary::CompositeData"],["
§

impl<T> IntoParallelIterator for Vec<T>
where\n T: Send,

§

type Item = T

The type of item that the parallel iterator will produce.
§

type Iter = IntoIter<T>

The parallel iterator type that will be created.
§

fn into_par_iter(self) -> <Vec<T> as IntoParallelIterator>::Iter

Converts self into a parallel iterator. Read more
","IntoParallelIterator","ext::secondary::CompositeData"],["
§

impl<S, L> Layer<S> for Vec<L>
where\n L: Layer<S>,\n S: Subscriber,

§

fn on_layer(&mut self, subscriber: &mut S)

Performs late initialization when attaching a Layer to a\n[Subscriber]. Read more
§

fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest

Registers a new callsite with this layer, returning whether or not\nthe layer is interested in being notified about the callsite, similarly\nto Subscriber::register_callsite. Read more
§

fn enabled(&self, metadata: &Metadata<'_>, ctx: Context<'_, S>) -> bool

Returns true if this layer is interested in a span or event with the\ngiven metadata in the current [Context], similarly to\nSubscriber::enabled. Read more
§

fn event_enabled(&self, event: &Event<'_>, ctx: Context<'_, S>) -> bool

Called before on_event, to determine if on_event should be called. Read more
§

fn on_new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>)

Notifies this layer that a new span was constructed with the given\nAttributes and Id.
§

fn on_record(&self, span: &Id, values: &Record<'_>, ctx: Context<'_, S>)

Notifies this layer that a span with the given Id recorded the given\nvalues.
§

fn on_follows_from(&self, span: &Id, follows: &Id, ctx: Context<'_, S>)

Notifies this layer that a span with the ID span recorded that it\nfollows from the span with the ID follows.
§

fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>)

Notifies this layer that an event has occurred.
§

fn on_enter(&self, id: &Id, ctx: Context<'_, S>)

Notifies this layer that a span with the given ID was entered.
§

fn on_exit(&self, id: &Id, ctx: Context<'_, S>)

Notifies this layer that the span with the given ID was exited.
§

fn on_close(&self, id: Id, ctx: Context<'_, S>)

Notifies this layer that the span with the given ID has been closed.
§

fn on_register_dispatch(&self, subscriber: &Dispatch)

Performs late initialization when installing this layer as a\nSubscriber. Read more
§

fn on_id_change(&self, _old: &Id, _new: &Id, _ctx: Context<'_, S>)

Notifies this layer that a span ID has been cloned, and that the\nsubscriber returned a different ID.
§

fn and_then<L>(self, layer: L) -> Layered<L, Self, S>
where\n L: Layer<S>,\n Self: Sized,

Composes this layer around the given Layer, returning a Layered\nstruct implementing Layer. Read more
§

fn with_subscriber(self, inner: S) -> Layered<Self, S>
where\n Self: Sized,

Composes this Layer with the given Subscriber, returning a\nLayered struct that implements Subscriber. Read more
§

fn with_filter<F>(self, filter: F) -> Filtered<Self, F, S>
where\n Self: Sized,\n F: Filter<S>,

Combines self with a [Filter], returning a Filtered layer. Read more
","Layer","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Ord for Vec<T, A>
where\n T: Ord,\n A: Allocator,

Implements ordering of vectors, lexicographically.

\n
source§

fn cmp(&self, other: &Vec<T, A>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","ext::secondary::CompositeData"],["
§

impl<'a, T> ParallelExtend<&'a T> for Vec<T>
where\n T: 'a + Copy + Send + Sync,

Extends a vector with copied items from a parallel iterator.

\n
§

fn par_extend<I>(&mut self, par_iter: I)
where\n I: IntoParallelIterator<Item = &'a T>,

Extends an instance of the collection with the elements drawn\nfrom the parallel iterator par_iter. Read more
","ParallelExtend<&'a T>","ext::secondary::CompositeData"],["
§

impl<T> ParallelExtend<T> for Vec<T>
where\n T: Send,

Extends a vector with items from a parallel iterator.

\n
§

fn par_extend<I>(&mut self, par_iter: I)
where\n I: IntoParallelIterator<Item = T>,

Extends an instance of the collection with the elements drawn\nfrom the parallel iterator par_iter. Read more
","ParallelExtend","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&[U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U]) -> bool

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

fn ne(&self, other: &&[U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&[U]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<&[U; N]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U; N]) -> bool

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

fn ne(&self, other: &&[U; N]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&[U; N]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&mut [U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&mut [U]) -> bool

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

fn ne(&self, other: &&mut [U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&mut [U]>","ext::secondary::CompositeData"],["
1.48.0 · source§

impl<T, U, A> PartialEq<[U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U]) -> bool

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

fn ne(&self, other: &[U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<[U]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<[U; N]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U; N]) -> bool

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

fn ne(&self, other: &[U; N]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<[U; N]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A1, A2> PartialEq<Vec<U, A2>> for Vec<T, A1>
where\n A1: Allocator,\n A2: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &Vec<U, A2>) -> bool

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

fn ne(&self, other: &Vec<U, A2>) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A1, A2> PartialOrd<Vec<T, A2>> for Vec<T, A1>
where\n T: PartialOrd,\n A1: Allocator,\n A2: Allocator,

Implements comparison of vectors, lexicographically.

\n
source§

fn partial_cmp(&self, other: &Vec<T, A2>) -> Option<Ordering>

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

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

Tests less than or equal to (for self and other) and is used by the\n<= operator. Read more
1.0.0 · source§

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

Tests greater than (for self and other) and is used by the >\noperator. Read more
1.0.0 · source§

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

Tests greater than or equal to (for self and other) and is used by\nthe >= operator. Read more
","PartialOrd>","ext::secondary::CompositeData"],["
source§

impl<T> Serialize for Vec<T>
where\n T: Serialize,

source§

fn serialize<S>(\n &self,\n serializer: S,\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where\n S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","ext::secondary::CompositeData"],["
§

impl<T> Shuffleable for Vec<T>

§

fn shuffle_len(&self) -> usize

Return the length of this collection.
§

fn shuffle_swap(&mut self, a: usize, b: usize)

Swap the elements at the given indices.
","Shuffleable","ext::secondary::CompositeData"],["
§

impl<T> Strategy for Vec<T>
where\n T: Strategy,

§

type Tree = VecValueTree<<T as Strategy>::Tree>

The value tree generated by this Strategy.
§

type Value = Vec<<T as Strategy>::Value>

The type of value used by functions under test generated by this Strategy. Read more
§

fn new_tree(\n &self,\n runner: &mut TestRunner,\n) -> Result<<Vec<T> as Strategy>::Tree, Reason>

Generate a new value tree from the given runner. Read more
§

fn prop_map<O, F>(self, fun: F) -> Map<Self, F>
where\n O: Debug,\n F: Fn(Self::Value) -> O,\n Self: Sized,

Returns a strategy which produces values transformed by the function\nfun. Read more
§

fn prop_map_into<O>(self) -> MapInto<Self, O>
where\n O: Debug,\n Self: Sized,\n Self::Value: Into<O>,

Returns a strategy which produces values of type O by transforming\nSelf with Into<O>. Read more
§

fn prop_perturb<O, F>(self, fun: F) -> Perturb<Self, F>
where\n O: Debug,\n F: Fn(Self::Value, TestRng) -> O,\n Self: Sized,

Returns a strategy which produces values transformed by the function\nfun, which is additionally given a random number generator. Read more
§

fn prop_flat_map<S, F>(self, fun: F) -> Flatten<Map<Self, F>>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Maps values produced by this strategy into new strategies and picks\nvalues from those strategies. Read more
§

fn prop_ind_flat_map<S, F>(self, fun: F) -> IndFlatten<Map<Self, F>>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Maps values produced by this strategy into new strategies and picks\nvalues from those strategies while considering the new strategies to be\nindependent. Read more
§

fn prop_ind_flat_map2<S, F>(self, fun: F) -> IndFlattenMap<Self, F>
where\n S: Strategy,\n F: Fn(Self::Value) -> S,\n Self: Sized,

Similar to prop_ind_flat_map(), but produces 2-tuples with the input\ngenerated from self in slot 0 and the derived strategy in slot 1. Read more
§

fn prop_filter<R, F>(self, whence: R, fun: F) -> Filter<Self, F>
where\n R: Into<Reason>,\n F: Fn(&Self::Value) -> bool,\n Self: Sized,

Returns a strategy which only produces values accepted by fun. Read more
§

fn prop_filter_map<F, O>(\n self,\n whence: impl Into<Reason>,\n fun: F,\n) -> FilterMap<Self, F>
where\n F: Fn(Self::Value) -> Option<O>,\n O: Debug,\n Self: Sized,

Returns a strategy which only produces transformed values where fun\nreturns Some(value) and rejects those where fun returns None. Read more
§

fn prop_union(self, other: Self) -> Union<Self>
where\n Self: Sized,

Returns a strategy which picks uniformly from self and other. Read more
§

fn prop_recursive<R, F>(\n self,\n depth: u32,\n desired_size: u32,\n expected_branch_size: u32,\n recurse: F,\n) -> Recursive<Self::Value, F>
where\n R: Strategy<Value = Self::Value> + 'static,\n F: Fn(BoxedStrategy<Self::Value>) -> R,\n Self: Sized + 'static,

Generate a recursive structure with self items as leaves. Read more
§

fn boxed(self) -> BoxedStrategy<Self::Value>
where\n Self: Sized + 'static,

Erases the type of this Strategy so it can be passed around as a\nsimple trait object. Read more
§

fn no_shrink(self) -> NoShrink<Self>
where\n Self: Sized,

Wraps this strategy to prevent values from being subject to shrinking. Read more
","Strategy","ext::secondary::CompositeData"],["
source§

impl<T> Vec<T>

1.0.0 (const: 1.39.0) · source

pub const fn new() -> Vec<T>

Constructs a new, empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
§Examples
\n
let mut vec: Vec<i32> = Vec::new();
\n
1.0.0 · source

pub fn with_capacity(capacity: usize) -> Vec<T>

Constructs a new, empty Vec<T> with at least the specified capacity.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<()>::with_capacity(10);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
source

pub fn try_with_capacity(capacity: usize) -> Result<Vec<T>, TryReserveError>

🔬This is a nightly-only experimental API. (try_with_capacity)

Constructs a new, empty Vec<T> with at least the specified capacity.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n
§Errors
\n

Returns an error if the capacity exceeds isize::MAX bytes,\nor if the allocator reports allocation failure.

\n
1.0.0 · source

pub unsafe fn from_raw_parts(\n ptr: *mut T,\n length: usize,\n capacity: usize,\n) -> Vec<T>

Creates a Vec<T> directly from a pointer, a length, and a capacity.

\n
§Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must have been allocated using the global allocator, such as via\nthe alloc::alloc function.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to be the capacity that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is normally not safe\nto build a Vec<u8> from a pointer to a C char array with length\nsize_t, doing so is only safe if the array was initially allocated by\na Vec or String.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1. To avoid\nthese issues, it is often preferable to do casting/transmuting using\nslice::from_raw_parts instead.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
§Examples
\n
use std::ptr;\nuse std::mem;\n\nlet v = vec![1, 2, 3];\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts(p, len, cap);\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
use std::alloc::{alloc, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect(\"overflow cannot happen\");\n\n    let vec = unsafe {\n        let mem = alloc(layout).cast::<u32>();\n        if mem.is_null() {\n            return;\n        }\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts(mem, 1, 16)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n T: Clone,\n A: Allocator,

1.5.0 · source

pub fn resize(&mut self, new_len: usize, value: T)

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with value.\nIf new_len is less than len, the Vec is simply truncated.

\n

This method requires T to implement Clone,\nin order to be able to clone the passed value.\nIf you need more flexibility (or want to rely on Default instead of\nClone), use Vec::resize_with.\nIf you only need to resize to a smaller size, use Vec::truncate.

\n
§Examples
\n
let mut vec = vec![\"hello\"];\nvec.resize(3, \"world\");\nassert_eq!(vec, [\"hello\", \"world\", \"world\"]);\n\nlet mut vec = vec![1, 2, 3, 4];\nvec.resize(2, 0);\nassert_eq!(vec, [1, 2]);
\n
1.6.0 · source

pub fn extend_from_slice(&mut self, other: &[T])

Clones and appends all elements in a slice to the Vec.

\n

Iterates over the slice other, clones each element, and then appends\nit to this Vec. The other slice is traversed in-order.

\n

Note that this function is same as extend except that it is\nspecialized to work with slices instead. If and when Rust gets\nspecialization this function will likely be deprecated (but still\navailable).

\n
§Examples
\n
let mut vec = vec![1];\nvec.extend_from_slice(&[2, 3, 4]);\nassert_eq!(vec, [1, 2, 3, 4]);
\n
1.53.0 · source

pub fn extend_from_within<R>(&mut self, src: R)
where\n R: RangeBounds<usize>,

Copies elements from src range to the end of the vector.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Examples
\n
let mut vec = vec![0, 1, 2, 3, 4];\n\nvec.extend_from_within(2..);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4]);\n\nvec.extend_from_within(..2);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1]);\n\nvec.extend_from_within(4..8);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1, 4, 2, 3, 4]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n T: PartialEq,\n A: Allocator,

1.0.0 · source

pub fn dedup(&mut self)

Removes consecutive repeated elements in the vector according to the\nPartialEq trait implementation.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![1, 2, 2, 3, 2];\n\nvec.dedup();\n\nassert_eq!(vec, [1, 2, 3, 2]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n A: Allocator,

1.21.0 · source

pub fn splice<R, I>(\n &mut self,\n range: R,\n replace_with: I,\n) -> Splice<'_, <I as IntoIterator>::IntoIter, A>
where\n R: RangeBounds<usize>,\n I: IntoIterator<Item = T>,

Creates a splicing iterator that replaces the specified range in the vector\nwith the given replace_with iterator and yields the removed items.\nreplace_with does not need to be the same length as range.

\n

range is removed even if the iterator is not consumed until the end.

\n

It is unspecified how many elements are removed from the vector\nif the Splice value is leaked.

\n

The input iterator replace_with is only consumed when the Splice value is dropped.

\n

This is optimal if:

\n
    \n
  • The tail (elements in the vector after range) is empty,
  • \n
  • or replace_with yields fewer or equal elements than range’s length
  • \n
  • or the lower bound of its size_hint() is exact.
  • \n
\n

Otherwise, a temporary vector is allocated and the tail is moved twice.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Examples
\n
let mut v = vec![1, 2, 3, 4];\nlet new = [7, 8, 9];\nlet u: Vec<_> = v.splice(1..3, new).collect();\nassert_eq!(v, &[1, 7, 8, 9, 4]);\nassert_eq!(u, &[2, 3]);
\n
source

pub fn extract_if<F>(&mut self, filter: F) -> ExtractIf<'_, T, F, A>
where\n F: FnMut(&mut T) -> bool,

🔬This is a nightly-only experimental API. (extract_if)

Creates an iterator which uses a closure to determine if an element should be removed.

\n

If the closure returns true, then the element is removed and yielded.\nIf the closure returns false, the element will remain in the vector and will not be yielded\nby the iterator.

\n

If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

\n

Using this method is equivalent to the following code:

\n\n
let mut i = 0;\nwhile i < vec.len() {\n    if some_predicate(&mut vec[i]) {\n        let val = vec.remove(i);\n        // your code here\n    } else {\n        i += 1;\n    }\n}\n
\n

But extract_if is easier to use. extract_if is also more efficient,\nbecause it can backshift the elements of the array in bulk.

\n

Note that extract_if also lets you mutate every element in the filter closure,\nregardless of whether you choose to keep or remove it.

\n
§Examples
\n

Splitting an array into evens and odds, reusing the original allocation:

\n\n
#![feature(extract_if)]\nlet mut numbers = vec![1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15];\n\nlet evens = numbers.extract_if(|x| *x % 2 == 0).collect::<Vec<_>>();\nlet odds = numbers;\n\nassert_eq!(evens, vec![2, 4, 6, 8, 14]);\nassert_eq!(odds, vec![1, 3, 5, 9, 11, 13, 15]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n A: Allocator,

source

pub const fn new_in(alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A>.

\n

The vector will not allocate until elements are pushed onto it.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec: Vec<i32, _> = Vec::new_in(System);
\n
source

pub fn with_capacity_in(capacity: usize, alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A> with at least the specified capacity\nwith the provided allocator.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T, A> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec = Vec::with_capacity_in(10, System);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<(), System>::with_capacity_in(10, System);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
source

pub fn try_with_capacity_in(\n capacity: usize,\n alloc: A,\n) -> Result<Vec<T, A>, TryReserveError>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A> with at least the specified capacity\nwith the provided allocator.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n
§Errors
\n

Returns an error if the capacity exceeds isize::MAX bytes,\nor if the allocator reports allocation failure.

\n
source

pub unsafe fn from_raw_parts_in(\n ptr: *mut T,\n length: usize,\n capacity: usize,\n alloc: A,\n) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Creates a Vec<T, A> directly from a pointer, a length, a capacity,\nand an allocator.

\n
§Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must be currently allocated via the given allocator alloc.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to fit the layout size that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T, A>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is not safe\nto build a Vec<u8> from a pointer to a C char array with length size_t.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nuse std::ptr;\nuse std::mem;\n\nlet mut v = Vec::with_capacity_in(3, System);\nv.push(1);\nv.push(2);\nv.push(3);\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\nlet alloc = v.allocator();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts_in(p, len, cap, alloc.clone());\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
#![feature(allocator_api)]\n\nuse std::alloc::{AllocError, Allocator, Global, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect(\"overflow cannot happen\");\n\n    let vec = unsafe {\n        let mem = match Global.allocate(layout) {\n            Ok(mem) => mem.cast::<u32>().as_ptr(),\n            Err(AllocError) => return,\n        };\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts_in(mem, 1, 16, Global)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
source

pub fn into_raw_parts(self) -> (*mut T, usize, usize)

🔬This is a nightly-only experimental API. (vec_into_raw_parts)

Decomposes a Vec<T> into its raw components: (pointer, length, capacity).

\n

Returns the raw pointer to the underlying data, the length of\nthe vector (in elements), and the allocated capacity of the\ndata (in elements). These are the same arguments in the same\norder as the arguments to from_raw_parts.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts function, allowing\nthe destructor to perform the cleanup.

\n
§Examples
\n
#![feature(vec_into_raw_parts)]\nlet v: Vec<i32> = vec![-1, 0, 1];\n\nlet (ptr, len, cap) = v.into_raw_parts();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts(ptr, len, cap)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
source

pub fn into_raw_parts_with_alloc(self) -> (*mut T, usize, usize, A)

🔬This is a nightly-only experimental API. (allocator_api)

Decomposes a Vec<T> into its raw components: (pointer, length, capacity, allocator).

\n

Returns the raw pointer to the underlying data, the length of the vector (in elements),\nthe allocated capacity of the data (in elements), and the allocator. These are the same\narguments in the same order as the arguments to from_raw_parts_in.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts_in function, allowing\nthe destructor to perform the cleanup.

\n
§Examples
\n
#![feature(allocator_api, vec_into_raw_parts)]\n\nuse std::alloc::System;\n\nlet mut v: Vec<i32, System> = Vec::new_in(System);\nv.push(-1);\nv.push(0);\nv.push(1);\n\nlet (ptr, len, cap, alloc) = v.into_raw_parts_with_alloc();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts_in(ptr, len, cap, alloc)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
1.0.0 · source

pub fn capacity(&self) -> usize

Returns the total number of elements the vector can hold without\nreallocating.

\n
§Examples
\n
let mut vec: Vec<i32> = Vec::with_capacity(10);\nvec.push(42);\nassert!(vec.capacity() >= 10);
\n
1.0.0 · source

pub fn reserve(&mut self, additional: usize)

Reserves capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to\nspeculatively avoid frequent reallocations. After calling reserve,\ncapacity will be greater than or equal to self.len() + additional.\nDoes nothing if capacity is already sufficient.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1];\nvec.reserve(10);\nassert!(vec.capacity() >= 11);
\n
1.0.0 · source

pub fn reserve_exact(&mut self, additional: usize)

Reserves the minimum capacity for at least additional more elements to\nbe inserted in the given Vec<T>. Unlike reserve, this will not\ndeliberately over-allocate to speculatively avoid frequent allocations.\nAfter calling reserve_exact, capacity will be greater than or equal to\nself.len() + additional. Does nothing if the capacity is already\nsufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer reserve if future insertions are expected.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1];\nvec.reserve_exact(10);\nassert!(vec.capacity() >= 11);
\n
1.57.0 · source

pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>

Tries to reserve capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to speculatively avoid\nfrequent reallocations. After calling try_reserve, capacity will be\ngreater than or equal to self.len() + additional if it returns\nOk(()). Does nothing if capacity is already sufficient. This method\npreserves the contents even if an error occurs.

\n
§Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
§Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.57.0 · source

pub fn try_reserve_exact(\n &mut self,\n additional: usize,\n) -> Result<(), TryReserveError>

Tries to reserve the minimum capacity for at least additional\nelements to be inserted in the given Vec<T>. Unlike try_reserve,\nthis will not deliberately over-allocate to speculatively avoid frequent\nallocations. After calling try_reserve_exact, capacity will be greater\nthan or equal to self.len() + additional if it returns Ok(()).\nDoes nothing if the capacity is already sufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer try_reserve if future insertions are expected.

\n
§Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
§Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve_exact(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.0.0 · source

pub fn shrink_to_fit(&mut self)

Shrinks the capacity of the vector as much as possible.

\n

The behavior of this method depends on the allocator, which may either shrink the vector\nin-place or reallocate. The resulting vector might still have some excess capacity, just as\nis the case for with_capacity. See Allocator::shrink for more details.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to_fit();\nassert!(vec.capacity() >= 3);
\n
1.56.0 · source

pub fn shrink_to(&mut self, min_capacity: usize)

Shrinks the capacity of the vector with a lower bound.

\n

The capacity will remain at least as large as both the length\nand the supplied value.

\n

If the current capacity is less than the lower limit, this is a no-op.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to(4);\nassert!(vec.capacity() >= 4);\nvec.shrink_to(0);\nassert!(vec.capacity() >= 3);
\n
1.0.0 · source

pub fn into_boxed_slice(self) -> Box<[T], A>

Converts the vector into Box<[T]>.

\n

Before doing the conversion, this method discards excess capacity like shrink_to_fit.

\n
§Examples
\n
let v = vec![1, 2, 3];\n\nlet slice = v.into_boxed_slice();
\n

Any excess capacity is removed:

\n\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\n\nassert!(vec.capacity() >= 10);\nlet slice = vec.into_boxed_slice();\nassert_eq!(slice.into_vec().capacity(), 3);
\n
1.0.0 · source

pub fn truncate(&mut self, len: usize)

Shortens the vector, keeping the first len elements and dropping\nthe rest.

\n

If len is greater or equal to the vector’s current length, this has\nno effect.

\n

The drain method can emulate truncate, but causes the excess\nelements to be returned instead of dropped.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
§Examples
\n

Truncating a five element vector to two elements:

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nvec.truncate(2);\nassert_eq!(vec, [1, 2]);
\n

No truncation occurs when len is greater than the vector’s current\nlength:

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(8);\nassert_eq!(vec, [1, 2, 3]);
\n

Truncating when len == 0 is equivalent to calling the clear\nmethod.

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(0);\nassert_eq!(vec, []);
\n
1.7.0 · source

pub fn as_slice(&self) -> &[T]

Extracts a slice containing the entire vector.

\n

Equivalent to &s[..].

\n
§Examples
\n
use std::io::{self, Write};\nlet buffer = vec![1, 2, 3, 5, 8];\nio::sink().write(buffer.as_slice()).unwrap();
\n
1.7.0 · source

pub fn as_mut_slice(&mut self) -> &mut [T]

Extracts a mutable slice of the entire vector.

\n

Equivalent to &mut s[..].

\n
§Examples
\n
use std::io::{self, Read};\nlet mut buffer = vec![0; 3];\nio::repeat(0b101).read_exact(buffer.as_mut_slice()).unwrap();
\n
1.37.0 · source

pub fn as_ptr(&self) -> *const T

Returns a raw pointer to the vector’s buffer, or a dangling raw pointer\nvalid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up dangling.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

The caller must also ensure that the memory the pointer (non-transitively) points to\nis never written to (except inside an UnsafeCell) using this pointer or any pointer\nderived from it. If you need to mutate the contents of the slice, use as_mut_ptr.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize mutable references to the slice,\nor mutable references to specific elements you are planning on accessing through this pointer,\nas well as writing to those elements, may still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
§Examples
\n
let x = vec![1, 2, 4];\nlet x_ptr = x.as_ptr();\n\nunsafe {\n    for i in 0..x.len() {\n        assert_eq!(*x_ptr.add(i), 1 << i);\n    }\n}
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0, 1, 2];\n    let ptr1 = v.as_ptr();\n    let _ = ptr1.read();\n    let ptr2 = v.as_mut_ptr().offset(2);\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`\n    // because it mutated a different element:\n    let _ = ptr1.read();\n}
\n
1.37.0 · source

pub fn as_mut_ptr(&mut self) -> *mut T

Returns a raw mutable pointer to the vector’s buffer, or a dangling\nraw pointer valid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up dangling.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize references to the slice,\nor references to specific elements you are planning on accessing through this pointer,\nmay still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
§Examples
\n
// Allocate vector big enough for 4 elements.\nlet size = 4;\nlet mut x: Vec<i32> = Vec::with_capacity(size);\nlet x_ptr = x.as_mut_ptr();\n\n// Initialize elements via raw pointer writes, then set length.\nunsafe {\n    for i in 0..size {\n        *x_ptr.add(i) = i as i32;\n    }\n    x.set_len(size);\n}\nassert_eq!(&*x, &[0, 1, 2, 3]);
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0];\n    let ptr1 = v.as_mut_ptr();\n    ptr1.write(1);\n    let ptr2 = v.as_mut_ptr();\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`:\n    ptr1.write(3);\n}
\n
source

pub fn allocator(&self) -> &A

🔬This is a nightly-only experimental API. (allocator_api)

Returns a reference to the underlying allocator.

\n
1.0.0 · source

pub unsafe fn set_len(&mut self, new_len: usize)

Forces the length of the vector to new_len.

\n

This is a low-level operation that maintains none of the normal\ninvariants of the type. Normally changing the length of a vector\nis done using one of the safe operations instead, such as\ntruncate, resize, extend, or clear.

\n
§Safety
\n
    \n
  • new_len must be less than or equal to capacity().
  • \n
  • The elements at old_len..new_len must be initialized.
  • \n
\n
§Examples
\n

This method can be useful for situations in which the vector\nis serving as a buffer for other code, particularly over FFI:

\n\n
pub fn get_dictionary(&self) -> Option<Vec<u8>> {\n    // Per the FFI method's docs, \"32768 bytes is always enough\".\n    let mut dict = Vec::with_capacity(32_768);\n    let mut dict_length = 0;\n    // SAFETY: When `deflateGetDictionary` returns `Z_OK`, it holds that:\n    // 1. `dict_length` elements were initialized.\n    // 2. `dict_length` <= the capacity (32_768)\n    // which makes `set_len` safe to call.\n    unsafe {\n        // Make the FFI call...\n        let r = deflateGetDictionary(self.strm, dict.as_mut_ptr(), &mut dict_length);\n        if r == Z_OK {\n            // ...and update the length to what was initialized.\n            dict.set_len(dict_length);\n            Some(dict)\n        } else {\n            None\n        }\n    }\n}
\n

While the following example is sound, there is a memory leak since\nthe inner vectors were not freed prior to the set_len call:

\n\n
let mut vec = vec![vec![1, 0, 0],\n                   vec![0, 1, 0],\n                   vec![0, 0, 1]];\n// SAFETY:\n// 1. `old_len..0` is empty so no elements need to be initialized.\n// 2. `0 <= capacity` always holds whatever `capacity` is.\nunsafe {\n    vec.set_len(0);\n}
\n

Normally, here, one would use clear instead to correctly drop\nthe contents and thus not leak memory.

\n
1.0.0 · source

pub fn swap_remove(&mut self, index: usize) -> T

Removes an element from the vector and returns it.

\n

The removed element is replaced by the last element of the vector.

\n

This does not preserve ordering of the remaining elements, but is O(1).\nIf you need to preserve the element order, use remove instead.

\n
§Panics
\n

Panics if index is out of bounds.

\n
§Examples
\n
let mut v = vec![\"foo\", \"bar\", \"baz\", \"qux\"];\n\nassert_eq!(v.swap_remove(1), \"bar\");\nassert_eq!(v, [\"foo\", \"qux\", \"baz\"]);\n\nassert_eq!(v.swap_remove(0), \"foo\");\nassert_eq!(v, [\"baz\", \"qux\"]);
\n
1.0.0 · source

pub fn insert(&mut self, index: usize, element: T)

Inserts an element at position index within the vector, shifting all\nelements after it to the right.

\n
§Panics
\n

Panics if index > len.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nvec.insert(1, 4);\nassert_eq!(vec, [1, 4, 2, 3]);\nvec.insert(4, 5);\nassert_eq!(vec, [1, 4, 2, 3, 5]);
\n
§Time complexity
\n

Takes O(Vec::len) time. All items after the insertion index must be\nshifted to the right. In the worst case, all elements are shifted when\nthe insertion index is 0.

\n
1.0.0 · source

pub fn remove(&mut self, index: usize) -> T

Removes and returns the element at position index within the vector,\nshifting all elements after it to the left.

\n

Note: Because this shifts over the remaining elements, it has a\nworst-case performance of O(n). If you don’t need the order of elements\nto be preserved, use swap_remove instead. If you’d like to remove\nelements from the beginning of the Vec, consider using\nVecDeque::pop_front instead.

\n
§Panics
\n

Panics if index is out of bounds.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\nassert_eq!(v.remove(1), 2);\nassert_eq!(v, [1, 3]);
\n
1.0.0 · source

pub fn retain<F>(&mut self, f: F)
where\n F: FnMut(&T) -> bool,

Retains only the elements specified by the predicate.

\n

In other words, remove all elements e for which f(&e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
§Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain(|&x| x % 2 == 0);\nassert_eq!(vec, [2, 4]);
\n

Because the elements are visited exactly once in the original order,\nexternal state may be used to decide which elements to keep.

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nlet keep = [false, true, true, false, true];\nlet mut iter = keep.iter();\nvec.retain(|_| *iter.next().unwrap());\nassert_eq!(vec, [2, 3, 5]);
\n
1.61.0 · source

pub fn retain_mut<F>(&mut self, f: F)
where\n F: FnMut(&mut T) -> bool,

Retains only the elements specified by the predicate, passing a mutable reference to it.

\n

In other words, remove all elements e such that f(&mut e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
§Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain_mut(|x| if *x <= 3 {\n    *x += 1;\n    true\n} else {\n    false\n});\nassert_eq!(vec, [2, 3, 4]);
\n
1.16.0 · source

pub fn dedup_by_key<F, K>(&mut self, key: F)
where\n F: FnMut(&mut T) -> K,\n K: PartialEq,

Removes all but the first of consecutive elements in the vector that resolve to the same\nkey.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![10, 20, 21, 30, 20];\n\nvec.dedup_by_key(|i| *i / 10);\n\nassert_eq!(vec, [10, 20, 30, 20]);
\n
1.16.0 · source

pub fn dedup_by<F>(&mut self, same_bucket: F)
where\n F: FnMut(&mut T, &mut T) -> bool,

Removes all but the first of consecutive elements in the vector satisfying a given equality\nrelation.

\n

The same_bucket function is passed references to two elements from the vector and\nmust determine if the elements compare equal. The elements are passed in opposite order\nfrom their order in the slice, so if same_bucket(a, b) returns true, a is removed.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![\"foo\", \"bar\", \"Bar\", \"baz\", \"bar\"];\n\nvec.dedup_by(|a, b| a.eq_ignore_ascii_case(b));\n\nassert_eq!(vec, [\"foo\", \"bar\", \"baz\", \"bar\"]);
\n
1.0.0 · source

pub fn push(&mut self, value: T)

Appends an element to the back of a collection.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1, 2];\nvec.push(3);\nassert_eq!(vec, [1, 2, 3]);
\n
§Time complexity
\n

Takes amortized O(1) time. If the vector’s length would exceed its\ncapacity after the push, O(capacity) time is taken to copy the\nvector’s elements to a larger allocation. This expensive operation is\noffset by the capacity O(1) insertions it allows.

\n
source

pub fn push_within_capacity(&mut self, value: T) -> Result<(), T>

🔬This is a nightly-only experimental API. (vec_push_within_capacity)

Appends an element if there is sufficient spare capacity, otherwise an error is returned\nwith the element.

\n

Unlike push this method will not reallocate when there’s insufficient capacity.\nThe caller should use reserve or try_reserve to ensure that there is enough capacity.

\n
§Examples
\n

A manual, panic-free alternative to FromIterator:

\n\n
#![feature(vec_push_within_capacity)]\n\nuse std::collections::TryReserveError;\nfn from_iter_fallible<T>(iter: impl Iterator<Item=T>) -> Result<Vec<T>, TryReserveError> {\n    let mut vec = Vec::new();\n    for value in iter {\n        if let Err(value) = vec.push_within_capacity(value) {\n            vec.try_reserve(1)?;\n            // this cannot fail, the previous line either returned or added at least 1 free slot\n            let _ = vec.push_within_capacity(value);\n        }\n    }\n    Ok(vec)\n}\nassert_eq!(from_iter_fallible(0..100), Ok(Vec::from_iter(0..100)));
\n
§Time complexity
\n

Takes O(1) time.

\n
1.0.0 · source

pub fn pop(&mut self) -> Option<T>

Removes the last element from a vector and returns it, or None if it\nis empty.

\n

If you’d like to pop the first element, consider using\nVecDeque::pop_front instead.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nassert_eq!(vec.pop(), Some(3));\nassert_eq!(vec, [1, 2]);
\n
§Time complexity
\n

Takes O(1) time.

\n
source

pub fn pop_if<F>(&mut self, f: F) -> Option<T>
where\n F: FnOnce(&mut T) -> bool,

🔬This is a nightly-only experimental API. (vec_pop_if)

Removes and returns the last element in a vector if the predicate\nreturns true, or None if the predicate returns false or the vector\nis empty.

\n
§Examples
\n
#![feature(vec_pop_if)]\n\nlet mut vec = vec![1, 2, 3, 4];\nlet pred = |x: &mut i32| *x % 2 == 0;\n\nassert_eq!(vec.pop_if(pred), Some(4));\nassert_eq!(vec, [1, 2, 3]);\nassert_eq!(vec.pop_if(pred), None);
\n
1.4.0 · source

pub fn append(&mut self, other: &mut Vec<T, A>)

Moves all the elements of other into self, leaving other empty.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nlet mut vec2 = vec![4, 5, 6];\nvec.append(&mut vec2);\nassert_eq!(vec, [1, 2, 3, 4, 5, 6]);\nassert_eq!(vec2, []);
\n
1.6.0 · source

pub fn drain<R>(&mut self, range: R) -> Drain<'_, T, A>
where\n R: RangeBounds<usize>,

Removes the specified range from the vector in bulk, returning all\nremoved elements as an iterator. If the iterator is dropped before\nbeing fully consumed, it drops the remaining removed elements.

\n

The returned iterator keeps a mutable borrow on the vector to optimize\nits implementation.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Leaking
\n

If the returned iterator goes out of scope without being dropped (due to\nmem::forget, for example), the vector may have lost and leaked\nelements arbitrarily, including elements outside the range.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\nlet u: Vec<_> = v.drain(1..).collect();\nassert_eq!(v, &[1]);\nassert_eq!(u, &[2, 3]);\n\n// A full range clears the vector, like `clear()` does\nv.drain(..);\nassert_eq!(v, &[]);
\n
1.0.0 · source

pub fn clear(&mut self)

Clears the vector, removing all values.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\n\nv.clear();\n\nassert!(v.is_empty());
\n
1.0.0 · source

pub fn len(&self) -> usize

Returns the number of elements in the vector, also referred to\nas its ‘length’.

\n
§Examples
\n
let a = vec![1, 2, 3];\nassert_eq!(a.len(), 3);
\n
1.0.0 · source

pub fn is_empty(&self) -> bool

Returns true if the vector contains no elements.

\n
§Examples
\n
let mut v = Vec::new();\nassert!(v.is_empty());\n\nv.push(1);\nassert!(!v.is_empty());
\n
1.4.0 · source

pub fn split_off(&mut self, at: usize) -> Vec<T, A>
where\n A: Clone,

Splits the collection into two at the given index.

\n

Returns a newly allocated vector containing the elements in the range\n[at, len). After the call, the original vector will be left containing\nthe elements [0, at) with its previous capacity unchanged.

\n
    \n
  • If you want to take ownership of the entire contents and capacity of\nthe vector, see mem::take or mem::replace.
  • \n
  • If you don’t need the returned vector at all, see Vec::truncate.
  • \n
  • If you want to take ownership of an arbitrary subslice, or you don’t\nnecessarily want to store the removed items in a vector, see Vec::drain.
  • \n
\n
§Panics
\n

Panics if at > len.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nlet vec2 = vec.split_off(1);\nassert_eq!(vec, [1]);\nassert_eq!(vec2, [2, 3]);
\n
1.33.0 · source

pub fn resize_with<F>(&mut self, new_len: usize, f: F)
where\n F: FnMut() -> T,

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with the result of\ncalling the closure f. The return values from f will end up\nin the Vec in the order they have been generated.

\n

If new_len is less than len, the Vec is simply truncated.

\n

This method uses a closure to create new values on every push. If\nyou’d rather Clone a given value, use Vec::resize. If you\nwant to use the Default trait to generate values, you can\npass Default::default as the second argument.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nvec.resize_with(5, Default::default);\nassert_eq!(vec, [1, 2, 3, 0, 0]);\n\nlet mut vec = vec![];\nlet mut p = 1;\nvec.resize_with(4, || { p *= 2; p });\nassert_eq!(vec, [2, 4, 8, 16]);
\n
1.47.0 · source

pub fn leak<'a>(self) -> &'a mut [T]
where\n A: 'a,

Consumes and leaks the Vec, returning a mutable reference to the contents,\n&'a mut [T].

\n

Note that the type T must outlive the chosen lifetime 'a. If the type\nhas only static references, or none at all, then this may be chosen to be\n'static.

\n

As of Rust 1.57, this method does not reallocate or shrink the Vec,\nso the leaked allocation may include unused capacity that is not part\nof the returned slice.

\n

This function is mainly useful for data that lives for the remainder of\nthe program’s life. Dropping the returned reference will cause a memory\nleak.

\n
§Examples
\n

Simple usage:

\n\n
let x = vec![1, 2, 3];\nlet static_ref: &'static mut [usize] = x.leak();\nstatic_ref[0] += 1;\nassert_eq!(static_ref, &[2, 2, 3]);
\n
1.60.0 · source

pub fn spare_capacity_mut(&mut self) -> &mut [MaybeUninit<T>]

Returns the remaining spare capacity of the vector as a slice of\nMaybeUninit<T>.

\n

The returned slice can be used to fill the vector with data (e.g. by\nreading from a file) before marking the data as initialized using the\nset_len method.

\n
§Examples
\n
// Allocate vector big enough for 10 elements.\nlet mut v = Vec::with_capacity(10);\n\n// Fill in the first 3 elements.\nlet uninit = v.spare_capacity_mut();\nuninit[0].write(0);\nuninit[1].write(1);\nuninit[2].write(2);\n\n// Mark the first 3 elements of the vector as being initialized.\nunsafe {\n    v.set_len(3);\n}\n\nassert_eq!(&v, &[0, 1, 2]);
\n
source

pub fn split_at_spare_mut(&mut self) -> (&mut [T], &mut [MaybeUninit<T>])

🔬This is a nightly-only experimental API. (vec_split_at_spare)

Returns vector content as a slice of T, along with the remaining spare\ncapacity of the vector as a slice of MaybeUninit<T>.

\n

The returned spare capacity slice can be used to fill the vector with data\n(e.g. by reading from a file) before marking the data as initialized using\nthe set_len method.

\n

Note that this is a low-level API, which should be used with care for\noptimization purposes. If you need to append data to a Vec\nyou can use push, extend, extend_from_slice,\nextend_from_within, insert, append, resize or\nresize_with, depending on your exact needs.

\n
§Examples
\n
#![feature(vec_split_at_spare)]\n\nlet mut v = vec![1, 1, 2];\n\n// Reserve additional space big enough for 10 elements.\nv.reserve(10);\n\nlet (init, uninit) = v.split_at_spare_mut();\nlet sum = init.iter().copied().sum::<u32>();\n\n// Fill in the next 4 elements.\nuninit[0].write(sum);\nuninit[1].write(sum * 2);\nuninit[2].write(sum * 3);\nuninit[3].write(sum * 4);\n\n// Mark the 4 elements of the vector as being initialized.\nunsafe {\n    let len = v.len();\n    v.set_len(len + 4);\n}\n\nassert_eq!(&v, &[1, 1, 2, 4, 8, 12, 16]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> DerefPure for Vec<T, A>
where\n A: Allocator,

","DerefPure","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Eq for Vec<T, A>
where\n T: Eq,\n A: Allocator,

","Eq","ext::secondary::CompositeData"]]],["ext",[["
1.5.0 · source§

impl<T, A> AsMut<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut [T]

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut<[T]>","ext::secondary::CompositeData"],["
1.5.0 · source§

impl<T, A> AsMut<Vec<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn as_mut(&mut self) -> &mut Vec<T, A>

Converts this type into a mutable reference of the (usually inferred) input type.
","AsMut>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> AsRef<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn as_ref(&self) -> &[T]

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef<[T]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> AsRef<Vec<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn as_ref(&self) -> &Vec<T, A>

Converts this type into a shared reference of the (usually inferred) input type.
","AsRef>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Borrow<[T]> for Vec<T, A>
where\n A: Allocator,

source§

fn borrow(&self) -> &[T]

Immutably borrows from an owned value. Read more
","Borrow<[T]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> BorrowMut<[T]> for Vec<T, A>
where\n A: Allocator,

source§

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

Mutably borrows from an owned value. Read more
","BorrowMut<[T]>","ext::secondary::CompositeData"],["
source§

impl<T> Clear for Vec<T>

source§

fn clear(&mut self)

Clear all data in self, retaining the allocated capacithy.
","Clear","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Clone for Vec<T, A>
where\n T: Clone,\n A: Allocator + Clone,

source§

fn clone_from(&mut self, source: &Vec<T, A>)

Overwrites the contents of self with a clone of the contents of source.

\n

This method is preferred over simply assigning source.clone() to self,\nas it avoids reallocation if possible. Additionally, if the element type\nT overrides clone_from(), this will reuse the resources of self’s\nelements as well.

\n
§Examples
\n
let x = vec![5, 6, 7];\nlet mut y = vec![8, 9, 10];\nlet yp: *const i32 = y.as_ptr();\n\ny.clone_from(&x);\n\n// The value is the same\nassert_eq!(x, y);\n\n// And no reallocation occurred\nassert_eq!(yp, y.as_ptr());
\n
source§

fn clone(&self) -> Vec<T, A>

Returns a copy of the value. Read more
","Clone","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Debug for Vec<T, A>
where\n T: Debug,\n A: Allocator,

source§

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

Formats the value using the given formatter. Read more
","Debug","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T> Default for Vec<T>

source§

fn default() -> Vec<T>

Creates an empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
","Default","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Deref for Vec<T, A>
where\n A: Allocator,

source§

type Target = [T]

The resulting type after dereferencing.
source§

fn deref(&self) -> &[T]

Dereferences the value.
","Deref","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> DerefMut for Vec<T, A>
where\n A: Allocator,

source§

fn deref_mut(&mut self) -> &mut [T]

Mutably dereferences the value.
","DerefMut","ext::secondary::CompositeData"],["
source§

impl<'de, T> Deserialize<'de> for Vec<T>
where\n T: Deserialize<'de>,

source§

fn deserialize<D>(\n deserializer: D,\n) -> Result<Vec<T>, <D as Deserializer<'de>>::Error>
where\n D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
","Deserialize<'de>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Drop for Vec<T, A>
where\n A: Allocator,

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
","Drop","ext::secondary::CompositeData"],["
1.2.0 · source§

impl<'a, T, A> Extend<&'a T> for Vec<T, A>
where\n T: Copy + 'a,\n A: Allocator,

Extend implementation that copies elements out of references before pushing them onto the Vec.

\n

This implementation is specialized for slice iterators, where it uses copy_from_slice to\nappend the entire slice at once.

\n
source§

fn extend<I>(&mut self, iter: I)
where\n I: IntoIterator<Item = &'a T>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, _: &'a T)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
","Extend<&'a T>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Extend<T> for Vec<T, A>
where\n A: Allocator,

source§

fn extend<I>(&mut self, iter: I)
where\n I: IntoIterator<Item = T>,

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: T)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
","Extend","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T> From<&[T]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &[T]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&[1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&[T]>","ext::secondary::CompositeData"],["
1.74.0 · source§

impl<T, const N: usize> From<&[T; N]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &[T; N]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&[1, 2, 3]), vec![1, 2, 3]);
\n
","From<&[T; N]>","ext::secondary::CompositeData"],["
1.19.0 · source§

impl<T> From<&mut [T]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &mut [T]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3][..]), vec![1, 2, 3]);
\n
","From<&mut [T]>","ext::secondary::CompositeData"],["
1.74.0 · source§

impl<T, const N: usize> From<&mut [T; N]> for Vec<T>
where\n T: Clone,

source§

fn from(s: &mut [T; N]) -> Vec<T>

Allocates a Vec<T> and fills it by cloning s’s items.

\n
§Examples
\n
assert_eq!(Vec::from(&mut [1, 2, 3]), vec![1, 2, 3]);
\n
","From<&mut [T; N]>","ext::secondary::CompositeData"],["
1.44.0 · source§

impl<T, const N: usize> From<[T; N]> for Vec<T>

source§

fn from(s: [T; N]) -> Vec<T>

Allocates a Vec<T> and moves s’s items into it.

\n
§Examples
\n
assert_eq!(Vec::from([1, 2, 3]), vec![1, 2, 3]);
\n
","From<[T; N]>","ext::secondary::CompositeData"],["
1.5.0 · source§

impl<T, A> From<BinaryHeap<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(heap: BinaryHeap<T, A>) -> Vec<T, A>

Converts a BinaryHeap<T> into a Vec<T>.

\n

This conversion requires no data movement or allocation, and has\nconstant time complexity.

\n
","From>","ext::secondary::CompositeData"],["
1.18.0 · source§

impl<T, A> From<Box<[T], A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(s: Box<[T], A>) -> Vec<T, A>

Converts a boxed slice into a vector by transferring ownership of\nthe existing heap allocation.

\n
§Examples
\n
let b: Box<[i32]> = vec![1, 2, 3].into_boxed_slice();\nassert_eq!(Vec::from(b), vec![1, 2, 3]);
\n
","From>","ext::secondary::CompositeData"],["
1.14.0 · source§

impl<'a, T> From<Cow<'a, [T]>> for Vec<T>
where\n [T]: ToOwned<Owned = Vec<T>>,

source§

fn from(s: Cow<'a, [T]>) -> Vec<T>

Converts a clone-on-write slice into a vector.

\n

If s already owns a Vec<T>, it will be returned directly.\nIf s is borrowing a slice, a new Vec<T> will be allocated and\nfilled by cloning s’s items into it.

\n
§Examples
\n
let o: Cow<'_, [i32]> = Cow::Owned(vec![1, 2, 3]);\nlet b: Cow<'_, [i32]> = Cow::Borrowed(&[1, 2, 3]);\nassert_eq!(Vec::from(o), Vec::from(b));
\n
","From>","ext::secondary::CompositeData"],["
1.10.0 · source§

impl<T, A> From<VecDeque<T, A>> for Vec<T, A>
where\n A: Allocator,

source§

fn from(other: VecDeque<T, A>) -> Vec<T, A>

Turn a VecDeque<T> into a Vec<T>.

\n

This never needs to re-allocate, but does need to do O(n) data movement if\nthe circular buffer doesn’t happen to be at the beginning of the allocation.

\n
§Examples
\n
use std::collections::VecDeque;\n\n// This one is *O*(1).\nlet deque: VecDeque<_> = (1..5).collect();\nlet ptr = deque.as_slices().0.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);\n\n// This one needs data rearranging.\nlet mut deque: VecDeque<_> = (1..5).collect();\ndeque.push_front(9);\ndeque.push_front(8);\nlet ptr = deque.as_slices().1.as_ptr();\nlet vec = Vec::from(deque);\nassert_eq!(vec, [8, 9, 1, 2, 3, 4]);\nassert_eq!(vec.as_ptr(), ptr);
\n
","From>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T> FromIterator<T> for Vec<T>

Collects an iterator into a Vec, commonly called via Iterator::collect()

\n

§Allocation behavior

\n

In general Vec does not guarantee any particular growth or allocation strategy.\nThat also applies to this trait impl.

\n

Note: This section covers implementation details and is therefore exempt from\nstability guarantees.

\n

Vec may use any or none of the following strategies,\ndepending on the supplied iterator:

\n
    \n
  • preallocate based on Iterator::size_hint()\n
      \n
    • and panic if the number of items is outside the provided lower/upper bounds
    • \n
    \n
  • \n
  • use an amortized growth strategy similar to pushing one item at a time
  • \n
  • perform the iteration in-place on the original allocation backing the iterator
  • \n
\n

The last case warrants some attention. It is an optimization that in many cases reduces peak memory\nconsumption and improves cache locality. But when big, short-lived allocations are created,\nonly a small fraction of their items get collected, no further use is made of the spare capacity\nand the resulting Vec is moved into a longer-lived structure, then this can lead to the large\nallocations having their lifetimes unnecessarily extended which can result in increased memory\nfootprint.

\n

In cases where this is an issue, the excess capacity can be discarded with Vec::shrink_to(),\nVec::shrink_to_fit() or by collecting into Box<[T]> instead, which additionally reduces\nthe size of the long-lived struct.

\n\n
static LONG_LIVED: Mutex<Vec<Vec<u16>>> = Mutex::new(Vec::new());\n\nfor i in 0..10 {\n    let big_temporary: Vec<u16> = (0..1024).collect();\n    // discard most items\n    let mut result: Vec<_> = big_temporary.into_iter().filter(|i| i % 100 == 0).collect();\n    // without this a lot of unused capacity might be moved into the global\n    result.shrink_to_fit();\n    LONG_LIVED.lock().unwrap().push(result);\n}
\n
source§

fn from_iter<I>(iter: I) -> Vec<T>
where\n I: IntoIterator<Item = T>,

Creates a value from an iterator. Read more
","FromIterator","ext::secondary::CompositeData"],["
§

impl<T> FromParallelIterator<T> for Vec<T>
where\n T: Send,

Collects items from a parallel iterator into a vector.

\n
§

fn from_par_iter<I>(par_iter: I) -> Vec<T>
where\n I: IntoParallelIterator<Item = T>,

Creates an instance of the collection from the parallel iterator par_iter. Read more
","FromParallelIterator","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Hash for Vec<T, A>
where\n T: Hash,\n A: Allocator,

The hash of a vector is the same as that of the corresponding slice,\nas required by the core::borrow::Borrow implementation.

\n\n
use std::hash::BuildHasher;\n\nlet b = std::hash::RandomState::new();\nlet v: Vec<u8> = vec![0xa8, 0x3c, 0x09];\nlet s: &[u8] = &[0xa8, 0x3c, 0x09];\nassert_eq!(b.hash_one(v), b.hash_one(s));
\n
source§

fn hash<H>(&self, state: &mut H)
where\n H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, I, A> Index<I> for Vec<T, A>
where\n I: SliceIndex<[T]>,\n A: Allocator,

source§

type Output = <I as SliceIndex<[T]>>::Output

The returned type after indexing.
source§

fn index(&self, index: I) -> &<Vec<T, A> as Index<I>>::Output

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
§

impl<T> Index<PatternID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: PatternID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
§

impl<T> Index<SmallIndex> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: SmallIndex) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
§

impl<T> Index<StateID> for Vec<T>

§

type Output = T

The returned type after indexing.
§

fn index(&self, index: StateID) -> &T

Performs the indexing (container[index]) operation. Read more
","Index","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, I, A> IndexMut<I> for Vec<T, A>
where\n I: SliceIndex<[T]>,\n A: Allocator,

source§

fn index_mut(&mut self, index: I) -> &mut <Vec<T, A> as Index<I>>::Output

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
§

impl<T> IndexMut<PatternID> for Vec<T>

§

fn index_mut(&mut self, index: PatternID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
§

impl<T> IndexMut<SmallIndex> for Vec<T>

§

fn index_mut(&mut self, index: SmallIndex) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
§

impl<T> IndexMut<StateID> for Vec<T>

§

fn index_mut(&mut self, index: StateID) -> &mut T

Performs the mutable indexing (container[index]) operation. Read more
","IndexMut","ext::secondary::CompositeData"],["
source§

impl<'de, T, E> IntoDeserializer<'de, E> for Vec<T>
where\n T: IntoDeserializer<'de, E>,\n E: Error,

source§

type Deserializer = SeqDeserializer<<Vec<T> as IntoIterator>::IntoIter, E>

The type of the deserializer being converted into.
source§

fn into_deserializer(self) -> <Vec<T> as IntoDeserializer<'de, E>>::Deserializer

Convert this value into a deserializer.
","IntoDeserializer<'de, E>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> IntoIterator for Vec<T, A>
where\n A: Allocator,

source§

fn into_iter(self) -> <Vec<T, A> as IntoIterator>::IntoIter

Creates a consuming iterator, that is, one that moves each value out of\nthe vector (from start to end). The vector cannot be used after calling\nthis.

\n
§Examples
\n
let v = vec![\"a\".to_string(), \"b\".to_string()];\nlet mut v_iter = v.into_iter();\n\nlet first_element: Option<String> = v_iter.next();\n\nassert_eq!(first_element, Some(\"a\".to_string()));\nassert_eq!(v_iter.next(), Some(\"b\".to_string()));\nassert_eq!(v_iter.next(), None);
\n
source§

type Item = T

The type of the elements being iterated over.
source§

type IntoIter = IntoIter<T, A>

Which kind of iterator are we turning this into?
","IntoIterator","ext::secondary::CompositeData"],["
§

impl<T> IntoParallelIterator for Vec<T>
where\n T: Send,

§

type Item = T

The type of item that the parallel iterator will produce.
§

type Iter = IntoIter<T>

The parallel iterator type that will be created.
§

fn into_par_iter(self) -> <Vec<T> as IntoParallelIterator>::Iter

Converts self into a parallel iterator. Read more
","IntoParallelIterator","ext::secondary::CompositeData"],["
§

impl<S, L> Layer<S> for Vec<L>
where\n L: Layer<S>,\n S: Subscriber,

§

fn on_layer(&mut self, subscriber: &mut S)

Performs late initialization when attaching a Layer to a\n[Subscriber]. Read more
§

fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest

Registers a new callsite with this layer, returning whether or not\nthe layer is interested in being notified about the callsite, similarly\nto Subscriber::register_callsite. Read more
§

fn enabled(&self, metadata: &Metadata<'_>, ctx: Context<'_, S>) -> bool

Returns true if this layer is interested in a span or event with the\ngiven metadata in the current [Context], similarly to\nSubscriber::enabled. Read more
§

fn event_enabled(&self, event: &Event<'_>, ctx: Context<'_, S>) -> bool

Called before on_event, to determine if on_event should be called. Read more
§

fn on_new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>)

Notifies this layer that a new span was constructed with the given\nAttributes and Id.
§

fn on_record(&self, span: &Id, values: &Record<'_>, ctx: Context<'_, S>)

Notifies this layer that a span with the given Id recorded the given\nvalues.
§

fn on_follows_from(&self, span: &Id, follows: &Id, ctx: Context<'_, S>)

Notifies this layer that a span with the ID span recorded that it\nfollows from the span with the ID follows.
§

fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>)

Notifies this layer that an event has occurred.
§

fn on_enter(&self, id: &Id, ctx: Context<'_, S>)

Notifies this layer that a span with the given ID was entered.
§

fn on_exit(&self, id: &Id, ctx: Context<'_, S>)

Notifies this layer that the span with the given ID was exited.
§

fn on_close(&self, id: Id, ctx: Context<'_, S>)

Notifies this layer that the span with the given ID has been closed.
§

fn on_register_dispatch(&self, subscriber: &Dispatch)

Performs late initialization when installing this layer as a\nSubscriber. Read more
§

fn on_id_change(&self, _old: &Id, _new: &Id, _ctx: Context<'_, S>)

Notifies this layer that a span ID has been cloned, and that the\nsubscriber returned a different ID.
§

fn and_then<L>(self, layer: L) -> Layered<L, Self, S>
where\n L: Layer<S>,\n Self: Sized,

Composes this layer around the given Layer, returning a Layered\nstruct implementing Layer. Read more
§

fn with_subscriber(self, inner: S) -> Layered<Self, S>
where\n Self: Sized,

Composes this Layer with the given Subscriber, returning a\nLayered struct that implements Subscriber. Read more
§

fn with_filter<F>(self, filter: F) -> Filtered<Self, F, S>
where\n Self: Sized,\n F: Filter<S>,

Combines self with a [Filter], returning a Filtered layer. Read more
","Layer","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Ord for Vec<T, A>
where\n T: Ord,\n A: Allocator,

Implements ordering of vectors, lexicographically.

\n
source§

fn cmp(&self, other: &Vec<T, A>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","ext::secondary::CompositeData"],["
§

impl<'a, T> ParallelExtend<&'a T> for Vec<T>
where\n T: 'a + Copy + Send + Sync,

Extends a vector with copied items from a parallel iterator.

\n
§

fn par_extend<I>(&mut self, par_iter: I)
where\n I: IntoParallelIterator<Item = &'a T>,

Extends an instance of the collection with the elements drawn\nfrom the parallel iterator par_iter. Read more
","ParallelExtend<&'a T>","ext::secondary::CompositeData"],["
§

impl<T> ParallelExtend<T> for Vec<T>
where\n T: Send,

Extends a vector with items from a parallel iterator.

\n
§

fn par_extend<I>(&mut self, par_iter: I)
where\n I: IntoParallelIterator<Item = T>,

Extends an instance of the collection with the elements drawn\nfrom the parallel iterator par_iter. Read more
","ParallelExtend","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&[U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U]) -> bool

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

fn ne(&self, other: &&[U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&[U]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<&[U; N]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&[U; N]) -> bool

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

fn ne(&self, other: &&[U; N]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&[U; N]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A> PartialEq<&mut [U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &&mut [U]) -> bool

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

fn ne(&self, other: &&mut [U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<&mut [U]>","ext::secondary::CompositeData"],["
1.48.0 · source§

impl<T, U, A> PartialEq<[U]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U]) -> bool

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

fn ne(&self, other: &[U]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<[U]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A, const N: usize> PartialEq<[U; N]> for Vec<T, A>
where\n A: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &[U; N]) -> bool

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

fn ne(&self, other: &[U; N]) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq<[U; N]>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, U, A1, A2> PartialEq<Vec<U, A2>> for Vec<T, A1>
where\n A1: Allocator,\n A2: Allocator,\n T: PartialEq<U>,

source§

fn eq(&self, other: &Vec<U, A2>) -> bool

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

fn ne(&self, other: &Vec<U, A2>) -> bool

Tests for !=. The default implementation is almost always sufficient,\nand should not be overridden without very good reason.
","PartialEq>","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A1, A2> PartialOrd<Vec<T, A2>> for Vec<T, A1>
where\n T: PartialOrd,\n A1: Allocator,\n A2: Allocator,

Implements comparison of vectors, lexicographically.

\n
source§

fn partial_cmp(&self, other: &Vec<T, A2>) -> Option<Ordering>

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

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

Tests less than or equal to (for self and other) and is used by the\n<= operator. Read more
1.0.0 · source§

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

Tests greater than (for self and other) and is used by the >\noperator. Read more
1.0.0 · source§

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

Tests greater than or equal to (for self and other) and is used by\nthe >= operator. Read more
","PartialOrd>","ext::secondary::CompositeData"],["
source§

impl<T> Serialize for Vec<T>
where\n T: Serialize,

source§

fn serialize<S>(\n &self,\n serializer: S,\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where\n S: Serializer,

Serialize this value into the given Serde serializer. Read more
","Serialize","ext::secondary::CompositeData"],["
source§

impl<T> Vec<T>

1.0.0 (const: 1.39.0) · source

pub const fn new() -> Vec<T>

Constructs a new, empty Vec<T>.

\n

The vector will not allocate until elements are pushed onto it.

\n
§Examples
\n
let mut vec: Vec<i32> = Vec::new();
\n
1.0.0 · source

pub fn with_capacity(capacity: usize) -> Vec<T>

Constructs a new, empty Vec<T> with at least the specified capacity.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<()>::with_capacity(10);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
source

pub fn try_with_capacity(capacity: usize) -> Result<Vec<T>, TryReserveError>

🔬This is a nightly-only experimental API. (try_with_capacity)

Constructs a new, empty Vec<T> with at least the specified capacity.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n
§Errors
\n

Returns an error if the capacity exceeds isize::MAX bytes,\nor if the allocator reports allocation failure.

\n
1.0.0 · source

pub unsafe fn from_raw_parts(\n ptr: *mut T,\n length: usize,\n capacity: usize,\n) -> Vec<T>

Creates a Vec<T> directly from a pointer, a length, and a capacity.

\n
§Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must have been allocated using the global allocator, such as via\nthe alloc::alloc function.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to be the capacity that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is normally not safe\nto build a Vec<u8> from a pointer to a C char array with length\nsize_t, doing so is only safe if the array was initially allocated by\na Vec or String.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1. To avoid\nthese issues, it is often preferable to do casting/transmuting using\nslice::from_raw_parts instead.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
§Examples
\n
use std::ptr;\nuse std::mem;\n\nlet v = vec![1, 2, 3];\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts(p, len, cap);\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
use std::alloc::{alloc, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect(\"overflow cannot happen\");\n\n    let vec = unsafe {\n        let mem = alloc(layout).cast::<u32>();\n        if mem.is_null() {\n            return;\n        }\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts(mem, 1, 16)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n T: Clone,\n A: Allocator,

1.5.0 · source

pub fn resize(&mut self, new_len: usize, value: T)

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with value.\nIf new_len is less than len, the Vec is simply truncated.

\n

This method requires T to implement Clone,\nin order to be able to clone the passed value.\nIf you need more flexibility (or want to rely on Default instead of\nClone), use Vec::resize_with.\nIf you only need to resize to a smaller size, use Vec::truncate.

\n
§Examples
\n
let mut vec = vec![\"hello\"];\nvec.resize(3, \"world\");\nassert_eq!(vec, [\"hello\", \"world\", \"world\"]);\n\nlet mut vec = vec![1, 2, 3, 4];\nvec.resize(2, 0);\nassert_eq!(vec, [1, 2]);
\n
1.6.0 · source

pub fn extend_from_slice(&mut self, other: &[T])

Clones and appends all elements in a slice to the Vec.

\n

Iterates over the slice other, clones each element, and then appends\nit to this Vec. The other slice is traversed in-order.

\n

Note that this function is same as extend except that it is\nspecialized to work with slices instead. If and when Rust gets\nspecialization this function will likely be deprecated (but still\navailable).

\n
§Examples
\n
let mut vec = vec![1];\nvec.extend_from_slice(&[2, 3, 4]);\nassert_eq!(vec, [1, 2, 3, 4]);
\n
1.53.0 · source

pub fn extend_from_within<R>(&mut self, src: R)
where\n R: RangeBounds<usize>,

Copies elements from src range to the end of the vector.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Examples
\n
let mut vec = vec![0, 1, 2, 3, 4];\n\nvec.extend_from_within(2..);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4]);\n\nvec.extend_from_within(..2);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1]);\n\nvec.extend_from_within(4..8);\nassert_eq!(vec, [0, 1, 2, 3, 4, 2, 3, 4, 0, 1, 4, 2, 3, 4]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n T: PartialEq,\n A: Allocator,

1.0.0 · source

pub fn dedup(&mut self)

Removes consecutive repeated elements in the vector according to the\nPartialEq trait implementation.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![1, 2, 2, 3, 2];\n\nvec.dedup();\n\nassert_eq!(vec, [1, 2, 3, 2]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n A: Allocator,

1.21.0 · source

pub fn splice<R, I>(\n &mut self,\n range: R,\n replace_with: I,\n) -> Splice<'_, <I as IntoIterator>::IntoIter, A>
where\n R: RangeBounds<usize>,\n I: IntoIterator<Item = T>,

Creates a splicing iterator that replaces the specified range in the vector\nwith the given replace_with iterator and yields the removed items.\nreplace_with does not need to be the same length as range.

\n

range is removed even if the iterator is not consumed until the end.

\n

It is unspecified how many elements are removed from the vector\nif the Splice value is leaked.

\n

The input iterator replace_with is only consumed when the Splice value is dropped.

\n

This is optimal if:

\n
    \n
  • The tail (elements in the vector after range) is empty,
  • \n
  • or replace_with yields fewer or equal elements than range’s length
  • \n
  • or the lower bound of its size_hint() is exact.
  • \n
\n

Otherwise, a temporary vector is allocated and the tail is moved twice.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Examples
\n
let mut v = vec![1, 2, 3, 4];\nlet new = [7, 8, 9];\nlet u: Vec<_> = v.splice(1..3, new).collect();\nassert_eq!(v, &[1, 7, 8, 9, 4]);\nassert_eq!(u, &[2, 3]);
\n
source

pub fn extract_if<F>(&mut self, filter: F) -> ExtractIf<'_, T, F, A>
where\n F: FnMut(&mut T) -> bool,

🔬This is a nightly-only experimental API. (extract_if)

Creates an iterator which uses a closure to determine if an element should be removed.

\n

If the closure returns true, then the element is removed and yielded.\nIf the closure returns false, the element will remain in the vector and will not be yielded\nby the iterator.

\n

If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

\n

Using this method is equivalent to the following code:

\n\n
let mut i = 0;\nwhile i < vec.len() {\n    if some_predicate(&mut vec[i]) {\n        let val = vec.remove(i);\n        // your code here\n    } else {\n        i += 1;\n    }\n}\n
\n

But extract_if is easier to use. extract_if is also more efficient,\nbecause it can backshift the elements of the array in bulk.

\n

Note that extract_if also lets you mutate every element in the filter closure,\nregardless of whether you choose to keep or remove it.

\n
§Examples
\n

Splitting an array into evens and odds, reusing the original allocation:

\n\n
#![feature(extract_if)]\nlet mut numbers = vec![1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15];\n\nlet evens = numbers.extract_if(|x| *x % 2 == 0).collect::<Vec<_>>();\nlet odds = numbers;\n\nassert_eq!(evens, vec![2, 4, 6, 8, 14]);\nassert_eq!(odds, vec![1, 3, 5, 9, 11, 13, 15]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> Vec<T, A>
where\n A: Allocator,

source

pub const fn new_in(alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A>.

\n

The vector will not allocate until elements are pushed onto it.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec: Vec<i32, _> = Vec::new_in(System);
\n
source

pub fn with_capacity_in(capacity: usize, alloc: A) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A> with at least the specified capacity\nwith the provided allocator.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n

It is important to note that although the returned vector has the\nminimum capacity specified, the vector will have a zero length. For\nan explanation of the difference between length and capacity, see\nCapacity and reallocation.

\n

If it is important to know the exact allocated capacity of a Vec,\nalways use the capacity method after construction.

\n

For Vec<T, A> where T is a zero-sized type, there will be no allocation\nand the capacity will always be usize::MAX.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet mut vec = Vec::with_capacity_in(10, System);\n\n// The vector contains no items, even though it has capacity for more\nassert_eq!(vec.len(), 0);\nassert!(vec.capacity() >= 10);\n\n// These are all done without reallocating...\nfor i in 0..10 {\n    vec.push(i);\n}\nassert_eq!(vec.len(), 10);\nassert!(vec.capacity() >= 10);\n\n// ...but this may make the vector reallocate\nvec.push(11);\nassert_eq!(vec.len(), 11);\nassert!(vec.capacity() >= 11);\n\n// A vector of a zero-sized type will always over-allocate, since no\n// allocation is necessary\nlet vec_units = Vec::<(), System>::with_capacity_in(10, System);\nassert_eq!(vec_units.capacity(), usize::MAX);
\n
source

pub fn try_with_capacity_in(\n capacity: usize,\n alloc: A,\n) -> Result<Vec<T, A>, TryReserveError>

🔬This is a nightly-only experimental API. (allocator_api)

Constructs a new, empty Vec<T, A> with at least the specified capacity\nwith the provided allocator.

\n

The vector will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the vector will not allocate.

\n
§Errors
\n

Returns an error if the capacity exceeds isize::MAX bytes,\nor if the allocator reports allocation failure.

\n
source

pub unsafe fn from_raw_parts_in(\n ptr: *mut T,\n length: usize,\n capacity: usize,\n alloc: A,\n) -> Vec<T, A>

🔬This is a nightly-only experimental API. (allocator_api)

Creates a Vec<T, A> directly from a pointer, a length, a capacity,\nand an allocator.

\n
§Safety
\n

This is highly unsafe, due to the number of invariants that aren’t\nchecked:

\n
    \n
  • ptr must be currently allocated via the given allocator alloc.
  • \n
  • T needs to have the same alignment as what ptr was allocated with.\n(T having a less strict alignment is not sufficient, the alignment really\nneeds to be equal to satisfy the dealloc requirement that memory must be\nallocated and deallocated with the same layout.)
  • \n
  • The size of T times the capacity (ie. the allocated size in bytes) needs\nto be the same size as the pointer was allocated with. (Because similar to\nalignment, dealloc must be called with the same layout size.)
  • \n
  • length needs to be less than or equal to capacity.
  • \n
  • The first length values must be properly initialized values of type T.
  • \n
  • capacity needs to fit the layout size that the pointer was allocated with.
  • \n
  • The allocated size in bytes must be no larger than isize::MAX.\nSee the safety documentation of pointer::offset.
  • \n
\n

These requirements are always upheld by any ptr that has been allocated\nvia Vec<T, A>. Other allocation sources are allowed if the invariants are\nupheld.

\n

Violating these may cause problems like corrupting the allocator’s\ninternal data structures. For example it is not safe\nto build a Vec<u8> from a pointer to a C char array with length size_t.\nIt’s also not safe to build one from a Vec<u16> and its length, because\nthe allocator cares about the alignment, and these two types have different\nalignments. The buffer was allocated with alignment 2 (for u16), but after\nturning it into a Vec<u8> it’ll be deallocated with alignment 1.

\n

The ownership of ptr is effectively transferred to the\nVec<T> which may then deallocate, reallocate or change the\ncontents of memory pointed to by the pointer at will. Ensure\nthat nothing else uses the pointer after calling this\nfunction.

\n
§Examples
\n
#![feature(allocator_api)]\n\nuse std::alloc::System;\n\nuse std::ptr;\nuse std::mem;\n\nlet mut v = Vec::with_capacity_in(3, System);\nv.push(1);\nv.push(2);\nv.push(3);\n\n// Prevent running `v`'s destructor so we are in complete control\n// of the allocation.\nlet mut v = mem::ManuallyDrop::new(v);\n\n// Pull out the various important pieces of information about `v`\nlet p = v.as_mut_ptr();\nlet len = v.len();\nlet cap = v.capacity();\nlet alloc = v.allocator();\n\nunsafe {\n    // Overwrite memory with 4, 5, 6\n    for i in 0..len {\n        ptr::write(p.add(i), 4 + i);\n    }\n\n    // Put everything back together into a Vec\n    let rebuilt = Vec::from_raw_parts_in(p, len, cap, alloc.clone());\n    assert_eq!(rebuilt, [4, 5, 6]);\n}
\n

Using memory that was allocated elsewhere:

\n\n
#![feature(allocator_api)]\n\nuse std::alloc::{AllocError, Allocator, Global, Layout};\n\nfn main() {\n    let layout = Layout::array::<u32>(16).expect(\"overflow cannot happen\");\n\n    let vec = unsafe {\n        let mem = match Global.allocate(layout) {\n            Ok(mem) => mem.cast::<u32>().as_ptr(),\n            Err(AllocError) => return,\n        };\n\n        mem.write(1_000_000);\n\n        Vec::from_raw_parts_in(mem, 1, 16, Global)\n    };\n\n    assert_eq!(vec, &[1_000_000]);\n    assert_eq!(vec.capacity(), 16);\n}
\n
source

pub fn into_raw_parts(self) -> (*mut T, usize, usize)

🔬This is a nightly-only experimental API. (vec_into_raw_parts)

Decomposes a Vec<T> into its raw components: (pointer, length, capacity).

\n

Returns the raw pointer to the underlying data, the length of\nthe vector (in elements), and the allocated capacity of the\ndata (in elements). These are the same arguments in the same\norder as the arguments to from_raw_parts.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts function, allowing\nthe destructor to perform the cleanup.

\n
§Examples
\n
#![feature(vec_into_raw_parts)]\nlet v: Vec<i32> = vec![-1, 0, 1];\n\nlet (ptr, len, cap) = v.into_raw_parts();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts(ptr, len, cap)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
source

pub fn into_raw_parts_with_alloc(self) -> (*mut T, usize, usize, A)

🔬This is a nightly-only experimental API. (allocator_api)

Decomposes a Vec<T> into its raw components: (pointer, length, capacity, allocator).

\n

Returns the raw pointer to the underlying data, the length of the vector (in elements),\nthe allocated capacity of the data (in elements), and the allocator. These are the same\narguments in the same order as the arguments to from_raw_parts_in.

\n

After calling this function, the caller is responsible for the\nmemory previously managed by the Vec. The only way to do\nthis is to convert the raw pointer, length, and capacity back\ninto a Vec with the from_raw_parts_in function, allowing\nthe destructor to perform the cleanup.

\n
§Examples
\n
#![feature(allocator_api, vec_into_raw_parts)]\n\nuse std::alloc::System;\n\nlet mut v: Vec<i32, System> = Vec::new_in(System);\nv.push(-1);\nv.push(0);\nv.push(1);\n\nlet (ptr, len, cap, alloc) = v.into_raw_parts_with_alloc();\n\nlet rebuilt = unsafe {\n    // We can now make changes to the components, such as\n    // transmuting the raw pointer to a compatible type.\n    let ptr = ptr as *mut u32;\n\n    Vec::from_raw_parts_in(ptr, len, cap, alloc)\n};\nassert_eq!(rebuilt, [4294967295, 0, 1]);
\n
1.0.0 · source

pub fn capacity(&self) -> usize

Returns the total number of elements the vector can hold without\nreallocating.

\n
§Examples
\n
let mut vec: Vec<i32> = Vec::with_capacity(10);\nvec.push(42);\nassert!(vec.capacity() >= 10);
\n
1.0.0 · source

pub fn reserve(&mut self, additional: usize)

Reserves capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to\nspeculatively avoid frequent reallocations. After calling reserve,\ncapacity will be greater than or equal to self.len() + additional.\nDoes nothing if capacity is already sufficient.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1];\nvec.reserve(10);\nassert!(vec.capacity() >= 11);
\n
1.0.0 · source

pub fn reserve_exact(&mut self, additional: usize)

Reserves the minimum capacity for at least additional more elements to\nbe inserted in the given Vec<T>. Unlike reserve, this will not\ndeliberately over-allocate to speculatively avoid frequent allocations.\nAfter calling reserve_exact, capacity will be greater than or equal to\nself.len() + additional. Does nothing if the capacity is already\nsufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer reserve if future insertions are expected.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1];\nvec.reserve_exact(10);\nassert!(vec.capacity() >= 11);
\n
1.57.0 · source

pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>

Tries to reserve capacity for at least additional more elements to be inserted\nin the given Vec<T>. The collection may reserve more space to speculatively avoid\nfrequent reallocations. After calling try_reserve, capacity will be\ngreater than or equal to self.len() + additional if it returns\nOk(()). Does nothing if capacity is already sufficient. This method\npreserves the contents even if an error occurs.

\n
§Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
§Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.57.0 · source

pub fn try_reserve_exact(\n &mut self,\n additional: usize,\n) -> Result<(), TryReserveError>

Tries to reserve the minimum capacity for at least additional\nelements to be inserted in the given Vec<T>. Unlike try_reserve,\nthis will not deliberately over-allocate to speculatively avoid frequent\nallocations. After calling try_reserve_exact, capacity will be greater\nthan or equal to self.len() + additional if it returns Ok(()).\nDoes nothing if the capacity is already sufficient.

\n

Note that the allocator may give the collection more space than it\nrequests. Therefore, capacity can not be relied upon to be precisely\nminimal. Prefer try_reserve if future insertions are expected.

\n
§Errors
\n

If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

\n
§Examples
\n
use std::collections::TryReserveError;\n\nfn process_data(data: &[u32]) -> Result<Vec<u32>, TryReserveError> {\n    let mut output = Vec::new();\n\n    // Pre-reserve the memory, exiting if we can't\n    output.try_reserve_exact(data.len())?;\n\n    // Now we know this can't OOM in the middle of our complex work\n    output.extend(data.iter().map(|&val| {\n        val * 2 + 5 // very complicated\n    }));\n\n    Ok(output)\n}
\n
1.0.0 · source

pub fn shrink_to_fit(&mut self)

Shrinks the capacity of the vector as much as possible.

\n

The behavior of this method depends on the allocator, which may either shrink the vector\nin-place or reallocate. The resulting vector might still have some excess capacity, just as\nis the case for with_capacity. See Allocator::shrink for more details.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to_fit();\nassert!(vec.capacity() >= 3);
\n
1.56.0 · source

pub fn shrink_to(&mut self, min_capacity: usize)

Shrinks the capacity of the vector with a lower bound.

\n

The capacity will remain at least as large as both the length\nand the supplied value.

\n

If the current capacity is less than the lower limit, this is a no-op.

\n
§Examples
\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\nassert!(vec.capacity() >= 10);\nvec.shrink_to(4);\nassert!(vec.capacity() >= 4);\nvec.shrink_to(0);\nassert!(vec.capacity() >= 3);
\n
1.0.0 · source

pub fn into_boxed_slice(self) -> Box<[T], A>

Converts the vector into Box<[T]>.

\n

Before doing the conversion, this method discards excess capacity like shrink_to_fit.

\n
§Examples
\n
let v = vec![1, 2, 3];\n\nlet slice = v.into_boxed_slice();
\n

Any excess capacity is removed:

\n\n
let mut vec = Vec::with_capacity(10);\nvec.extend([1, 2, 3]);\n\nassert!(vec.capacity() >= 10);\nlet slice = vec.into_boxed_slice();\nassert_eq!(slice.into_vec().capacity(), 3);
\n
1.0.0 · source

pub fn truncate(&mut self, len: usize)

Shortens the vector, keeping the first len elements and dropping\nthe rest.

\n

If len is greater or equal to the vector’s current length, this has\nno effect.

\n

The drain method can emulate truncate, but causes the excess\nelements to be returned instead of dropped.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
§Examples
\n

Truncating a five element vector to two elements:

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nvec.truncate(2);\nassert_eq!(vec, [1, 2]);
\n

No truncation occurs when len is greater than the vector’s current\nlength:

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(8);\nassert_eq!(vec, [1, 2, 3]);
\n

Truncating when len == 0 is equivalent to calling the clear\nmethod.

\n\n
let mut vec = vec![1, 2, 3];\nvec.truncate(0);\nassert_eq!(vec, []);
\n
1.7.0 · source

pub fn as_slice(&self) -> &[T]

Extracts a slice containing the entire vector.

\n

Equivalent to &s[..].

\n
§Examples
\n
use std::io::{self, Write};\nlet buffer = vec![1, 2, 3, 5, 8];\nio::sink().write(buffer.as_slice()).unwrap();
\n
1.7.0 · source

pub fn as_mut_slice(&mut self) -> &mut [T]

Extracts a mutable slice of the entire vector.

\n

Equivalent to &mut s[..].

\n
§Examples
\n
use std::io::{self, Read};\nlet mut buffer = vec![0; 3];\nio::repeat(0b101).read_exact(buffer.as_mut_slice()).unwrap();
\n
1.37.0 · source

pub fn as_ptr(&self) -> *const T

Returns a raw pointer to the vector’s buffer, or a dangling raw pointer\nvalid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up dangling.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

The caller must also ensure that the memory the pointer (non-transitively) points to\nis never written to (except inside an UnsafeCell) using this pointer or any pointer\nderived from it. If you need to mutate the contents of the slice, use as_mut_ptr.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize mutable references to the slice,\nor mutable references to specific elements you are planning on accessing through this pointer,\nas well as writing to those elements, may still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
§Examples
\n
let x = vec![1, 2, 4];\nlet x_ptr = x.as_ptr();\n\nunsafe {\n    for i in 0..x.len() {\n        assert_eq!(*x_ptr.add(i), 1 << i);\n    }\n}
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0, 1, 2];\n    let ptr1 = v.as_ptr();\n    let _ = ptr1.read();\n    let ptr2 = v.as_mut_ptr().offset(2);\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`\n    // because it mutated a different element:\n    let _ = ptr1.read();\n}
\n
1.37.0 · source

pub fn as_mut_ptr(&mut self) -> *mut T

Returns a raw mutable pointer to the vector’s buffer, or a dangling\nraw pointer valid for zero sized reads if the vector didn’t allocate.

\n

The caller must ensure that the vector outlives the pointer this\nfunction returns, or else it will end up dangling.\nModifying the vector may cause its buffer to be reallocated,\nwhich would also make any pointers to it invalid.

\n

This method guarantees that for the purpose of the aliasing model, this method\ndoes not materialize a reference to the underlying slice, and thus the returned pointer\nwill remain valid when mixed with other calls to as_ptr and as_mut_ptr.\nNote that calling other methods that materialize references to the slice,\nor references to specific elements you are planning on accessing through this pointer,\nmay still invalidate this pointer.\nSee the second example below for how this guarantee can be used.

\n
§Examples
\n
// Allocate vector big enough for 4 elements.\nlet size = 4;\nlet mut x: Vec<i32> = Vec::with_capacity(size);\nlet x_ptr = x.as_mut_ptr();\n\n// Initialize elements via raw pointer writes, then set length.\nunsafe {\n    for i in 0..size {\n        *x_ptr.add(i) = i as i32;\n    }\n    x.set_len(size);\n}\nassert_eq!(&*x, &[0, 1, 2, 3]);
\n

Due to the aliasing guarantee, the following code is legal:

\n\n
unsafe {\n    let mut v = vec![0];\n    let ptr1 = v.as_mut_ptr();\n    ptr1.write(1);\n    let ptr2 = v.as_mut_ptr();\n    ptr2.write(2);\n    // Notably, the write to `ptr2` did *not* invalidate `ptr1`:\n    ptr1.write(3);\n}
\n
source

pub fn allocator(&self) -> &A

🔬This is a nightly-only experimental API. (allocator_api)

Returns a reference to the underlying allocator.

\n
1.0.0 · source

pub unsafe fn set_len(&mut self, new_len: usize)

Forces the length of the vector to new_len.

\n

This is a low-level operation that maintains none of the normal\ninvariants of the type. Normally changing the length of a vector\nis done using one of the safe operations instead, such as\ntruncate, resize, extend, or clear.

\n
§Safety
\n
    \n
  • new_len must be less than or equal to capacity().
  • \n
  • The elements at old_len..new_len must be initialized.
  • \n
\n
§Examples
\n

This method can be useful for situations in which the vector\nis serving as a buffer for other code, particularly over FFI:

\n\n
pub fn get_dictionary(&self) -> Option<Vec<u8>> {\n    // Per the FFI method's docs, \"32768 bytes is always enough\".\n    let mut dict = Vec::with_capacity(32_768);\n    let mut dict_length = 0;\n    // SAFETY: When `deflateGetDictionary` returns `Z_OK`, it holds that:\n    // 1. `dict_length` elements were initialized.\n    // 2. `dict_length` <= the capacity (32_768)\n    // which makes `set_len` safe to call.\n    unsafe {\n        // Make the FFI call...\n        let r = deflateGetDictionary(self.strm, dict.as_mut_ptr(), &mut dict_length);\n        if r == Z_OK {\n            // ...and update the length to what was initialized.\n            dict.set_len(dict_length);\n            Some(dict)\n        } else {\n            None\n        }\n    }\n}
\n

While the following example is sound, there is a memory leak since\nthe inner vectors were not freed prior to the set_len call:

\n\n
let mut vec = vec![vec![1, 0, 0],\n                   vec![0, 1, 0],\n                   vec![0, 0, 1]];\n// SAFETY:\n// 1. `old_len..0` is empty so no elements need to be initialized.\n// 2. `0 <= capacity` always holds whatever `capacity` is.\nunsafe {\n    vec.set_len(0);\n}
\n

Normally, here, one would use clear instead to correctly drop\nthe contents and thus not leak memory.

\n
1.0.0 · source

pub fn swap_remove(&mut self, index: usize) -> T

Removes an element from the vector and returns it.

\n

The removed element is replaced by the last element of the vector.

\n

This does not preserve ordering of the remaining elements, but is O(1).\nIf you need to preserve the element order, use remove instead.

\n
§Panics
\n

Panics if index is out of bounds.

\n
§Examples
\n
let mut v = vec![\"foo\", \"bar\", \"baz\", \"qux\"];\n\nassert_eq!(v.swap_remove(1), \"bar\");\nassert_eq!(v, [\"foo\", \"qux\", \"baz\"]);\n\nassert_eq!(v.swap_remove(0), \"foo\");\nassert_eq!(v, [\"baz\", \"qux\"]);
\n
1.0.0 · source

pub fn insert(&mut self, index: usize, element: T)

Inserts an element at position index within the vector, shifting all\nelements after it to the right.

\n
§Panics
\n

Panics if index > len.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nvec.insert(1, 4);\nassert_eq!(vec, [1, 4, 2, 3]);\nvec.insert(4, 5);\nassert_eq!(vec, [1, 4, 2, 3, 5]);
\n
§Time complexity
\n

Takes O(Vec::len) time. All items after the insertion index must be\nshifted to the right. In the worst case, all elements are shifted when\nthe insertion index is 0.

\n
1.0.0 · source

pub fn remove(&mut self, index: usize) -> T

Removes and returns the element at position index within the vector,\nshifting all elements after it to the left.

\n

Note: Because this shifts over the remaining elements, it has a\nworst-case performance of O(n). If you don’t need the order of elements\nto be preserved, use swap_remove instead. If you’d like to remove\nelements from the beginning of the Vec, consider using\nVecDeque::pop_front instead.

\n
§Panics
\n

Panics if index is out of bounds.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\nassert_eq!(v.remove(1), 2);\nassert_eq!(v, [1, 3]);
\n
1.0.0 · source

pub fn retain<F>(&mut self, f: F)
where\n F: FnMut(&T) -> bool,

Retains only the elements specified by the predicate.

\n

In other words, remove all elements e for which f(&e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
§Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain(|&x| x % 2 == 0);\nassert_eq!(vec, [2, 4]);
\n

Because the elements are visited exactly once in the original order,\nexternal state may be used to decide which elements to keep.

\n\n
let mut vec = vec![1, 2, 3, 4, 5];\nlet keep = [false, true, true, false, true];\nlet mut iter = keep.iter();\nvec.retain(|_| *iter.next().unwrap());\nassert_eq!(vec, [2, 3, 5]);
\n
1.61.0 · source

pub fn retain_mut<F>(&mut self, f: F)
where\n F: FnMut(&mut T) -> bool,

Retains only the elements specified by the predicate, passing a mutable reference to it.

\n

In other words, remove all elements e such that f(&mut e) returns false.\nThis method operates in place, visiting each element exactly once in the\noriginal order, and preserves the order of the retained elements.

\n
§Examples
\n
let mut vec = vec![1, 2, 3, 4];\nvec.retain_mut(|x| if *x <= 3 {\n    *x += 1;\n    true\n} else {\n    false\n});\nassert_eq!(vec, [2, 3, 4]);
\n
1.16.0 · source

pub fn dedup_by_key<F, K>(&mut self, key: F)
where\n F: FnMut(&mut T) -> K,\n K: PartialEq,

Removes all but the first of consecutive elements in the vector that resolve to the same\nkey.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![10, 20, 21, 30, 20];\n\nvec.dedup_by_key(|i| *i / 10);\n\nassert_eq!(vec, [10, 20, 30, 20]);
\n
1.16.0 · source

pub fn dedup_by<F>(&mut self, same_bucket: F)
where\n F: FnMut(&mut T, &mut T) -> bool,

Removes all but the first of consecutive elements in the vector satisfying a given equality\nrelation.

\n

The same_bucket function is passed references to two elements from the vector and\nmust determine if the elements compare equal. The elements are passed in opposite order\nfrom their order in the slice, so if same_bucket(a, b) returns true, a is removed.

\n

If the vector is sorted, this removes all duplicates.

\n
§Examples
\n
let mut vec = vec![\"foo\", \"bar\", \"Bar\", \"baz\", \"bar\"];\n\nvec.dedup_by(|a, b| a.eq_ignore_ascii_case(b));\n\nassert_eq!(vec, [\"foo\", \"bar\", \"baz\", \"bar\"]);
\n
1.0.0 · source

pub fn push(&mut self, value: T)

Appends an element to the back of a collection.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1, 2];\nvec.push(3);\nassert_eq!(vec, [1, 2, 3]);
\n
§Time complexity
\n

Takes amortized O(1) time. If the vector’s length would exceed its\ncapacity after the push, O(capacity) time is taken to copy the\nvector’s elements to a larger allocation. This expensive operation is\noffset by the capacity O(1) insertions it allows.

\n
source

pub fn push_within_capacity(&mut self, value: T) -> Result<(), T>

🔬This is a nightly-only experimental API. (vec_push_within_capacity)

Appends an element if there is sufficient spare capacity, otherwise an error is returned\nwith the element.

\n

Unlike push this method will not reallocate when there’s insufficient capacity.\nThe caller should use reserve or try_reserve to ensure that there is enough capacity.

\n
§Examples
\n

A manual, panic-free alternative to FromIterator:

\n\n
#![feature(vec_push_within_capacity)]\n\nuse std::collections::TryReserveError;\nfn from_iter_fallible<T>(iter: impl Iterator<Item=T>) -> Result<Vec<T>, TryReserveError> {\n    let mut vec = Vec::new();\n    for value in iter {\n        if let Err(value) = vec.push_within_capacity(value) {\n            vec.try_reserve(1)?;\n            // this cannot fail, the previous line either returned or added at least 1 free slot\n            let _ = vec.push_within_capacity(value);\n        }\n    }\n    Ok(vec)\n}\nassert_eq!(from_iter_fallible(0..100), Ok(Vec::from_iter(0..100)));
\n
§Time complexity
\n

Takes O(1) time.

\n
1.0.0 · source

pub fn pop(&mut self) -> Option<T>

Removes the last element from a vector and returns it, or None if it\nis empty.

\n

If you’d like to pop the first element, consider using\nVecDeque::pop_front instead.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nassert_eq!(vec.pop(), Some(3));\nassert_eq!(vec, [1, 2]);
\n
§Time complexity
\n

Takes O(1) time.

\n
source

pub fn pop_if<F>(&mut self, f: F) -> Option<T>
where\n F: FnOnce(&mut T) -> bool,

🔬This is a nightly-only experimental API. (vec_pop_if)

Removes and returns the last element in a vector if the predicate\nreturns true, or None if the predicate returns false or the vector\nis empty.

\n
§Examples
\n
#![feature(vec_pop_if)]\n\nlet mut vec = vec![1, 2, 3, 4];\nlet pred = |x: &mut i32| *x % 2 == 0;\n\nassert_eq!(vec.pop_if(pred), Some(4));\nassert_eq!(vec, [1, 2, 3]);\nassert_eq!(vec.pop_if(pred), None);
\n
1.4.0 · source

pub fn append(&mut self, other: &mut Vec<T, A>)

Moves all the elements of other into self, leaving other empty.

\n
§Panics
\n

Panics if the new capacity exceeds isize::MAX bytes.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nlet mut vec2 = vec![4, 5, 6];\nvec.append(&mut vec2);\nassert_eq!(vec, [1, 2, 3, 4, 5, 6]);\nassert_eq!(vec2, []);
\n
1.6.0 · source

pub fn drain<R>(&mut self, range: R) -> Drain<'_, T, A>
where\n R: RangeBounds<usize>,

Removes the specified range from the vector in bulk, returning all\nremoved elements as an iterator. If the iterator is dropped before\nbeing fully consumed, it drops the remaining removed elements.

\n

The returned iterator keeps a mutable borrow on the vector to optimize\nits implementation.

\n
§Panics
\n

Panics if the starting point is greater than the end point or if\nthe end point is greater than the length of the vector.

\n
§Leaking
\n

If the returned iterator goes out of scope without being dropped (due to\nmem::forget, for example), the vector may have lost and leaked\nelements arbitrarily, including elements outside the range.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\nlet u: Vec<_> = v.drain(1..).collect();\nassert_eq!(v, &[1]);\nassert_eq!(u, &[2, 3]);\n\n// A full range clears the vector, like `clear()` does\nv.drain(..);\nassert_eq!(v, &[]);
\n
1.0.0 · source

pub fn clear(&mut self)

Clears the vector, removing all values.

\n

Note that this method has no effect on the allocated capacity\nof the vector.

\n
§Examples
\n
let mut v = vec![1, 2, 3];\n\nv.clear();\n\nassert!(v.is_empty());
\n
1.0.0 · source

pub fn len(&self) -> usize

Returns the number of elements in the vector, also referred to\nas its ‘length’.

\n
§Examples
\n
let a = vec![1, 2, 3];\nassert_eq!(a.len(), 3);
\n
1.0.0 · source

pub fn is_empty(&self) -> bool

Returns true if the vector contains no elements.

\n
§Examples
\n
let mut v = Vec::new();\nassert!(v.is_empty());\n\nv.push(1);\nassert!(!v.is_empty());
\n
1.4.0 · source

pub fn split_off(&mut self, at: usize) -> Vec<T, A>
where\n A: Clone,

Splits the collection into two at the given index.

\n

Returns a newly allocated vector containing the elements in the range\n[at, len). After the call, the original vector will be left containing\nthe elements [0, at) with its previous capacity unchanged.

\n
    \n
  • If you want to take ownership of the entire contents and capacity of\nthe vector, see mem::take or mem::replace.
  • \n
  • If you don’t need the returned vector at all, see Vec::truncate.
  • \n
  • If you want to take ownership of an arbitrary subslice, or you don’t\nnecessarily want to store the removed items in a vector, see Vec::drain.
  • \n
\n
§Panics
\n

Panics if at > len.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nlet vec2 = vec.split_off(1);\nassert_eq!(vec, [1]);\nassert_eq!(vec2, [2, 3]);
\n
1.33.0 · source

pub fn resize_with<F>(&mut self, new_len: usize, f: F)
where\n F: FnMut() -> T,

Resizes the Vec in-place so that len is equal to new_len.

\n

If new_len is greater than len, the Vec is extended by the\ndifference, with each additional slot filled with the result of\ncalling the closure f. The return values from f will end up\nin the Vec in the order they have been generated.

\n

If new_len is less than len, the Vec is simply truncated.

\n

This method uses a closure to create new values on every push. If\nyou’d rather Clone a given value, use Vec::resize. If you\nwant to use the Default trait to generate values, you can\npass Default::default as the second argument.

\n
§Examples
\n
let mut vec = vec![1, 2, 3];\nvec.resize_with(5, Default::default);\nassert_eq!(vec, [1, 2, 3, 0, 0]);\n\nlet mut vec = vec![];\nlet mut p = 1;\nvec.resize_with(4, || { p *= 2; p });\nassert_eq!(vec, [2, 4, 8, 16]);
\n
1.47.0 · source

pub fn leak<'a>(self) -> &'a mut [T]
where\n A: 'a,

Consumes and leaks the Vec, returning a mutable reference to the contents,\n&'a mut [T].

\n

Note that the type T must outlive the chosen lifetime 'a. If the type\nhas only static references, or none at all, then this may be chosen to be\n'static.

\n

As of Rust 1.57, this method does not reallocate or shrink the Vec,\nso the leaked allocation may include unused capacity that is not part\nof the returned slice.

\n

This function is mainly useful for data that lives for the remainder of\nthe program’s life. Dropping the returned reference will cause a memory\nleak.

\n
§Examples
\n

Simple usage:

\n\n
let x = vec![1, 2, 3];\nlet static_ref: &'static mut [usize] = x.leak();\nstatic_ref[0] += 1;\nassert_eq!(static_ref, &[2, 2, 3]);
\n
1.60.0 · source

pub fn spare_capacity_mut(&mut self) -> &mut [MaybeUninit<T>]

Returns the remaining spare capacity of the vector as a slice of\nMaybeUninit<T>.

\n

The returned slice can be used to fill the vector with data (e.g. by\nreading from a file) before marking the data as initialized using the\nset_len method.

\n
§Examples
\n
// Allocate vector big enough for 10 elements.\nlet mut v = Vec::with_capacity(10);\n\n// Fill in the first 3 elements.\nlet uninit = v.spare_capacity_mut();\nuninit[0].write(0);\nuninit[1].write(1);\nuninit[2].write(2);\n\n// Mark the first 3 elements of the vector as being initialized.\nunsafe {\n    v.set_len(3);\n}\n\nassert_eq!(&v, &[0, 1, 2]);
\n
source

pub fn split_at_spare_mut(&mut self) -> (&mut [T], &mut [MaybeUninit<T>])

🔬This is a nightly-only experimental API. (vec_split_at_spare)

Returns vector content as a slice of T, along with the remaining spare\ncapacity of the vector as a slice of MaybeUninit<T>.

\n

The returned spare capacity slice can be used to fill the vector with data\n(e.g. by reading from a file) before marking the data as initialized using\nthe set_len method.

\n

Note that this is a low-level API, which should be used with care for\noptimization purposes. If you need to append data to a Vec\nyou can use push, extend, extend_from_slice,\nextend_from_within, insert, append, resize or\nresize_with, depending on your exact needs.

\n
§Examples
\n
#![feature(vec_split_at_spare)]\n\nlet mut v = vec![1, 1, 2];\n\n// Reserve additional space big enough for 10 elements.\nv.reserve(10);\n\nlet (init, uninit) = v.split_at_spare_mut();\nlet sum = init.iter().copied().sum::<u32>();\n\n// Fill in the next 4 elements.\nuninit[0].write(sum);\nuninit[1].write(sum * 2);\nuninit[2].write(sum * 3);\nuninit[3].write(sum * 4);\n\n// Mark the 4 elements of the vector as being initialized.\nunsafe {\n    let len = v.len();\n    v.set_len(len + 4);\n}\n\nassert_eq!(&v, &[1, 1, 2, 4, 8, 12, 16]);
\n
",0,"ext::secondary::CompositeData"],["
source§

impl<T, A> DerefPure for Vec<T, A>
where\n A: Allocator,

","DerefPure","ext::secondary::CompositeData"],["
1.0.0 · source§

impl<T, A> Eq for Vec<T, A>
where\n T: Eq,\n A: Allocator,

","Eq","ext::secondary::CompositeData"]]]]); if (window.register_type_impls) { window.register_type_impls(type_impls); } else { diff --git a/sseq_gui_wasm_bg.wasm b/sseq_gui_wasm_bg.wasm index c27c342b8..a43589307 100644 Binary files a/sseq_gui_wasm_bg.wasm and b/sseq_gui_wasm_bg.wasm differ