Crate core_extensions[−][src]
This crate provides:
-
Extension traits for many standard/core library types/traits.
-
SelfOps:to extend all types with generic operations.
-
Type-level representations of bool and unsafe .
-
Marker traits to encode invariants about types.
-
etc.
no-std support
To use this crate in no_std contexts disable the default-feature.
Supported Rust versions
This crate support Rust back to 1.20, using a build script to automatically enable features from newer versions.
Cargo Features
"std":Enables standard library support.Enabled by default.
"serde":Enables serde support.Disabled by default.
"typenum":Enables trait impls for typenum types.Disabled by default.
Contents
Extension trait:SelfOps
This is implemented for all types.
The most importand methods in this are:
-
piped: Allows emulating the pipeline operator.
-
mutated: Allows mutating
self
with a closure passing it along the method chain -
observe: Observes the value of
self
with a closure passing it along the method chain unmodified. -
into_, as_ref_, as_mut_: Alternative syntax for the standard conversion methods.
Other extension traits
ResultExt::Extension trait for Result.
OptionExt::Extension trait for Option.
BoolExt:Extension trait for bool.
IntegerExt:Extension trait for integers.
ToTime:Extension trait for integers, to create Durations of a certain unit.
StringExtExtension trait for str
.
Marker traits
MarkerType: Represents a zero-sized marker type Can be stored in any data type without changing its layout.
Other traits
ResultLike: Trait for types with item/error values,like Option and Result.
TransparentNewtype Represents a newtype that is safe to transmute to and/from its only non-zero-sized field.
Iteration
IteratorExt Extension trait for Iterator implementors.
Factories
IterCloner: Constructs Iterators by cloning the one it references,only possible if it is Clone.
IterConstructor: Constructs Iterators using a closure,this can be done multiple times if the closure it Copy.
Iterators
Loop: Iterator that infinitely produces a value by calling an impl FnMut()->T
LazyOnce: Lazy version of ::std::iter::Once,only evaluating the item when Iterator::next is called.
Type-level stuff
Type-Level bool
This crate contains
types and operations using type-level bool
s.
Boolean:
Trait representing bool
.
True/
False:
Types representing true
/false
.
Type equality
TypeIdentity Allows converting a type back to itself.Useful in generic contexts.
Empty type
Void: Uninstantiable Type for statically impossible situations. Useful as a type parameter/associated type.
(Un)safety represented as type
maybe_unsafe emulates a safe/unsafe effect using types.
Allows having traits whose implementations can choose whether their methods/functions are safe to call or not.
Re-exports
pub use self::callable::CallRef; |
pub use self::callable::CallMut; |
pub use self::callable::CallInto; |
pub use self::strings::StringExt; |
pub use self::transparent_newtype::TransparentNewtype; |
pub use self::bool_extensions::BoolExt; |
pub use self::integer_extensions::ToTime; |
pub use self::integer_extensions::IntegerExt; |
pub use self::iterators::IterCloner; |
pub use self::iterators::IteratorExt; |
pub use self::iterators::IterConstructor; |
pub use self::iterators::LazyOnce; |
pub use self::phantom_variances::VariantDropPhantom; |
pub use self::phantom_variances::VariantPhantom; |
pub use self::phantom_variances::InvariantRefPhantom; |
pub use self::phantom_variances::InvariantPhantom; |
pub use self::void::Void; |
pub use self::try_from::TryFrom; |
pub use self::try_from::TryInto; |
Modules
bool_extensions |
Extension traits for |
callable |
Contains implementable alternatives of the standard Fn/FnMut/FnOnce traits. |
integer_extensions |
Extension traits for integers and types used in the traits. |
iterators |
Iterator adaptors and constructors. |
macros |
A variety of macros. |
marker_traits |
Contains marker traits representing a variety of guarantees provided by the implementors. |
maybe_unsafe |
Allows defining traits whose functions/methods can be safe/unsafe to call depending on the implementor. |
measure_time |
Time measurement,including functions and types. |
option_result_ext |
Contains [extension] traits for Option and Result |
phantom_variances |
Contains many type aliases for PhantomData with different lifetime variances. |
prelude |
The items from this crate which are almost always used. |
slices |
Slice extensions. |
strings |
Extension trait for string types. |
transparent_newtype |
Contains the TransparentNewtype trait to enable safer transmutation between types. |
try_from |
A version of TryFrom/TryInto in stable Rust. These traits are used for fallible conversions. |
type_level_bool |
Module containing definitions and operations for type level booleans |
utils |
Miscelaneous utility functions |
void |
Contains types and functions for impossible situations. |
Macros
callable_impl |
This macro allows more ergonomically implementing the Call(Ref|Mut|Into) traits . |
iter_cloner |
Use this macro to create an IterCloner from an Iterator value. |
matches |
Macro that evaluates to true if the expression matches any of the patterns (this macro can have multiple patterns). |
unsafe_ |
Macro for correctly using unsafe{} blocks inside functions that take IsUnsafe references. |
Traits
MarkerType |
Represents a zero-sized marker type . |
OptionExt |
Extension trait for Option. |
ResultExt |
Extension trait for Result. |
ResultLike |
Trait for types with error and item values. |
SelfOps |
Extension trait for every type. |
SliceExt |
Extension trait for |
TypeIdentity |
Allows converting |
TypePanic |
A trait used to cause a compile-time error mentioning the types constrained by it. |
Type Definitions
TIdentity |
A type-level identity function |