Trait Into
trait Into<T>: Sized
A value-to-value conversion that consumes the input value. The
opposite of From.
One should avoid implementing Into and implement From instead.
Implementing From automatically provides one with an implementation of Into
thanks to the blanket implementation in the standard library.
Prefer using Into over From when specifying trait bounds on a generic function
to ensure that types that only implement Into can be used as well.
Note: This trait must not fail. If the conversion can fail, use TryInto.
Generic Implementations
From<T> for UimpliesInto<U> for TIntois reflexive, which means thatInto<T> for Tis implemented
Implementing Into for conversions to external types in old versions of Rust
Prior to Rust 1.41, if the destination type was not part of the current crate
then you couldn't implement From directly.
For example, take this code:
#
;
This will fail to compile in older versions of the language because Rust's orphaning rules
used to be a little bit more strict. To bypass this, you could implement Into directly:
;
It is important to understand that Into does not provide a From implementation
(as From does with Into). Therefore, you should always try to implement From
and then fall back to Into if From can't be implemented.
Examples
String implements Into<Vec<u8>>:
In order to express that we want a generic function to take all arguments that can be
converted to a specified type T, we can use a trait bound of Into<T>.
For example: The function is_hello takes all arguments that can be converted into a
Vec<u8>.
let s = "hello".to_string;
is_hello;
Required Methods
fn into(self: Self) -> TConverts this type into the (usually inferred) input type.
Implementors
impl<T, U> Into for f16x2impl<T, U> Into for f128impl<T, U> Into for AtomicUsizeimpl<T, U> Into for int32x2x2_timpl<T, U> Into for RSplit<'a, T, P>impl<T, U> Into for uint8x8_timpl<T, U> Into for Clamp<Idx>impl<T, U> Into for f64impl<T, U> Into for EscapeDebug<'a>impl<T, U> Into for poly16x4x2_timpl<T, U> Into for Context<'a>impl<T, U> Into for Localityimpl<T, U> Into for RangeInclusive<Idx>impl<T, U> Into for MatchIndices<'a, P>impl<T, U> Into for Orderingimpl<T, U> Into for i8impl<T, U> Into for SplitNMut<'a, T, P>impl<T, U> Into for uint16x4x2_timpl<T, U> Into for m128iimpl<T, U> Into for NonZero<T>impl<T, U> Into for Iter<'a, T>impl<T, U> Into for Signimpl<T, U> Into for __m128iimpl<T, U> Into for Ipv6MulticastScopeimpl<T, U> Into for int16x4x2_timpl<T, U> Into for charimpl<T, U> Into for uint16x4_timpl<T, U> Into for i64impl<T, U> Into for vector_signed_charimpl<T, U> Into for Range<Idx>impl<T, U> Into for AssertUnwindSafe<T>impl<T, U> Into for NumBuffer<T>impl<T, U> Into for Saturating<T>impl<T, U> Into for poly8x8x2_timpl<T, U> Into for RangeToInclusive<Idx>impl<T, U> Into for ToLowercaseimpl<T, U> Into for float64x1_timpl<T, U> Into for i16impl<T, U> Into for ParseCharErrorimpl<T, U> Into for uint8x8x2_timpl<T, U> Into for DynMetadata<Dyn>impl<T, U> Into for Ipv6Addrimpl<T, U> Into for __m256iimpl<T, U> Into for int8x8x2_timpl<T, U> Into for RangeToInclusive<Idx>impl<T, U> Into for uint32x2_timpl<T, U> Into for EscapeUnicodeimpl<T, U> Into for Take<I>impl<T, U> Into for vector_signed_shortimpl<T, U> Into for AtomicBoolimpl<T, U> Into for PhantomContravariantLifetime<'a>impl<T, U> Into for DebugSet<'a, 'b>impl<T, U> Into for IpAddrimpl<T, U> Into for Typeimpl<T, U> Into for TryFromCharErrorimpl<T, U> Into for AtomicPtr<T>impl<T, U> Into for __m512iimpl<T, U> Into for OneSidedRangeBoundimpl<T, U> Into for uint64x1_timpl<T, U> Into for SocketAddrV6impl<T, U> Into for Durationimpl<T, U> Into for EscapeDefaultimpl<T, U> Into for Cloned<I>impl<T, U> Into for vector_signed_intimpl<T, U> Into for Empty<T>impl<T, U> Into for AtomicU16impl<T, U> Into for Tupleimpl<T, U> Into for PollFn<F>impl<T, U> Into for DecodeUtf16Errorimpl<T, U> Into for vector_bool_charimpl<T, U> Into for Range<Idx>impl<T, U> Into for i128impl<T, U> Into for Option<T>impl<T, U> Into for poly64x2x4_timpl<T, U> Into for NonNull<T>impl<T, U> Into for OnceWith<F>impl<T, U> Into for RangeFullimpl<T, U> Into for __m128bhimpl<T, U> Into for uint8x16_timpl<T, U> Into for i32impl<T, U> Into for uint64x2x4_timpl<T, U> Into for EscapeDebugimpl<T, U> Into for vector_floatimpl<T, U> Into for FromCoroutine<G>impl<T, U> Into for LocalWakerimpl<T, U> Into for SplitInclusiveMut<'a, T, P>impl<T, U> Into for Filter<I, P>impl<T, U> Into for ControlFlow<B, C>impl<T, U> Into for int64x2x4_timpl<T, U> Into for UnwindActionArgimpl<T, U> Into for EncodeUtf16<'a>impl<T, U> Into for vector_bool_shortimpl<T, U> Into for UnsafeCell<T>impl<T, U> Into for Once<T>impl<T, U> Into for RSplitN<'a, P>impl<T, U> Into for float32x4x4_timpl<T, U> Into for CharTryFromErrorimpl<T, U> Into for Ready<T>impl<T, U> Into for PhantomInvariant<T>impl<T, U> Into for Assumeimpl<T, U> Into for __m128himpl<T, U> Into for uint16x8_timpl<T, U> Into for CharSearcher<'a>impl<T, U> Into for float16x8x4_timpl<T, U> Into for PhantomCovariantLifetime<'a>impl<T, U> Into for Simd<T, N>impl<T, U> Into for SplitN<'a, P>impl<T, U> Into for BorrowedCursor<'a>impl<T, U> Into for MaybeUninit<T>impl<T, U> Into for f32impl<T, U> Into for uint32x4x4_timpl<T, U> Into for vector_bool_intimpl<T, U> Into for RefMut<'b, T>impl<T, U> Into for RSplitTerminator<'a, P>impl<T, U> Into for float64x1x4_timpl<T, U> Into for int32x4x4_timpl<T, U> Into for AllocErrorimpl<T, U> Into for DebugList<'a, 'b>impl<T, U> Into for IterMut<'a, T>impl<T, U> Into for uint32x4_timpl<T, U> Into for SplitTerminator<'a, P>impl<T, U> Into for poly16x8x4_timpl<T, U> Into for CharSliceSearcher<'a, 'b>impl<T, U> Into for poly64x2x3_timpl<T, U> Into for Scan<I, St, F>impl<T, U> Into for AddrParseErrorimpl<T, U> Into for u128impl<T, U> Into for LayoutErrorimpl<T, U> Into for uint16x8x4_timpl<T, U> Into for uint64x2x3_timpl<T, U> Into for RSplit<'a, P>impl<T, U> Into for vector_bool_long_longimpl<T, U> Into for Inspect<I, F>impl<T, U> Into for boolimpl<T, U> Into for SplitMut<'a, T, P>impl<T, U> Into for ChunkByMut<'a, T, P>impl<T, U> Into for AtomicU32impl<T, U> Into for Repeat<A>impl<T, U> Into for RSplitN<'a, T, P>impl<T, U> Into for int16x8x4_timpl<T, U> Into for u16impl<T, U> Into for int64x2x3_timpl<T, U> Into for SplitInclusive<'a, P>impl<T, U> Into for AtomicIsizeimpl<T, U> Into for Split<'a, P>impl<T, U> Into for v128impl<T, U> Into for uint64x2_timpl<T, U> Into for poly8x16x4_timpl<T, U> Into for float32x4x3_timpl<T, U> Into for SocketAddrimpl<T, U> Into for vector_unsigned_longimpl<T, U> Into for SplitAsciiWhitespace<'a>impl<T, U> Into for u64impl<T, U> Into for BuildHasherDefault<H>impl<T, U> Into for Bytes<'a>impl<T, U> Into for uint8x16x4_timpl<T, U> Into for float16x8x3_timpl<T, U> Into for ManuallyDrop<T>impl<T, U> Into for Rev<T>impl<T, U> Into for PhantomData<T>impl<T, U> Into for Mask<T, N>impl<T, U> Into for m256dimpl<T, U> Into for Pending<T>impl<T, U> Into for Map<I, F>impl<T, U> Into for int8x16x4_timpl<T, U> Into for RangeInclusive<Idx>impl<T, U> Into for SplitWhitespace<'a>impl<T, U> Into for uint32x4x3_timpl<T, U> Into for LaneCount<N>impl<T, U> Into for usizeimpl<T, U> Into for RangeIter<A>impl<T, U> Into for RangeFrom<Idx>impl<T, U> Into for float64x1x3_timpl<T, U> Into for SipHasherimpl<T, U> Into for int8x8_timpl<T, U> Into for float16x8_timpl<T, U> Into for int32x4x3_timpl<T, U> Into for MaybeDangling<P>impl<T, U> Into for GetDisjointMutErrorimpl<T, U> Into for LinesAny<'a>impl<T, U> Into for Utf8Pattern<'a>impl<T, U> Into for Wrapping<T>impl<T, U> Into for Chars<'a>impl<T, U> Into for RChunksMut<'a, T>impl<T, U> Into for poly16x8x3_timpl<T, U> Into for u32impl<T, U> Into for Cycle<I>impl<T, U> Into for IterMut<'a, A>impl<T, U> Into for ParseBoolErrorimpl<T, U> Into for uint16x8x3_timpl<T, U> Into for isizeimpl<T, U> Into for SplitInclusive<'a, T, P>impl<T, U> Into for Iter<'a, A>impl<T, U> Into for FormattingOptionsimpl<T, U> Into for int16x4_timpl<T, U> Into for int16x8x3_timpl<T, U> Into for FromBytesWithNulErrorimpl<T, U> Into for fn(_: T) -> Retimpl<T, U> Into for RangeInclusiveIter<A>impl<T, U> Into for TryFromIntErrorimpl<T, U> Into for [MaybeUninit<T>; N]impl<T, U> Into for Split<'a, T, P>impl<T, U> Into for poly8x16x3_timpl<T, U> Into for Enumerate<I>impl<T, U> Into for m128dimpl<T, U> Into for uint8x16x3_timpl<T, U> Into for Fuse<I>impl<T, U> Into for BorrowedBuf<'data>impl<T, U> Into for __m128dimpl<T, U> Into for IntoIter<A>impl<T, U> Into for int32x2_timpl<T, U> Into for int8x16x3_timpl<T, U> Into for Chain<A, B>impl<T, U> Into for vector_bool_charimpl<T, U> Into for Ref<'b, T>impl<T, U> Into for AtomicI16impl<T, U> Into for *const Timpl<T, U> Into for poly64x2x2_timpl<T, U> Into for Fieldimpl<T, U> Into for Discriminant<T>impl<T, U> Into for ChunksMut<'a, T>impl<T, U> Into for uint64x2x2_timpl<T, U> Into for (T)impl<T, U> Into for RChunks<'a, T>impl<T, U> Into for SimdAlignimpl<T, U> Into for c_voidimpl<T, U> Into for ChunkBy<'a, T, P>impl<T, U> Into for __m256dimpl<T, U> Into for int64x2x2_timpl<T, U> Into for FilterMap<I, F>impl<T, U> Into for Alignmentimpl<T, U> Into for CoroutineState<Y, R>impl<T, U> Into for int64x1_timpl<T, U> Into for vector_bool_shortimpl<T, U> Into for ContextBuilder<'a>impl<T, U> Into for float32x4x2_timpl<T, U> Into for ParseIntErrorimpl<T, U> Into for OptionFlatten<A>impl<T, U> Into for PhantomContravariant<T>impl<T, U> Into for RepeatN<A>impl<T, U> Into for Reverse<T>impl<T, U> Into for vector_unsigned_charimpl<T, U> Into for MapWindows<I, F, N>impl<T, U> Into for bf16impl<T, U> Into for CharIndices<'a>impl<T, U> Into for u8impl<T, U> Into for float16x8x2_timpl<T, U> Into for Copied<I>impl<T, U> Into for RChunksExact<'a, T>impl<T, U> Into for __m512dimpl<T, U> Into for SocketAddrV4impl<T, U> Into for uint32x4x2_timpl<T, U> Into for int8x16_timpl<T, U> Into for Alignmentimpl<T, U> Into for vector_bool_intimpl<T, U> Into for float64x1x2_timpl<T, U> Into for f16impl<T, U> Into for int32x4x2_timpl<T, U> Into for Lines<'a>impl<T, U> Into for FromBytesUntilNulErrorimpl<T, U> Into for vector_unsigned_shortimpl<T, U> Into for FromIter<I>impl<T, U> Into for RangeFromIter<A>impl<T, U> Into for PhantomPinnedimpl<T, U> Into for poly16x8x2_timpl<T, U> Into for SplitN<'a, T, P>impl<T, U> Into for RMatches<'a, P>impl<T, U> Into for __m512bhimpl<T, U> Into for Chunks<'a, T>impl<T, U> Into for uint16x8x2_timpl<T, U> Into for ArrayWindows<'a, T, N>impl<T, U> Into for int16x8_timpl<T, U> Into for RChunksExactMut<'a, T>impl<T, U> Into for int16x8x2_timpl<T, U> Into for Arguments<'a>impl<T, U> Into for ReturnToArgimpl<T, U> Into for vector_unsigned_intimpl<T, U> Into for poly8x16x2_timpl<T, U> Into for DecodeUtf16<I>impl<T, U> Into for Formatter<'a>impl<T, U> Into for FlatMap<I, U, F>impl<T, U> Into for __m512himpl<T, U> Into for ChunksExact<'a, T>impl<T, U> Into for uint8x16x2_timpl<T, U> Into for TakeWhile<I, P>impl<T, U> Into for int32x4_timpl<T, U> Into for CharArrayRefSearcher<'a, 'b, N>impl<T, U> Into for Layoutimpl<T, U> Into for IntersperseWith<I, G>impl<T, U> Into for Orderingimpl<T, U> Into for int8x16x2_timpl<T, U> Into for objc_selectorimpl<T, U> Into for FromFn<F>impl<T, U> Into for Yeet<T>impl<T, U> Into for PanicInfo<'a>impl<T, U> Into for vector_unsigned_long_longimpl<T, U> Into for Source<'a>impl<T, U> Into for objc_classimpl<T, U> Into for EscapeUnicode<'a>impl<T, U> Into for Timpl<T, U> Into for Zip<A, B>impl<T, U> Into for FromFn<F>impl<T, U> Into for int64x2_timpl<T, U> Into for vector_signed_longimpl<T, U> Into for Windows<'a, T>impl<T, U> Into for SearchStepimpl<T, U> Into for vector_doubleimpl<T, U> Into for ToUppercaseimpl<T, U> Into for m256impl<T, U> Into for float16x4_timpl<T, U> Into for UnsafePinned<T>impl<T, U> Into for ()impl<T, U> Into for vector_doubleimpl<T, U> Into for poly64x1x4_timpl<T, U> Into for Exclusive<T>impl<T, U> Into for Bound<T>impl<T, U> Into for TypeIdimpl<T, U> Into for Pin<Ptr>impl<T, U> Into for Utf8Errorimpl<T, U> Into for uint64x1x4_timpl<T, U> Into for RawWakerimpl<T, U> Into for VaList<'a>impl<T, U> Into for DebugStruct<'a, 'b>impl<T, U> Into for poly8x8_timpl<T, U> Into for Matches<'a, P>impl<T, U> Into for int64x1x4_timpl<T, U> Into for Poll<T>impl<T, U> Into for AtomicU8impl<T, U> Into for Successors<T, F>impl<T, U> Into for ChunksExactMut<'a, T>impl<T, U> Into for float32x2x4_timpl<T, U> Into for AtomicI32impl<T, U> Into for Arrayimpl<T, U> Into for Bytes<'a>impl<T, U> Into for AtomicU64impl<T, U> Into for m128impl<T, U> Into for float16x4x4_timpl<T, U> Into for IntoIter<T>impl<T, U> Into for __m128impl<T, U> Into for Utf8Chunks<'a>impl<T, U> Into for AtomicOrderingimpl<T, U> Into for float64x2x4_timpl<T, U> Into for PhantomCovariant<T>impl<T, U> Into for IntErrorKindimpl<T, U> Into for poly16x4_timpl<T, U> Into for uint32x2x4_timpl<T, U> Into for MapWhile<I, P>impl<T, U> Into for vector_unsigned_charimpl<T, U> Into for RawWakerVTableimpl<T, U> Into for Peekable<I>impl<T, U> Into for Wakerimpl<T, U> Into for float64x2_timpl<T, U> Into for int32x2x4_timpl<T, U> Into for RangeFrom<Idx>impl<T, U> Into for StepBy<I>impl<T, U> Into for BorrowMutErrorimpl<T, U> Into for poly16x4x4_timpl<T, U> Into for poly64x1x3_timpl<T, U> Into for StrSearcher<'a, 'b>impl<T, U> Into for Intersperse<I>impl<T, U> Into for __m256impl<T, U> Into for RSplitMut<'a, T, P>impl<T, U> Into for BasicBlockimpl<T, U> Into for float32x2_timpl<T, U> Into for uint16x4x4_timpl<T, U> Into for Location<'a>impl<T, U> Into for uint64x1x3_timpl<T, U> Into for CpuidResultimpl<T, U> Into for BorrowErrorimpl<T, U> Into for vector_unsigned_shortimpl<T, U> Into for EscapeDefault<'a>impl<T, U> Into for int16x4x4_timpl<T, U> Into for int64x1x3_timpl<T, U> Into for RSplitNMut<'a, T, P>impl<T, U> Into for vector_signed_charimpl<T, U> Into for RefCell<T>impl<T, U> Into for poly8x8x4_timpl<T, U> Into for float32x2x3_timpl<T, U> Into for ArrayChunks<I, N>impl<T, U> Into for __m512impl<T, U> Into for EscapeAscii<'a>impl<T, U> Into for poly64x1_timpl<T, U> Into for uint8x8x4_timpl<T, U> Into for float16x4x3_timpl<T, U> Into for TryFromFloatSecsErrorimpl<T, U> Into for IterMut<'a, T>impl<T, U> Into for vector_unsigned_intimpl<T, U> Into for Utf8Chunk<'a>impl<T, U> Into for float64x2x3_timpl<T, U> Into for int8x8x4_timpl<T, U> Into for uint32x2x3_timpl<T, U> Into for vector_signed_shortimpl<T, U> Into for int32x2x3_timpl<T, U> Into for EscapeDefaultimpl<T, U> Into for __m256bhimpl<T, U> Into for poly8x16_timpl<T, U> Into for poly16x4x3_timpl<T, U> Into for TypeKindimpl<T, U> Into for SyncUnsafeCell<T>impl<T, U> Into for RangeTo<Idx>impl<T, U> Into for RMatchIndices<'a, P>impl<T, U> Into for SkipWhile<I, P>impl<T, U> Into for uint16x4x3_timpl<T, U> Into for PanicMessage<'a>impl<T, U> Into for vector_signed_intimpl<T, U> Into for Lastimpl<T, U> Into for neverimpl<T, U> Into for int16x4x3_timpl<T, U> Into for AsciiCharimpl<T, U> Into for RepeatWith<F>impl<T, U> Into for __m256himpl<T, U> Into for poly16x8_timpl<T, U> Into for poly8x8x3_timpl<T, U> Into for CharArraySearcher<'a, N>impl<T, U> Into for DebugMap<'a, 'b>impl<T, U> Into for uint8x8x3_timpl<T, U> Into for vector_signed_long_longimpl<T, U> Into for PhantomInvariantLifetime<'a>impl<T, U> Into for int8x8x3_timpl<T, U> Into for FpCategoryimpl<T, U> Into for DropGuard<T, F>impl<T, U> Into for poly64x1x2_timpl<T, U> Into for Errorimpl<T, U> Into for float32x4_timpl<T, U> Into for CharPredicateSearcher<'a, F>impl<T, U> Into for LazyCell<T, F>impl<T, U> Into for IntoIter<T, N>impl<T, U> Into for SYimpl<T, U> Into for uint64x1x2_timpl<T, U> Into for Infallibleimpl<T, U> Into for vector_floatimpl<T, U> Into for DebugAsHeximpl<T, U> Into for m256iimpl<T, U> Into for int64x1x2_timpl<T, U> Into for TryFromSliceErrorimpl<T, U> Into for float32x2x2_timpl<T, U> Into for poly64x2_timpl<T, U> Into for OnceCell<T>impl<T, U> Into for DebugTuple<'a, 'b>impl<T, U> Into for UnwindTerminateReasonimpl<T, U> Into for AtomicI8impl<T, U> Into for vector_bool_longimpl<T, U> Into for float16x4x2_timpl<T, U> Into for Iter<'a, T>impl<T, U> Into for Flatten<I>impl<T, U> Into for Ipv4Addrimpl<T, U> Into for float64x2x2_timpl<T, U> Into for Skip<I>impl<T, U> Into for uint32x2x2_timpl<T, U> Into for Cell<T>impl<T, U> Into for ByRefSized<'a, I>impl<T, U> Into for AtomicI64impl<T, U> Into for Result<T, E>