Module prelude

Source

Re-exports§

pub use crate::echo;
pub use crate::echo;
pub use crate::dijkstra::Dijkstra;
pub use crate::union_find::UnionFind;
pub use crate::constants::*;
pub use crate::echo::*;
pub use crate::modulo::*;
pub use crate::prime::*;
pub use crate::total_ord::*;
pub use crate::utils::*;

Modules§

__std_iter
Composable external iteration.
bigint
binary_heap
A priority queue implemented with a binary heap.
btree_map
An ordered map based on a B-Tree.
btree_set
An ordered set based on a B-Tree.
cast
complex
hash_map
A hash map implemented with quadratic probing and SIMD lookup.
hash_set
A hash set implemented as a HashMap where the value is ().
integer
iter
linked_list
A doubly-linked list with owned nodes.
marker
Declares special marker types.
pow
rational
source
Defines whitespace-splitted token stream wrapping actual stream like stdin.
vec_deque
A double-ended queue (deque) implemented with a growable ring buffer.

Macros§

btreemap
Create a BTreeMap from a list of key-value pairs
btreeset
Create a BTreeSet from a list of elements.
convert_args
Macro that converts the keys or key-value pairs passed to another maplit macro. The default conversion is to use the Into trait, if no custom conversion is passed.
echo
hashmap
Create a HashMap from a list of key-value pairs
hashset
Create a HashSet from a list of elements.
input
read input from stdin.
input_interactive
read input from stdin interactively.
iproduct
Create an iterator over the “cartesian product” of iterators.
izip
Create an iterator running multiple iterators in lockstep.

Structs§

BTreeMap
An ordered map based on a B-Tree.
BTreeSet
An ordered set based on a B-Tree.
Batching
A “meta iterator adaptor”. Its closure receives a reference to the iterator and may pick off as many elements as it likes, to produce the next iterator element.
BigInt
A big signed integer type.
BigUint
A big unsigned integer type.
BinaryHeap
A priority queue implemented with a binary heap.
Chunk
An iterator for the elements in a single chunk.
Chunks
An iterator that yields the Chunk iterators.
Coalesce
An iterator adaptor that may join together adjacent elements.
Combinations
An iterator to iterate through all the k-length combinations in an iterator.
CombinationsWithReplacement
An iterator to iterate through all the n-length combinations in an iterator, with replacement.
Complex
A complex number in Cartesian form.
ConsTuples
An iterator that maps an iterator of tuples like ((A, B), C) to an iterator of (A, B, C).
DedupBy
An iterator adaptor that removes repeated duplicates, determining equality using a comparison function.
ExactlyOneError
Iterator returned for the error case of IterTools::exactly_one() This iterator yields exactly the same elements as the input iterator.
ExtendedGcd
Greatest common divisor and Bézout coefficients
Format
Format all iterator elements lazily, separated by sep.
FormatWith
Format all iterator elements lazily, separated by sep.
Group
An iterator for the elements in a single group.
GroupBy
GroupBy is the storage for the lazy grouping operation.
Groups
An iterator that yields the Group iterators.
HashMap
A hash map implemented with quadratic probing and SIMD lookup.
HashSet
A hash set implemented as a HashMap where the value is ().
Interleave
An iterator adaptor that alternates elements from two iterators until both run out.
InterleaveShortest
An iterator adaptor that alternates elements from the two iterators until one of them runs out.
Intersperse
An iterator adaptor to insert a particular value between each element of the adapted iterator.
IntoChunks
ChunkLazy is the storage for a lazy chunking operation.
IterBinomial
An iterator over binomial coefficients.
Iterate
An iterator that infinitely applies function to value and yields results.
KMergeBy
An iterator adaptor that merges an abitrary number of base iterators according to an ordering function.
LinkedList
A doubly-linked list with owned nodes.
Linspace
An iterator of a sequence of evenly spaced floats.
MapInto
An iterator adapter to apply Into conversion to each element.
MapResults
An iterator adapter to apply a transformation within a nested Result.
MergeBy
An iterator adaptor that merges the two base iterators in ascending order. If both base iterators are sorted (ascending), the result is sorted.
MergeJoinBy
An iterator adaptor that merge-joins items from the two base iterators in ascending order.
MultiPeek
See multipeek() for more information.
MultiProduct
An iterator adaptor that iterates over the cartesian product of multiple iterators of type I.
PadUsing
An iterator adaptor that pads a sequence to a minimum length by filling missing elements using a closure.
PeekingTakeWhile
An iterator adaptor that takes items while a closure returns true.
Permutations
An iterator adaptor that iterates through all the k-permutations of the elements from an iterator.
Positions
An iterator adapter to get the positions of each element that matches a predicate.
ProcessResults
An iterator that produces only the T values as long as the inner iterator produces Ok(T).
Product
An iterator adaptor that iterates over the cartesian product of the element sets of two iterators I and J.
PutBack
An iterator adaptor that allows putting back a single item to the front of the iterator.
PutBackN
An iterator adaptor that allows putting multiple items in front of the iterator.
RcIter
A wrapper for Rc<RefCell<I>>, that implements the Iterator trait.
RepeatCallDeprecated
See repeat_call for more information.
RepeatN
An iterator that produces n repetitions of an element.
Reverse
A helper struct for reverse ordering.
StepDeprecated
An iterator adaptor that steps a number elements in the base iterator for each iteration.
TakeWhileRef
An iterator adaptor that borrows from a Clone-able iterator to only pick off elements while the predicate returns true.
Tee
One half of an iterator pair where both return the same elements.
TryReserveError
The error type for try_reserve methods.
TupleBuffer
An iterator over a incomplete tuple.
TupleCombinations
An iterator to iterate through all combinations in a Clone-able iterator that produces tuples of a specific size.
TupleWindows
An iterator over all contiguous windows that produces tuples of a specific size.
Tuples
An iterator that groups the items in tuples of a specific size.
Unfold
See unfold for more information.
Unique
An iterator adapter to filter out duplicate elements.
UniqueBy
An iterator adapter to filter out duplicate elements.
Update
An iterator adapter to apply a mutating function to each element before yielding it.
VecDeque
A double-ended queue implemented with a growable ring buffer.
WhileSome
An iterator adaptor that filters Option<A> iterator elements and produces A. Stops on the first None encountered.
WithPosition
An iterator adaptor that wraps each element in an Position.
Zip
See multizip for more information.
ZipEq
An iterator which iterates two other iterators simultaneously
ZipLongest
An iterator which iterates two other iterators simultaneously

Enums§

Bound
An endpoint of a range of keys.
Bytes
Bytes: read a string as array of bytes.
Chars
Chars: read a string as array of chars.
Diff
A type returned by the diff_with function.
Either
The enum Either with variants Left and Right is a general purpose sum type with two cases.
EitherOrBoth
Value that either holds a single A or B, or both.
FoldWhile
An enum used for controlling the execution of .fold_while().
Isize1
Isize1: 1-indexed isize. Output of reading has type isize.
MinMaxResult
MinMaxResult is an enum returned by minmax. See Itertools::minmax() for more detail.
Ordering
An Ordering is the result of a comparison between two values.
Position
A value yielded by WithPosition. Indicates the position of this element in the iterator results.
StdinSource
Usize1
Usize1: 1-indexed usize. Output of reading has type usize.
TryReserveErrorKindExperimental
Details of the allocation that caused a TryReserveError

Traits§

Average
Provides methods to compute the average of two integers, without overflows.
Bounded
Numbers which have upper and lower bounds
CheckedAdd
Performs addition that returns None instead of wrapping around on overflow.
CheckedDiv
Performs division that returns None instead of panicking on division by zero and instead of wrapping around on underflow and overflow.
CheckedMul
Performs multiplication that returns None instead of wrapping around on underflow or overflow.
CheckedSub
Performs subtraction that returns None instead of wrapping around on underflow.
Eq
Trait for comparisons corresponding to equivalence relations.
Float
Generic trait for floating point numbers
FromPrimitive
A generic trait for converting a number to a value.
Integer
Itertools
An Iterator blanket implementation that provides extra adaptors and methods.
ItertoolsNum
Extension trait for iterators: extra adaptors and methods for numerical iterators
Num
The base trait for numeric types, covering 0 and 1 values, comparisons, basic numeric operations, and string conversion.
NumCast
An interface for casting between machine scalars.
One
Defines a multiplicative identity element for Self.
Ord
Trait for types that form a total order.
PartialEq
Trait for comparisons using the equality operator.
PartialOrd
Trait for types that form a partial order.
PeekingNext
An iterator that allows peeking at an element before deciding to accept it.
PrimInt
Generic trait for primitive integers.
Roots
Provides methods to compute an integer’s square root, cube root, and arbitrary nth root.
Saturating
Saturating math operations. Deprecated, use SaturatingAdd, SaturatingSub and SaturatingMul instead.
Signed
Useful functions for signed numbers (i.e. numbers that can be negative).
ToPrimitive
A generic trait for converting a value to a number.
Unsigned
A trait for values which cannot be negative
Zero
Defines an additive identity element for Self.
__Readable
A trait representing which type can be read from Source.

Functions§

abs
Computes the absolute value.
abs_sub
The positive difference of two numbers.
all
Test whether the predicate holds for all elements in the iterable.
any
Test whether the predicate holds for any elements in the iterable.
assert_equal
Assert that two iterables produce equal sequences, with the same semantics as equal(a, b).
average_ceil
Returns the ceiling value of the average of x and y – see Average::average_ceil.
average_floor
Returns the floor value of the average of x and y – see Average::average_floor.
binomial
Calculate the binomial coefficient.
cast
Cast from one machine scalar to another.
cbrt
Returns the truncated principal cube root of an integer – see Roots::cbrt.
chain
Create an iterator that first iterates i and then j.
checked_pow
Raises a value to the power of exp, returning None if an overflow occurred.
clamp
A value bounded by a minimum and a maximum
cloned
Create an iterator that clones each element from &T to T
concat
Combine all an iterator’s elements into one element by using Extend.
cons_tuples
Create an iterator that maps for example iterators of ((A, B), C) to (A, B, C).
diff_with
Compares every element yielded by both i and j with the given function in lock-step and returns a Diff which describes how j differs from i.
div_ceil
Ceiled integer division
div_floor
Floored integer division
div_mod_floor
Simultaneous floored integer division and modulus
div_rem
Simultaneous integer division and modulus
enumerate
Iterate iterable with a running index.
equal
Return true if both iterables produce equal sequences (elements pairwise equal and sequences of the same length), false otherwise.
fold
Perform a fold operation over the iterable.
gcd
Calculates the Greatest Common Divisor (GCD) of the number and other. The result is always non-negative.
gcd_lcm
Calculates the Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) of the number and other.
interleave
Create an iterator that interleaves elements in i and j.
is_stdin_empty
Checks if some of tokens are left on stdin.
iterate
Creates a new iterator that infinitely applies function to value and yields results.
join
Combine all iterator elements into one String, seperated by sep.
kmerge
Create an iterator that merges elements of the contained iterators using the ordering function.
kmerge_by
Create an iterator that merges elements of the contained iterators.
lcm
Calculates the Lowest Common Multiple (LCM) of the number and other.
linspace
Return an iterator of evenly spaced floats.
max_by
Returns the maximum of two values with respect to the specified comparison function.
max_by_key
Returns the element that gives the maximum value from the specified function.
merge
Create an iterator that merges elements in i and j.
merge_join_by
Return an iterator adaptor that merge-joins items from the two base iterators in ascending order.
min_by
Returns the minimum of two values with respect to the specified comparison function.
min_by_key
Returns the element that gives the minimum value from the specified function.
mod_floor
Floored integer modulus
multinomial
Calculate the multinomial coefficient.
multipeek
An iterator adaptor that allows the user to peek at multiple .next() values without advancing the base iterator.
multizip
An iterator that generalizes .zip() and allows running multiple iterators in lockstep.
nth_root
Returns the truncated principal nth root of an integer – see Roots::nth_root.
one
Returns the multiplicative identity, 1.
partition
Partition a sequence using predicate pred so that elements that map to true are placed before elements which map to false.
pow
Raises a value to the power of exp, using exponentiation by squaring.
process_results
“Lift” a function of the values of an iterator so that it can process an iterator of Result values instead.
put_back
Create an iterator where you can put back a single item
put_back_n
Create an iterator where you can put back multiple values to the front of the iteration.
range
Returns an iterator over the given range [start, stop) (that is, starting at start (inclusive), and ending at stop (exclusive)).
range_inclusive
Return an iterator over the range [start, stop]
range_step
Return an iterator over the range [start, stop) by step. It handles overflow by stopping.
range_step_inclusive
Return an iterator over the range [start, stop] by step. It handles overflow by stopping.
rciter
Return an iterator inside a Rc<RefCell<_>> wrapper.
repeat_callDeprecated
An iterator source that produces elements indefinitely by calling a given closure.
repeat_n
Create an iterator that produces n repetitions of element.
rev
Iterate iterable in reverse.
signum
Returns the sign of the number.
sorted
Sort all iterator elements into a new iterator in ascending order.
sqrt
Returns the truncated principal square root of an integer – see Roots::sqrt.
unfold
Creates a new unfold source with the specified closure as the “iterator function” and an initial state to eventually pass to the closure
zero
Returns the additive identity, 0.
zip
Iterate i and j in lock step.
zip_eq
Iterate i and j in lock step.
minmaxExperimental
Compares and sorts two values, returning minimum and maximum.
minmax_byExperimental
Returns minimum and maximum values with respect to the specified comparison function.
minmax_by_keyExperimental
Returns minimum and maximum values with respect to the specified key function.

Type Aliases§

BigRational
Alias for arbitrary precision rationals.
Dedup
An iterator adaptor that removes repeated duplicates.
KMerge
An iterator adaptor that merges an abitrary number of base iterators in ascending order. If all base iterators are sorted (ascending), the result is sorted.
Merge
An iterator adaptor that merges the two base iterators in ascending order. If both base iterators are sorted (ascending), the result is sorted.
Rational
Alias for a Ratio of machine-sized integers.

Attribute Macros§

derive_readable
Derives Readable for your own type.
fastout
Enables buffering for stdout.
memoise
Memoise function by using Vec
memoise_map
Memoise function by using BTreeMap

Derive Macros§

Eq
Derive macro generating an impl of the trait Eq.
Ord
Derive macro generating an impl of the trait Ord. The behavior of this macro is described in detail here.
PartialEq
Derive macro generating an impl of the trait PartialEq. The behavior of this macro is described in detail here.
PartialOrd
Derive macro generating an impl of the trait PartialOrd. The behavior of this macro is described in detail here.