[][src]Module competitive_hpp::prelude

Re-exports

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

Modules

__std_iter

Composable external iteration.

bigint
binary_heap

A priority queue implemented with a binary heap.

btree_map

A map based on a B-Tree.

btree_set

A set based on a B-Tree.

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.

rational
read

Implements readable to the primitives and other special types (such as Chars, Bytes, ...).

source

Defines whitespace-splitted token stream wrapping actual stream like stdin.

structs

The concrete iterator types.

structs

The concrete iterator structs.

traits

Traits helpful for using certain Itertools methods in generic contexts.

traits
vec_deque

A double-ended queue implemented with a growable ring buffer.

Macros

Eq

Derive macro generating an impl of the trait Eq.

Ord

Derive macro generating an impl of the trait Ord.

PartialEq

Derive macro generating an impl of the trait PartialEq.

PartialOrd

Derive macro generating an impl of the trait PartialOrd.

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.

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.

iproduct

Create an iterator over the “cartesian product” of iterators.

izip

Create an iterator running multiple iterators in lockstep.

Structs

BTreeMap

A map based on a B-Tree.

BTreeSet

A 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.

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.

TryReserveErrorExperimental

The error type for try_reserve methods.

Usize1

Usize1: 1-indexed usize. Output of reading has type usize.

Traits

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 equality comparisons which are 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 equality comparisons which are partial equivalence relations.

PartialOrd

Trait for values that can be compared for a sort-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

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.

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).

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 positive.

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

Compares and returns the maximum of two values.

max

Return the maximum value of the iterable.

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

Compares and returns the minimum of two values.

max_byExperimental

Returns the maximum of two values with respect to the specified comparison function.

max_by_keyExperimental

Returns the element that gives the maximum value from the specified function.

min

Return the minimum value of the iterable.

min_byExperimental

Returns the minimum of two values with respect to the specified comparison function.

min_by_keyExperimental

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.

Type Definitions

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