Trait signature_core::lib::From
1.0.0 · source · [−]pub trait From<T> {
fn from(T) -> Self;
}
Expand description
Used to do value-to-value conversions while consuming the input value. It is the reciprocal of
Into
.
One should always prefer implementing From
over Into
because implementing From
automatically provides one with an implementation of Into
thanks to the blanket implementation in the standard library.
Only implement Into
when targeting a version prior to Rust 1.41 and converting to a type
outside the current crate.
From
was not able to do these types of conversions in earlier versions because of Rust’s
orphaning rules.
See Into
for more details.
Prefer using Into
over using From
when specifying trait bounds on a generic function.
This way, types that directly implement Into
can be used as arguments as well.
The From
is also very useful when performing error handling. When constructing a function
that is capable of failing, the return type will generally be of the form Result<T, E>
.
The From
trait simplifies error handling by allowing a function to return a single error type
that encapsulate multiple error types. See the “Examples” section and the book for more
details.
Note: This trait must not fail. The From
trait is intended for perfect conversions.
If the conversion can fail or is not perfect, use TryFrom
.
Generic Implementations
From<T> for U
impliesInto
<U> for T
From
is reflexive, which means thatFrom<T> for T
is implemented
Examples
String
implements From<&str>
:
An explicit conversion from a &str
to a String is done as follows:
let string = "hello".to_string();
let other_string = String::from("hello");
assert_eq!(string, other_string);
While performing error handling it is often useful to implement From
for your own error type.
By converting underlying error types to our own custom error type that encapsulates the
underlying error type, we can return a single error type without losing information on the
underlying cause. The ‘?’ operator automatically converts the underlying error type to our
custom error type by calling Into<CliError>::into
which is automatically provided when
implementing From
. The compiler then infers which implementation of Into
should be used.
use std::fs;
use std::io;
use std::num;
enum CliError {
IoError(io::Error),
ParseError(num::ParseIntError),
}
impl From<io::Error> for CliError {
fn from(error: io::Error) -> Self {
CliError::IoError(error)
}
}
impl From<num::ParseIntError> for CliError {
fn from(error: num::ParseIntError) -> Self {
CliError::ParseError(error)
}
}
fn open_and_parse_file(file_name: &str) -> Result<i32, CliError> {
let mut contents = fs::read_to_string(&file_name)?;
let num: i32 = contents.trim().parse()?;
Ok(num)
}
Required Methods
Implementations on Foreign Types
sourceimpl<T, const LANES: usize> From<Simd<T, LANES>> for [T; LANES] where
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> From<Simd<T, LANES>> for [T; LANES] where
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<const LANES: usize> From<Mask<isize, LANES>> for Mask<i32, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<isize, LANES>> for Mask<i32, LANES> where
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<const LANES: usize> From<Mask<i64, LANES>> for Mask<i32, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i64, LANES>> for Mask<i32, LANES> where
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<const LANES: usize> From<Mask<i16, LANES>> for Mask<i64, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i16, LANES>> for Mask<i64, LANES> where
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<const LANES: usize> From<Mask<i32, LANES>> for Mask<i8, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i32, LANES>> for Mask<i8, LANES> where
LaneCount<LANES>: SupportedLaneCount,
1.31.0 (const: unstable) · sourceimpl From<NonZeroU64> for u64
impl From<NonZeroU64> for u64
const: unstable · sourcefn from(nonzero: NonZeroU64) -> u64
fn from(nonzero: NonZeroU64) -> u64
Converts a NonZeroU64
into an u64
sourceimpl<T, const LANES: usize> From<[T; LANES]> for Simd<T, LANES> where
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> From<[T; LANES]> for Simd<T, LANES> where
T: SimdElement,
LaneCount<LANES>: SupportedLaneCount,
1.12.0 (const: unstable) · sourceimpl<T> From<T> for UnsafeCell<T>
impl<T> From<T> for UnsafeCell<T>
const: unstable · sourcefn from(t: T) -> UnsafeCell<T>
fn from(t: T) -> UnsafeCell<T>
Creates a new UnsafeCell<T>
containing the given value.
sourceimpl<T, const LANES: usize> From<Mask<T, LANES>> for [bool; LANES] where
T: MaskElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> From<Mask<T, LANES>> for [bool; LANES] where
T: MaskElement,
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<const LANES: usize> From<Mask<i16, LANES>> for Mask<i32, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i16, LANES>> for Mask<i32, LANES> where
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<T, const LANES: usize> From<[bool; LANES]> for Mask<T, LANES> where
T: MaskElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> From<[bool; LANES]> for Mask<T, LANES> where
T: MaskElement,
LaneCount<LANES>: SupportedLaneCount,
1.24.0 (const: unstable) · sourceimpl From<bool> for AtomicBool
impl From<bool> for AtomicBool
1.13.0 (const: unstable) · sourceimpl From<u8> for char
impl From<u8> for char
Maps a byte in 0x00..=0xFF to a char
whose code point has the same value, in U+0000..=U+00FF.
Unicode is designed such that this effectively decodes bytes with the character encoding that IANA calls ISO-8859-1. This encoding is compatible with ASCII.
Note that this is different from ISO/IEC 8859-1 a.k.a. ISO 8859-1 (with one less hyphen), which leaves some “blanks”, byte values that are not assigned to any character. ISO-8859-1 (the IANA one) assigns them to the C0 and C1 control codes.
Note that this is also different from Windows-1252 a.k.a. code page 1252, which is a superset ISO/IEC 8859-1 that assigns some (not all!) blanks to punctuation and various Latin characters.
To confuse things further, on the Web
ascii
, iso-8859-1
, and windows-1252
are all aliases
for a superset of Windows-1252 that fills the remaining blanks with corresponding
C0 and C1 control codes.
sourceimpl<const LANES: usize> From<Mask<i64, LANES>> for Mask<i16, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i64, LANES>> for Mask<i16, LANES> where
LaneCount<LANES>: SupportedLaneCount,
1.31.0 (const: unstable) · sourceimpl From<NonZeroU128> for u128
impl From<NonZeroU128> for u128
const: unstable · sourcefn from(nonzero: NonZeroU128) -> u128
fn from(nonzero: NonZeroU128) -> u128
Converts a NonZeroU128
into an u128
1.31.0 (const: unstable) · sourceimpl From<NonZeroI32> for i32
impl From<NonZeroI32> for i32
const: unstable · sourcefn from(nonzero: NonZeroI32) -> i32
fn from(nonzero: NonZeroI32) -> i32
Converts a NonZeroI32
into an i32
1.31.0 (const: unstable) · sourceimpl From<NonZeroI128> for i128
impl From<NonZeroI128> for i128
const: unstable · sourcefn from(nonzero: NonZeroI128) -> i128
fn from(nonzero: NonZeroI128) -> i128
Converts a NonZeroI128
into an i128
sourceimpl<T, const LANES: usize> From<Mask<T, LANES>> for Simd<T, LANES> where
T: MaskElement,
LaneCount<LANES>: SupportedLaneCount,
impl<T, const LANES: usize> From<Mask<T, LANES>> for Simd<T, LANES> where
T: MaskElement,
LaneCount<LANES>: SupportedLaneCount,
1.31.0 (const: unstable) · sourceimpl From<NonZeroU16> for u16
impl From<NonZeroU16> for u16
const: unstable · sourcefn from(nonzero: NonZeroU16) -> u16
fn from(nonzero: NonZeroU16) -> u16
Converts a NonZeroU16
into an u16
sourceimpl<const LANES: usize> From<Mask<isize, LANES>> for Mask<i8, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<isize, LANES>> for Mask<i8, LANES> where
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<const LANES: usize> From<Mask<isize, LANES>> for Mask<i64, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<isize, LANES>> for Mask<i64, LANES> where
LaneCount<LANES>: SupportedLaneCount,
1.23.0 (const: unstable) · sourceimpl From<usize> for AtomicUsize
impl From<usize> for AtomicUsize
const: unstable · sourcefn from(v: usize) -> AtomicUsize
fn from(v: usize) -> AtomicUsize
Converts an usize
into an AtomicUsize
.
1.31.0 (const: unstable) · sourceimpl From<NonZeroUsize> for usize
impl From<NonZeroUsize> for usize
const: unstable · sourcefn from(nonzero: NonZeroUsize) -> usize
fn from(nonzero: NonZeroUsize) -> usize
Converts a NonZeroUsize
into an usize
1.31.0 (const: unstable) · sourceimpl From<NonZeroU32> for u32
impl From<NonZeroU32> for u32
const: unstable · sourcefn from(nonzero: NonZeroU32) -> u32
fn from(nonzero: NonZeroU32) -> u32
Converts a NonZeroU32
into an u32
sourceimpl<const LANES: usize> From<Mask<isize, LANES>> for Mask<i16, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<isize, LANES>> for Mask<i16, LANES> where
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<const LANES: usize> From<Mask<i8, LANES>> for Mask<i64, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i8, LANES>> for Mask<i64, LANES> where
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<const LANES: usize> From<Mask<i16, LANES>> for Mask<isize, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i16, LANES>> for Mask<isize, LANES> where
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<const LANES: usize> From<Mask<i8, LANES>> for Mask<i32, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i8, LANES>> for Mask<i32, LANES> where
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<const LANES: usize> From<Mask<i8, LANES>> for Mask<isize, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i8, LANES>> for Mask<isize, LANES> where
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<const LANES: usize> From<Mask<i64, LANES>> for Mask<i8, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i64, LANES>> for Mask<i8, LANES> where
LaneCount<LANES>: SupportedLaneCount,
1.31.0 (const: unstable) · sourceimpl From<NonZeroIsize> for isize
impl From<NonZeroIsize> for isize
const: unstable · sourcefn from(nonzero: NonZeroIsize) -> isize
fn from(nonzero: NonZeroIsize) -> isize
Converts a NonZeroIsize
into an isize
1.31.0 (const: unstable) · sourceimpl From<NonZeroI64> for i64
impl From<NonZeroI64> for i64
const: unstable · sourcefn from(nonzero: NonZeroI64) -> i64
fn from(nonzero: NonZeroI64) -> i64
Converts a NonZeroI64
into an i64
1.36.0 (const: unstable) · sourceimpl From<Infallible> for TryFromSliceError
impl From<Infallible> for TryFromSliceError
fn from(x: Infallible) -> TryFromSliceError
sourceimpl<const LANES: usize> From<Mask<i8, LANES>> for Mask<i16, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i8, LANES>> for Mask<i16, LANES> where
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<const LANES: usize> From<Mask<i64, LANES>> for Mask<isize, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i64, LANES>> for Mask<isize, LANES> where
LaneCount<LANES>: SupportedLaneCount,
1.23.0 (const: unstable) · sourceimpl From<isize> for AtomicIsize
impl From<isize> for AtomicIsize
const: unstable · sourcefn from(v: isize) -> AtomicIsize
fn from(v: isize) -> AtomicIsize
Converts an isize
into an AtomicIsize
.
sourceimpl<const LANES: usize> From<Mask<i32, LANES>> for Mask<i64, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i32, LANES>> for Mask<i64, LANES> where
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<const LANES: usize> From<Mask<i32, LANES>> for Mask<i16, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i32, LANES>> for Mask<i16, LANES> where
LaneCount<LANES>: SupportedLaneCount,
sourceimpl<const LANES: usize> From<Mask<i32, LANES>> for Mask<isize, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i32, LANES>> for Mask<isize, LANES> where
LaneCount<LANES>: SupportedLaneCount,
1.31.0 (const: unstable) · sourceimpl From<NonZeroI16> for i16
impl From<NonZeroI16> for i16
const: unstable · sourcefn from(nonzero: NonZeroI16) -> i16
fn from(nonzero: NonZeroI16) -> i16
Converts a NonZeroI16
into an i16
const: unstable · sourceimpl<T> From<T> for SyncUnsafeCell<T>
impl<T> From<T> for SyncUnsafeCell<T>
const: unstable · sourcefn from(t: T) -> SyncUnsafeCell<T>
fn from(t: T) -> SyncUnsafeCell<T>
Creates a new SyncUnsafeCell<T>
containing the given value.
sourceimpl<const LANES: usize> From<Mask<i16, LANES>> for Mask<i8, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<const LANES: usize> From<Mask<i16, LANES>> for Mask<i8, LANES> where
LaneCount<LANES>: SupportedLaneCount,
impl<'a, T> From<&'a mut [T; 22]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B1>, B0>>
impl<'a, T> From<&'a mut [T; 22]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B1>, B0>>
impl<'a, T> From<&'a mut [T; 12]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>>
impl<'a, T> From<&'a mut [T; 12]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>>
impl<'a, T> From<&'a mut [T; 17]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B1>>
impl<'a, T> From<&'a mut [T; 17]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B1>>
impl<'a, T> From<&'a [T; 17]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B1>>
impl<'a, T> From<&'a [T; 17]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B1>>
impl<'a, T> From<&'a mut [T; 32]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>>
impl<'a, T> From<&'a mut [T; 32]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>>
impl<'a, T> From<&'a mut [T; 21]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B0>, B1>>
impl<'a, T> From<&'a mut [T; 21]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B0>, B1>>
impl<'a, T> From<&'a [T; 21]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B0>, B1>>
impl<'a, T> From<&'a [T; 21]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B0>, B1>>
impl<'a, T, N> From<&'a mut [T]> for &'a mut GenericArray<T, N> where
N: ArrayLength<T>,
impl<'a, T, N> From<&'a mut [T]> for &'a mut GenericArray<T, N> where
N: ArrayLength<T>,
impl<'a, T> From<&'a [T; 25]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B1>>
impl<'a, T> From<&'a [T; 25]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B1>>
impl<'a, T> From<&'a mut [T; 16]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>>
impl<'a, T> From<&'a mut [T; 16]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>>
impl<'a, T> From<&'a [T; 30]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B1>, B0>>
impl<'a, T> From<&'a [T; 30]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B1>, B0>>
impl<'a, T> From<&'a [T; 28]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B0>>
impl<'a, T> From<&'a [T; 28]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B0>>
impl<T> From<GenericArray<T, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>>> for [T; 32]
impl<T> From<GenericArray<T, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>>> for [T; 32]
impl<'a, T> From<&'a mut [T; 31]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B1>, B1>>
impl<'a, T> From<&'a mut [T; 31]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B1>, B1>>
impl<'a, T> From<&'a mut [T; 11]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B1>>
impl<'a, T> From<&'a mut [T; 11]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B1>>
impl<'a, T> From<&'a mut [T; 27]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1>, B1>>
impl<'a, T> From<&'a mut [T; 27]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1>, B1>>
impl<'a, T> From<&'a mut [T; 29]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B1>>
impl<'a, T> From<&'a mut [T; 29]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B1>>
impl<'a, T> From<&'a [T; 14]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>>
impl<'a, T> From<&'a [T; 14]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>>
impl<'a, T> From<&'a mut [T; 9]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>>
impl<'a, T> From<&'a mut [T; 9]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>>
impl<'a, T> From<&'a mut [T; 13]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1>>
impl<'a, T> From<&'a mut [T; 13]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1>>
impl<'a, T> From<&'a [T; 31]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B1>, B1>>
impl<'a, T> From<&'a [T; 31]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B1>, B1>>
impl<'a, T> From<&'a mut [T; 25]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B1>>
impl<'a, T> From<&'a mut [T; 25]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B1>>
impl<'a, T> From<&'a mut [T; 26]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1>, B0>>
impl<'a, T> From<&'a mut [T; 26]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1>, B0>>
impl<'a, T> From<&'a [T; 22]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B1>, B0>>
impl<'a, T> From<&'a [T; 22]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B1>, B0>>
impl<'a, T> From<&'a mut [T; 30]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B1>, B0>>
impl<'a, T> From<&'a mut [T; 30]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B1>, B0>>
impl<'a, T> From<&'a [T; 27]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1>, B1>>
impl<'a, T> From<&'a [T; 27]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1>, B1>>
impl<'a, T> From<&'a [T; 19]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>, B1>>
impl<'a, T> From<&'a [T; 19]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>, B1>>
impl<'a, T> From<&'a mut [T; 8]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>>
impl<'a, T> From<&'a mut [T; 8]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>>
impl<'a, T> From<&'a [T; 20]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B0>, B0>>
impl<'a, T> From<&'a [T; 20]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B0>, B0>>
impl<'a, T> From<&'a [T; 24]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B0>>
impl<'a, T> From<&'a [T; 24]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B0>>
impl<'a, T> From<&'a [T; 15]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B1>>
impl<'a, T> From<&'a [T; 15]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B1>>
impl<'a, T> From<&'a [T; 16]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>>
impl<'a, T> From<&'a [T; 16]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>>
impl<T> From<[T; 32]> for GenericArray<T, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>>
impl<T> From<[T; 32]> for GenericArray<T, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>>
impl<'a, T> From<&'a mut [T; 18]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>, B0>>
impl<'a, T> From<&'a mut [T; 18]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>, B0>>
impl<'a, T> From<&'a [T; 26]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1>, B0>>
impl<'a, T> From<&'a [T; 26]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1>, B0>>
impl<'a, T> From<&'a mut [T; 10]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B0>>
impl<'a, T> From<&'a mut [T; 10]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B0>>
impl<'a, T> From<&'a mut [T; 19]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>, B1>>
impl<'a, T> From<&'a mut [T; 19]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>, B1>>
impl<'a, T> From<&'a [T; 12]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>>
impl<'a, T> From<&'a [T; 12]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>>
impl<'a, T> From<&'a mut [T; 24]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B0>>
impl<'a, T> From<&'a mut [T; 24]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B0>, B0>>
impl<'a, T> From<&'a mut [T; 20]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B0>, B0>>
impl<'a, T> From<&'a mut [T; 20]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B0>, B0>>
impl<'a, T> From<&'a [T; 10]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B0>>
impl<'a, T> From<&'a [T; 10]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B0>>
impl<'a, T> From<&'a mut [T; 28]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B0>>
impl<'a, T> From<&'a mut [T; 28]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B0>>
impl<'a, T> From<&'a [T; 29]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B1>>
impl<'a, T> From<&'a [T; 29]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>, B1>>
impl<'a, T> From<&'a mut [T; 14]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>>
impl<'a, T> From<&'a mut [T; 14]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B0>>
impl<'a, T> From<&'a [T; 18]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>, B0>>
impl<'a, T> From<&'a [T; 18]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B1>, B0>>
impl<'a, T> From<&'a [T; 32]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>>
impl<'a, T> From<&'a [T; 32]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>>
impl<'a, T> From<&'a [T; 13]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1>>
impl<'a, T> From<&'a [T; 13]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B0>, B1>>
impl<'a, T> From<&'a mut [T; 23]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B1>, B1>>
impl<'a, T> From<&'a mut [T; 23]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B1>, B1>>
impl<'a, T> From<&'a mut [T; 15]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B1>>
impl<'a, T> From<&'a mut [T; 15]> for &'a mut GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B1>, B1>, B1>>
impl<'a, T> From<&'a [T; 11]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B1>>
impl<'a, T> From<&'a [T; 11]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B1>>
impl<'a, T> From<&'a [T; 23]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B1>, B1>>
impl<'a, T> From<&'a [T; 23]> for &'a GenericArray<T, UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B1>, B1>, B1>>
sourceimpl From<Choice> for bool
impl From<Choice> for bool
sourcefn from(source: Choice) -> bool
fn from(source: Choice) -> bool
Convert the Choice
wrapper into a bool
, depending on whether
the underlying u8
was a 0
or a 1
.
Note
This function exists to avoid having higher-level cryptographic protocol implementations duplicating this pattern.
The intended use case for this conversion is at the end of a
higher-level primitive implementation: for example, in checking a keyed
MAC, where the verification should happen in constant-time (and thus use
a Choice
) but it is safe to return a bool
at the end of the
verification.
sourceimpl From<G1Affine> for G1Projective
impl From<G1Affine> for G1Projective
fn from(p: G1Affine) -> G1Projective
sourceimpl<'a> From<&'a G1Projective> for G1Affine
impl<'a> From<&'a G1Projective> for G1Affine
fn from(p: &'a G1Projective) -> G1Affine
sourceimpl<'a> From<&'a G2Projective> for G2Affine
impl<'a> From<&'a G2Projective> for G2Affine
fn from(p: &'a G2Projective) -> G2Affine
sourceimpl<'a> From<&'a G1Affine> for G1Projective
impl<'a> From<&'a G1Affine> for G1Projective
fn from(p: &'a G1Affine) -> G1Projective
sourceimpl<'a> From<&'a G2Affine> for G2Projective
impl<'a> From<&'a G2Affine> for G2Projective
fn from(p: &'a G2Affine) -> G2Projective
sourceimpl From<G2Affine> for G2Projective
impl From<G2Affine> for G2Projective
fn from(p: G2Affine) -> G2Projective
sourceimpl From<G2Projective> for G2Affine
impl From<G2Projective> for G2Affine
fn from(p: G2Projective) -> G2Affine
sourceimpl From<G1Projective> for G1Affine
impl From<G1Projective> for G1Affine
fn from(p: G1Projective) -> G1Affine
sourceimpl From<NonZeroU32> for Error
impl From<NonZeroU32> for Error
fn from(code: NonZeroU32) -> Error
1.45.0 · sourceimpl<'_, T> From<Cow<'_, [T]>> for Box<[T], Global> where
T: Copy,
impl<'_, T> From<Cow<'_, [T]>> for Box<[T], Global> where
T: Copy,
sourcefn from(cow: Cow<'_, [T]>) -> Box<[T], Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
fn from(cow: Cow<'_, [T]>) -> Box<[T], Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
Converts a Cow<'_, [T]>
into a Box<[T]>
When cow
is the Cow::Borrowed
variant, this
conversion allocates on the heap and copies the
underlying slice. Otherwise, it will try to reuse the owned
Vec
’s allocation.
1.45.0 · sourceimpl<'a, B> From<Cow<'a, B>> for Arc<B> where
B: ToOwned + ?Sized,
Arc<B>: From<&'a B>,
Arc<B>: From<<B as ToOwned>::Owned>,
impl<'a, B> From<Cow<'a, B>> for Arc<B> where
B: ToOwned + ?Sized,
Arc<B>: From<&'a B>,
Arc<B>: From<<B as ToOwned>::Owned>,
1.45.0 · sourceimpl<'a, B> From<Cow<'a, B>> for Rc<B> where
B: ToOwned + ?Sized,
Rc<B>: From<&'a B>,
Rc<B>: From<<B as ToOwned>::Owned>,
impl<'a, B> From<Cow<'a, B>> for Rc<B> where
B: ToOwned + ?Sized,
Rc<B>: From<&'a B>,
Rc<B>: From<<B as ToOwned>::Owned>,
1.56.0 · sourceimpl<T, const N: usize> From<[T; N]> for BinaryHeap<T> where
T: Ord,
impl<T, const N: usize> From<[T; N]> for BinaryHeap<T> where
T: Ord,
sourcefn from(arr: [T; N]) -> BinaryHeap<T>
fn from(arr: [T; N]) -> BinaryHeap<T>
use std::collections::BinaryHeap;
let mut h1 = BinaryHeap::from([1, 4, 2, 3]);
let mut h2: BinaryHeap<_> = [1, 4, 2, 3].into();
while let Some((a, b)) = h1.pop().zip(h2.pop()) {
assert_eq!(a, b);
}
1.45.0 · sourceimpl<T, const N: usize> From<[T; N]> for Box<[T], Global>
impl<T, const N: usize> From<[T; N]> for Box<[T], Global>
sourcefn from(array: [T; N]) -> Box<[T], Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
fn from(array: [T; N]) -> Box<[T], Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
Converts a [T; N]
into a Box<[T]>
This conversion moves the array to newly heap-allocated memory.
Examples
let boxed: Box<[u8]> = Box::from([4, 2]);
println!("{boxed:?}");
1.17.0 · sourceimpl<'_, T> From<&'_ [T]> for Box<[T], Global> where
T: Copy,
impl<'_, T> From<&'_ [T]> for Box<[T], Global> where
T: Copy,
sourcefn from(slice: &[T]) -> Box<[T], Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
fn from(slice: &[T]) -> Box<[T], Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
Converts a &[T]
into a Box<[T]>
This conversion allocates on the heap
and performs a copy of slice
.
Examples
// create a &[u8] which will be used to create a Box<[u8]>
let slice: &[u8] = &[104, 101, 108, 108, 111];
let boxed_slice: Box<[u8]> = Box::from(slice);
println!("{boxed_slice:?}");
1.6.0 · sourceimpl<T> From<T> for Box<T, Global>
impl<T> From<T> for Box<T, Global>
sourcefn from(t: T) -> Box<T, Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
fn from(t: T) -> Box<T, Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
Converts a T
into a Box<T>
The conversion allocates on the heap and moves t
from the stack into it.
Examples
let x = 5;
let boxed = Box::new(5);
assert_eq!(Box::from(x), boxed);
1.5.0 · sourceimpl<T> From<Vec<T, Global>> for BinaryHeap<T> where
T: Ord,
impl<T> From<Vec<T, Global>> for BinaryHeap<T> where
T: Ord,
sourcefn from(vec: Vec<T, Global>) -> BinaryHeap<T>
fn from(vec: Vec<T, Global>) -> BinaryHeap<T>
Converts a Vec<T>
into a BinaryHeap<T>
.
This conversion happens in-place, and has O(n) time complexity.
1.14.0 · sourceimpl<'a, T> From<Cow<'a, [T]>> for Vec<T, Global> where
[T]: ToOwned,
<[T] as ToOwned>::Owned == Vec<T, Global>,
impl<'a, T> From<Cow<'a, [T]>> for Vec<T, Global> where
[T]: ToOwned,
<[T] as ToOwned>::Owned == Vec<T, Global>,
sourcefn from(s: Cow<'a, [T]>) -> Vec<T, Global>
fn from(s: Cow<'a, [T]>) -> Vec<T, Global>
Convert a clone-on-write slice into a vector.
If s
already owns a Vec<T>
, it will be returned directly.
If s
is borrowing a slice, a new Vec<T>
will be allocated and
filled by cloning s
’s items into it.
Examples
let o: Cow<[i32]> = Cow::Owned(vec![1, 2, 3]);
let b: Cow<[i32]> = Cow::Borrowed(&[1, 2, 3]);
assert_eq!(Vec::from(o), Vec::from(b));
1.10.0 · sourceimpl<T, A> From<VecDeque<T, A>> for Vec<T, A> where
A: Allocator,
impl<T, A> From<VecDeque<T, A>> for Vec<T, A> where
A: Allocator,
sourcefn from(other: VecDeque<T, A>) -> Vec<T, A>
fn from(other: VecDeque<T, A>) -> Vec<T, A>
Turn a VecDeque<T>
into a Vec<T>
.
This never needs to re-allocate, but does need to do O(n) data movement if the circular buffer doesn’t happen to be at the beginning of the allocation.
Examples
use std::collections::VecDeque;
// This one is *O*(1).
let deque: VecDeque<_> = (1..5).collect();
let ptr = deque.as_slices().0.as_ptr();
let vec = Vec::from(deque);
assert_eq!(vec, [1, 2, 3, 4]);
assert_eq!(vec.as_ptr(), ptr);
// This one needs data rearranging.
let mut deque: VecDeque<_> = (1..5).collect();
deque.push_front(9);
deque.push_front(8);
let ptr = deque.as_slices().1.as_ptr();
let vec = Vec::from(deque);
assert_eq!(vec, [8, 9, 1, 2, 3, 4]);
assert_eq!(vec.as_ptr(), ptr);
1.45.0 · sourceimpl<'_> From<Cow<'_, str>> for Box<str, Global>
impl<'_> From<Cow<'_, str>> for Box<str, Global>
sourcefn from(cow: Cow<'_, str>) -> Box<str, Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
fn from(cow: Cow<'_, str>) -> Box<str, Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
Converts a Cow<'_, str>
into a Box<str>
When cow
is the Cow::Borrowed
variant, this
conversion allocates on the heap and copies the
underlying str
. Otherwise, it will try to reuse the owned
String
’s allocation.
Examples
use std::borrow::Cow;
let unboxed = Cow::Borrowed("hello");
let boxed: Box<str> = Box::from(unboxed);
println!("{boxed}");
let unboxed = Cow::Owned("hello".to_string());
let boxed: Box<str> = Box::from(unboxed);
println!("{boxed}");
sourceimpl From<LayoutError> for TryReserveErrorKind
impl From<LayoutError> for TryReserveErrorKind
sourcefn from(LayoutError) -> TryReserveErrorKind
fn from(LayoutError) -> TryReserveErrorKind
Always evaluates to TryReserveErrorKind::CapacityOverflow
.
1.33.0 (const: unstable) · sourceimpl<T, A> From<Box<T, A>> for Pin<Box<T, A>> where
A: Allocator + 'static,
T: ?Sized,
impl<T, A> From<Box<T, A>> for Pin<Box<T, A>> where
A: Allocator + 'static,
T: ?Sized,
1.20.0 · sourceimpl<T, A> From<Vec<T, A>> for Box<[T], A> where
A: Allocator,
impl<T, A> From<Vec<T, A>> for Box<[T], A> where
A: Allocator,
sourcefn from(v: Vec<T, A>) -> Box<[T], A>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
fn from(v: Vec<T, A>) -> Box<[T], A>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
Convert a vector into a boxed slice.
If v
has excess capacity, its items will be moved into a
newly-allocated buffer with exactly the right capacity.
Examples
assert_eq!(Box::from(vec![1, 2, 3]), vec![1, 2, 3].into_boxed_slice());
1.19.0 · sourceimpl<A> From<Box<str, A>> for Box<[u8], A> where
A: Allocator,
impl<A> From<Box<str, A>> for Box<[u8], A> where
A: Allocator,
sourcefn from(s: Box<str, A>) -> Box<[u8], A>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
fn from(s: Box<str, A>) -> Box<[u8], A>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
Converts a Box<str>
into a Box<[u8]>
This conversion does not allocate on the heap and happens in place.
Examples
// create a Box<str> which will be used to create a Box<[u8]>
let boxed: Box<str> = Box::from("hello");
let boxed_str: Box<[u8]> = Box::from(boxed);
// create a &[u8] which will be used to create a Box<[u8]>
let slice: &[u8] = &[104, 101, 108, 108, 111];
let boxed_slice = Box::from(slice);
assert_eq!(boxed_slice, boxed_str);
1.5.0 · sourceimpl<T> From<BinaryHeap<T>> for Vec<T, Global>
impl<T> From<BinaryHeap<T>> for Vec<T, Global>
sourcefn from(heap: BinaryHeap<T>) -> Vec<T, Global>
fn from(heap: BinaryHeap<T>) -> Vec<T, Global>
Converts a BinaryHeap<T>
into a Vec<T>
.
This conversion requires no data movement or allocation, and has constant time complexity.
1.56.0 · sourceimpl<T, const N: usize> From<[T; N]> for LinkedList<T>
impl<T, const N: usize> From<[T; N]> for LinkedList<T>
sourcefn from(arr: [T; N]) -> LinkedList<T>
fn from(arr: [T; N]) -> LinkedList<T>
Converts a [T; N]
into a LinkedList<T>
.
use std::collections::LinkedList;
let list1 = LinkedList::from([1, 2, 3, 4]);
let list2: LinkedList<_> = [1, 2, 3, 4].into();
assert_eq!(list1, list2);
1.14.0 · sourceimpl<'a> From<Cow<'a, str>> for String
impl<'a> From<Cow<'a, str>> for String
sourcefn from(s: Cow<'a, str>) -> String
fn from(s: Cow<'a, str>) -> String
Converts a clone-on-write string to an owned
instance of String
.
This extracts the owned string, clones the string if it is not already owned.
Example
// If the string is not owned...
let cow: Cow<str> = Cow::Borrowed("eggplant");
// It will allocate on the heap and copy the string.
let owned: String = String::from(cow);
assert_eq!(&owned[..], "eggplant");
1.17.0 · sourceimpl<'_> From<&'_ str> for Box<str, Global>
impl<'_> From<&'_ str> for Box<str, Global>
sourcefn from(s: &str) -> Box<str, Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
fn from(s: &str) -> Box<str, Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;
Converts a &str
into a Box<str>
This conversion allocates on the heap
and performs a copy of s
.
Examples
let boxed: Box<str> = Box::from("hello");
println!("{boxed}");
1.20.0 · sourceimpl From<String> for Box<str, Global>
impl From<String> for Box<str, Global>
sourceimpl From<TryReserveErrorKind> for TryReserveError
impl From<TryReserveErrorKind> for TryReserveError
fn from(kind: TryReserveErrorKind) -> TryReserveError
sourceimpl From<NonZeroU32> for Error
impl From<NonZeroU32> for Error
fn from(code: NonZeroU32) -> Error
Implementors
impl From<Infallible> for TryFromIntError
impl From<!> for Infallible
impl From<!> for TryFromIntError
impl From<NonZeroI8> for NonZeroI16
impl From<NonZeroI8> for NonZeroI32
impl From<NonZeroI8> for NonZeroI64
impl From<NonZeroI8> for NonZeroI128
impl From<NonZeroI8> for NonZeroIsize
impl From<NonZeroI16> for NonZeroI32
impl From<NonZeroI16> for NonZeroI64
impl From<NonZeroI16> for NonZeroI128
impl From<NonZeroI16> for NonZeroIsize
impl From<NonZeroI32> for NonZeroI64
impl From<NonZeroI32> for NonZeroI128
impl From<NonZeroI64> for NonZeroI128
impl From<NonZeroU8> for NonZeroI16
impl From<NonZeroU8> for NonZeroI32
impl From<NonZeroU8> for NonZeroI64
impl From<NonZeroU8> for NonZeroI128
impl From<NonZeroU8> for NonZeroIsize
impl From<NonZeroU8> for NonZeroU16
impl From<NonZeroU8> for NonZeroU32
impl From<NonZeroU8> for NonZeroU64
impl From<NonZeroU8> for NonZeroU128
impl From<NonZeroU8> for NonZeroUsize
impl From<NonZeroU16> for NonZeroI32
impl From<NonZeroU16> for NonZeroI64
impl From<NonZeroU16> for NonZeroI128
impl From<NonZeroU16> for NonZeroU32
impl From<NonZeroU16> for NonZeroU64
impl From<NonZeroU16> for NonZeroU128
impl From<NonZeroU16> for NonZeroUsize
impl From<NonZeroU32> for NonZeroI64
impl From<NonZeroU32> for NonZeroI128
impl From<NonZeroU32> for NonZeroU64
impl From<NonZeroU32> for NonZeroU128
impl From<NonZeroU64> for NonZeroI128
impl From<NonZeroU64> for NonZeroU128
impl<'a, T> From<&'a Option<T>> for Option<&'a T>
impl<'a, T> From<&'a mut Option<T>> for Option<&'a mut T>
impl<'a, const N: usize> From<&'a str> for signature_core::lib::String<N>
impl<T> From<!> for T
Stability note: This impl does not yet exist, but we are “reserving space” to add it in the future. See rust-lang/rust#64715 for details.