Movatterモバイル変換


[0]ホーム

URL:


Box

std::boxed

StructBox 

1.0.0 ·Source
pub struct Box<T, A =Global>(/* private fields */)where    A:Allocator,    T: ?Sized;
Expand description

A pointer type that uniquely owns a heap allocation of typeT.

See themodule-level documentation for more.

Implementations§

Source§

impl<A>Box<dynAny, A>
where A:Allocator,

1.0.0 ·Source

pub fndowncast<T>(self) ->Result<Box<T, A>,Box<dynAny, A>>
where T:Any,

Attempts to downcast the box to a concrete type.

§Examples
usestd::any::Any;fnprint_if_string(value: Box<dynAny>) {if letOk(string) = value.downcast::<String>() {println!("String ({}): {}", string.len(), string);    }}letmy_string ="Hello World".to_string();print_if_string(Box::new(my_string));print_if_string(Box::new(0i8));
Source

pub unsafe fndowncast_unchecked<T>(self) ->Box<T, A>
where T:Any,

🔬This is a nightly-only experimental API. (downcast_unchecked #90850)

Downcasts the box to a concrete type.

For a safe alternative seedowncast.

§Examples
#![feature(downcast_unchecked)]usestd::any::Any;letx: Box<dynAny> = Box::new(1_usize);unsafe{assert_eq!(*x.downcast_unchecked::<usize>(),1);}
§Safety

The contained value must be of typeT. Calling this methodwith the incorrect type isundefined behavior.

Source§

impl<A>Box<dynAny +Send, A>
where A:Allocator,

1.0.0 ·Source

pub fndowncast<T>(self) ->Result<Box<T, A>,Box<dynAny +Send, A>>
where T:Any,

Attempts to downcast the box to a concrete type.

§Examples
usestd::any::Any;fnprint_if_string(value: Box<dynAny + Send>) {if letOk(string) = value.downcast::<String>() {println!("String ({}): {}", string.len(), string);    }}letmy_string ="Hello World".to_string();print_if_string(Box::new(my_string));print_if_string(Box::new(0i8));
Source

pub unsafe fndowncast_unchecked<T>(self) ->Box<T, A>
where T:Any,

🔬This is a nightly-only experimental API. (downcast_unchecked #90850)

Downcasts the box to a concrete type.

For a safe alternative seedowncast.

§Examples
#![feature(downcast_unchecked)]usestd::any::Any;letx: Box<dynAny + Send> = Box::new(1_usize);unsafe{assert_eq!(*x.downcast_unchecked::<usize>(),1);}
§Safety

The contained value must be of typeT. Calling this methodwith the incorrect type isundefined behavior.

Source§

impl<A>Box<dynAny +Send +Sync, A>
where A:Allocator,

1.51.0 ·Source

pub fndowncast<T>(self) ->Result<Box<T, A>,Box<dynAny +Send +Sync, A>>
where T:Any,

Attempts to downcast the box to a concrete type.

§Examples
usestd::any::Any;fnprint_if_string(value: Box<dynAny + Send + Sync>) {if letOk(string) = value.downcast::<String>() {println!("String ({}): {}", string.len(), string);    }}letmy_string ="Hello World".to_string();print_if_string(Box::new(my_string));print_if_string(Box::new(0i8));
Source

pub unsafe fndowncast_unchecked<T>(self) ->Box<T, A>
where T:Any,

🔬This is a nightly-only experimental API. (downcast_unchecked #90850)

Downcasts the box to a concrete type.

For a safe alternative seedowncast.

§Examples
#![feature(downcast_unchecked)]usestd::any::Any;letx: Box<dynAny + Send + Sync> = Box::new(1_usize);unsafe{assert_eq!(*x.downcast_unchecked::<usize>(),1);}
§Safety

The contained value must be of typeT. Calling this methodwith the incorrect type isundefined behavior.

Source§

impl<T>Box<T>

1.0.0 ·Source

pub fnnew(x: T) ->Box<T>

Allocates memory on the heap and then placesx into it.

This doesn’t actually allocate ifT is zero-sized.

§Examples
letfive = Box::new(5);
1.82.0 ·Source

pub fnnew_uninit() ->Box<MaybeUninit<T>>

Constructs a new box with uninitialized contents.

§Examples
letmutfive = Box::<u32>::new_uninit();// Deferred initialization:five.write(5);letfive =unsafe{ five.assume_init() };assert_eq!(*five,5)
1.92.0 ·Source

pub fnnew_zeroed() ->Box<MaybeUninit<T>>

Constructs a newBox with uninitialized contents, with the memorybeing filled with0 bytes.

SeeMaybeUninit::zeroed for examples of correct and incorrect usageof this method.

§Examples
letzero = Box::<u32>::new_zeroed();letzero =unsafe{ zero.assume_init() };assert_eq!(*zero,0)
1.33.0 ·Source

pub fnpin(x: T) ->Pin<Box<T>>

Constructs a newPin<Box<T>>. IfT does not implementUnpin, thenx will be pinned in memory and unable to be moved.

Constructing and pinning of theBox can also be done in two steps:Box::pin(x)does the same asBox::into_pin(Box::new(x)). Consider usinginto_pin if you already have aBox<T>, or if you want toconstruct a (pinned)Box in a different way than withBox::new.

Source

pub fntry_new(x: T) ->Result<Box<T>,AllocError>

🔬This is a nightly-only experimental API. (allocator_api #32838)

Allocates memory on the heap then placesx into it,returning an error if the allocation fails

This doesn’t actually allocate ifT is zero-sized.

§Examples
#![feature(allocator_api)]letfive = Box::try_new(5)?;
Source

pub fntry_new_uninit() ->Result<Box<MaybeUninit<T>>,AllocError>

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a new box with uninitialized contents on the heap,returning an error if the allocation fails

§Examples
#![feature(allocator_api)]letmutfive = Box::<u32>::try_new_uninit()?;// Deferred initialization:five.write(5);letfive =unsafe{ five.assume_init() };assert_eq!(*five,5);
Source

pub fntry_new_zeroed() ->Result<Box<MaybeUninit<T>>,AllocError>

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a newBox with uninitialized contents, with the memorybeing filled with0 bytes on the heap

SeeMaybeUninit::zeroed for examples of correct and incorrect usageof this method.

§Examples
#![feature(allocator_api)]letzero = Box::<u32>::try_new_zeroed()?;letzero =unsafe{ zero.assume_init() };assert_eq!(*zero,0);
Source

pub fnmap<U>(this:Box<T>, f: implFnOnce(T) -> U) ->Box<U>

🔬This is a nightly-only experimental API. (smart_pointer_try_map #144419)

Maps the value in a box, reusing the allocation if possible.

f is called on the value in the box, and the result is returned, also boxed.

Note: this is an associated function, which means that you haveto call it asBox::map(b, f) instead ofb.map(f). Thisis so that there is no conflict with a method on the inner type.

§Examples
#![feature(smart_pointer_try_map)]letb = Box::new(7);letnew = Box::map(b, |i| i +7);assert_eq!(*new,14);
Source

pub fntry_map<R>( this:Box<T>, f: implFnOnce(T) -> R,) -> <<R asTry>::Residual asResidual<Box<<R asTry>::Output>>>::TryType
where R:Try, <R asTry>::Residual:Residual<Box<<R asTry>::Output>>,

🔬This is a nightly-only experimental API. (smart_pointer_try_map #144419)

Attempts to map the value in a box, reusing the allocation if possible.

f is called on the value in the box, and if the operation succeeds, the result isreturned, also boxed.

Note: this is an associated function, which means that you haveto call it asBox::try_map(b, f) instead ofb.try_map(f). Thisis so that there is no conflict with a method on the inner type.

§Examples
#![feature(smart_pointer_try_map)]letb = Box::new(7);letnew = Box::try_map(b, u32::try_from).unwrap();assert_eq!(*new,7);
Source§

impl<T, A>Box<T, A>
where A:Allocator,

Source

pub fnnew_in(x: T, alloc: A) ->Box<T, A>
where A:Allocator,

🔬This is a nightly-only experimental API. (allocator_api #32838)

Allocates memory in the given allocator then placesx into it.

This doesn’t actually allocate ifT is zero-sized.

§Examples
#![feature(allocator_api)]usestd::alloc::System;letfive = Box::new_in(5, System);
Source

pub fntry_new_in(x: T, alloc: A) ->Result<Box<T, A>,AllocError>
where A:Allocator,

🔬This is a nightly-only experimental API. (allocator_api #32838)

Allocates memory in the given allocator then placesx into it,returning an error if the allocation fails

This doesn’t actually allocate ifT is zero-sized.

§Examples
#![feature(allocator_api)]usestd::alloc::System;letfive = Box::try_new_in(5, System)?;
Source

pub fnnew_uninit_in(alloc: A) ->Box<MaybeUninit<T>, A>
where A:Allocator,

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a new box with uninitialized contents in the provided allocator.

§Examples
#![feature(allocator_api)]usestd::alloc::System;letmutfive = Box::<u32,_>::new_uninit_in(System);// Deferred initialization:five.write(5);letfive =unsafe{ five.assume_init() };assert_eq!(*five,5)
Source

pub fntry_new_uninit_in(alloc: A) ->Result<Box<MaybeUninit<T>, A>,AllocError>
where A:Allocator,

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a new box with uninitialized contents in the provided allocator,returning an error if the allocation fails

§Examples
#![feature(allocator_api)]usestd::alloc::System;letmutfive = Box::<u32,_>::try_new_uninit_in(System)?;// Deferred initialization:five.write(5);letfive =unsafe{ five.assume_init() };assert_eq!(*five,5);
Source

pub fnnew_zeroed_in(alloc: A) ->Box<MaybeUninit<T>, A>
where A:Allocator,

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a newBox with uninitialized contents, with the memorybeing filled with0 bytes in the provided allocator.

SeeMaybeUninit::zeroed for examples of correct and incorrect usageof this method.

§Examples
#![feature(allocator_api)]usestd::alloc::System;letzero = Box::<u32,_>::new_zeroed_in(System);letzero =unsafe{ zero.assume_init() };assert_eq!(*zero,0)
Source

pub fntry_new_zeroed_in(alloc: A) ->Result<Box<MaybeUninit<T>, A>,AllocError>
where A:Allocator,

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a newBox with uninitialized contents, with the memorybeing filled with0 bytes in the provided allocator,returning an error if the allocation fails,

SeeMaybeUninit::zeroed for examples of correct and incorrect usageof this method.

§Examples
#![feature(allocator_api)]usestd::alloc::System;letzero = Box::<u32,_>::try_new_zeroed_in(System)?;letzero =unsafe{ zero.assume_init() };assert_eq!(*zero,0);
Source

pub fnpin_in(x: T, alloc: A) ->Pin<Box<T, A>>
where A: 'static +Allocator,

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a newPin<Box<T, A>>. IfT does not implementUnpin, thenx will be pinned in memory and unable to be moved.

Constructing and pinning of theBox can also be done in two steps:Box::pin_in(x, alloc)does the same asBox::into_pin(Box::new_in(x, alloc)). Consider usinginto_pin if you already have aBox<T, A>, or if you want toconstruct a (pinned)Box in a different way than withBox::new_in.

Source

pub fninto_boxed_slice(boxed:Box<T, A>) ->Box<[T], A>

🔬This is a nightly-only experimental API. (box_into_boxed_slice #71582)

Converts aBox<T> into aBox<[T]>

This conversion does not allocate on the heap and happens in place.

Source

pub fninto_inner(boxed:Box<T, A>) -> T

🔬This is a nightly-only experimental API. (box_into_inner #80437)

Consumes theBox, returning the wrapped value.

§Examples
#![feature(box_into_inner)]letc = Box::new(5);assert_eq!(Box::into_inner(c),5);
Source

pub fntake(boxed:Box<T, A>) -> (T,Box<MaybeUninit<T>, A>)

🔬This is a nightly-only experimental API. (box_take #147212)

Consumes theBox without consuming its allocation, returning the wrapped value and aBoxto the uninitialized memory where the wrapped value used to live.

This can be used together withwrite to reuse the allocation for multipleboxed values.

§Examples
#![feature(box_take)]letc = Box::new(5);// take the value out of the boxlet(value, uninit) = Box::take(c);assert_eq!(value,5);// reuse the box for a second valueletc = Box::write(uninit,6);assert_eq!(*c,6);
Source§

impl<T>Box<T>
where T:CloneToUninit + ?Sized,

Source

pub fnclone_from_ref(src:&T) ->Box<T>

🔬This is a nightly-only experimental API. (clone_from_ref #149075)

Allocates memory on the heap then clonessrc into it.

This doesn’t actually allocate ifsrc is zero-sized.

§Examples
#![feature(clone_from_ref)]lethello: Box<str> = Box::clone_from_ref("hello");
Source

pub fntry_clone_from_ref(src:&T) ->Result<Box<T>,AllocError>

🔬This is a nightly-only experimental API. (clone_from_ref #149075)

Allocates memory on the heap then clonessrc into it, returning an error if allocation fails.

This doesn’t actually allocate ifsrc is zero-sized.

§Examples
#![feature(clone_from_ref)]#![feature(allocator_api)]lethello: Box<str> = Box::try_clone_from_ref("hello")?;
Source§

impl<T, A>Box<T, A>

Source

pub fnclone_from_ref_in(src:&T, alloc: A) ->Box<T, A>

🔬This is a nightly-only experimental API. (clone_from_ref #149075)

Allocates memory in the given allocator then clonessrc into it.

This doesn’t actually allocate ifsrc is zero-sized.

§Examples
#![feature(clone_from_ref)]#![feature(allocator_api)]usestd::alloc::System;lethello: Box<str, System> = Box::clone_from_ref_in("hello", System);
Source

pub fntry_clone_from_ref_in(src:&T, alloc: A) ->Result<Box<T, A>,AllocError>

🔬This is a nightly-only experimental API. (clone_from_ref #149075)

Allocates memory in the given allocator then clonessrc into it, returning an error if allocation fails.

This doesn’t actually allocate ifsrc is zero-sized.

§Examples
#![feature(clone_from_ref)]#![feature(allocator_api)]usestd::alloc::System;lethello: Box<str, System> = Box::try_clone_from_ref_in("hello", System)?;
Source§

impl<T>Box<[T]>

1.82.0 ·Source

pub fnnew_uninit_slice(len:usize) ->Box<[MaybeUninit<T>]>

Constructs a new boxed slice with uninitialized contents.

§Examples
letmutvalues = Box::<[u32]>::new_uninit_slice(3);// Deferred initialization:values[0].write(1);values[1].write(2);values[2].write(3);letvalues =unsafe{ values.assume_init() };assert_eq!(*values, [1,2,3])
1.92.0 ·Source

pub fnnew_zeroed_slice(len:usize) ->Box<[MaybeUninit<T>]>

Constructs a new boxed slice with uninitialized contents, with the memorybeing filled with0 bytes.

SeeMaybeUninit::zeroed for examples of correct and incorrect usageof this method.

§Examples
letvalues = Box::<[u32]>::new_zeroed_slice(3);letvalues =unsafe{ values.assume_init() };assert_eq!(*values, [0,0,0])
Source

pub fntry_new_uninit_slice( len:usize,) ->Result<Box<[MaybeUninit<T>]>,AllocError>

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a new boxed slice with uninitialized contents. Returns an error ifthe allocation fails.

§Examples
#![feature(allocator_api)]letmutvalues = Box::<[u32]>::try_new_uninit_slice(3)?;// Deferred initialization:values[0].write(1);values[1].write(2);values[2].write(3);letvalues =unsafe{ values.assume_init() };assert_eq!(*values, [1,2,3]);
Source

pub fntry_new_zeroed_slice( len:usize,) ->Result<Box<[MaybeUninit<T>]>,AllocError>

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a new boxed slice with uninitialized contents, with the memorybeing filled with0 bytes. Returns an error if the allocation fails.

SeeMaybeUninit::zeroed for examples of correct and incorrect usageof this method.

§Examples
#![feature(allocator_api)]letvalues = Box::<[u32]>::try_new_zeroed_slice(3)?;letvalues =unsafe{ values.assume_init() };assert_eq!(*values, [0,0,0]);
Source

pub fninto_array<const N:usize>(self) ->Option<Box<[T; N]>>

🔬This is a nightly-only experimental API. (alloc_slice_into_array #148082)

Converts the boxed slice into a boxed array.

This operation does not reallocate; the underlying array of the slice is simply reinterpreted as an array type.

IfN is not exactly equal to the length ofself, then this method returnsNone.

Source§

impl<T, A>Box<[T], A>
where A:Allocator,

Source

pub fnnew_uninit_slice_in(len:usize, alloc: A) ->Box<[MaybeUninit<T>], A>

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a new boxed slice with uninitialized contents in the provided allocator.

§Examples
#![feature(allocator_api)]usestd::alloc::System;letmutvalues = Box::<[u32],_>::new_uninit_slice_in(3, System);// Deferred initialization:values[0].write(1);values[1].write(2);values[2].write(3);letvalues =unsafe{ values.assume_init() };assert_eq!(*values, [1,2,3])
Source

pub fnnew_zeroed_slice_in(len:usize, alloc: A) ->Box<[MaybeUninit<T>], A>

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a new boxed slice with uninitialized contents in the provided allocator,with the memory being filled with0 bytes.

SeeMaybeUninit::zeroed for examples of correct and incorrect usageof this method.

§Examples
#![feature(allocator_api)]usestd::alloc::System;letvalues = Box::<[u32],_>::new_zeroed_slice_in(3, System);letvalues =unsafe{ values.assume_init() };assert_eq!(*values, [0,0,0])
Source

pub fntry_new_uninit_slice_in( len:usize, alloc: A,) ->Result<Box<[MaybeUninit<T>], A>,AllocError>

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a new boxed slice with uninitialized contents in the provided allocator. Returns an error ifthe allocation fails.

§Examples
#![feature(allocator_api)]usestd::alloc::System;letmutvalues = Box::<[u32],_>::try_new_uninit_slice_in(3, System)?;// Deferred initialization:values[0].write(1);values[1].write(2);values[2].write(3);letvalues =unsafe{ values.assume_init() };assert_eq!(*values, [1,2,3]);
Source

pub fntry_new_zeroed_slice_in( len:usize, alloc: A,) ->Result<Box<[MaybeUninit<T>], A>,AllocError>

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a new boxed slice with uninitialized contents in the provided allocator, with the memorybeing filled with0 bytes. Returns an error if the allocation fails.

SeeMaybeUninit::zeroed for examples of correct and incorrect usageof this method.

§Examples
#![feature(allocator_api)]usestd::alloc::System;letvalues = Box::<[u32],_>::try_new_zeroed_slice_in(3, System)?;letvalues =unsafe{ values.assume_init() };assert_eq!(*values, [0,0,0]);
Source§

impl<T, A>Box<MaybeUninit<T>, A>
where A:Allocator,

1.82.0 ·Source

pub unsafe fnassume_init(self) ->Box<T, A>

Converts toBox<T, A>.

§Safety

As withMaybeUninit::assume_init,it is up to the caller to guarantee that the valuereally is in an initialized state.Calling this when the content is not yet fully initializedcauses immediate undefined behavior.

§Examples
letmutfive = Box::<u32>::new_uninit();// Deferred initialization:five.write(5);letfive: Box<u32> =unsafe{ five.assume_init() };assert_eq!(*five,5)
1.87.0 ·Source

pub fnwrite(boxed:Box<MaybeUninit<T>, A>, value: T) ->Box<T, A>

Writes the value and converts toBox<T, A>.

This method converts the box similarly toBox::assume_init butwritesvalue into it before conversion thus guaranteeing safety.In some scenarios use of this method may improve performance becausethe compiler may be able to optimize copying from stack.

§Examples
letbig_box = Box::<[usize;1024]>::new_uninit();letmutarray = [0;1024];for(i, place)inarray.iter_mut().enumerate() {*place = i;}// The optimizer may be able to elide this copy, so previous code writes// to heap directly.letbig_box = Box::write(big_box, array);for(i, x)inbig_box.iter().enumerate() {assert_eq!(*x, i);}
Source§

impl<T, A>Box<[MaybeUninit<T>], A>
where A:Allocator,

1.82.0 ·Source

pub unsafe fnassume_init(self) ->Box<[T], A>

Converts toBox<[T], A>.

§Safety

As withMaybeUninit::assume_init,it is up to the caller to guarantee that the valuesreally are in an initialized state.Calling this when the content is not yet fully initializedcauses immediate undefined behavior.

§Examples
letmutvalues = Box::<[u32]>::new_uninit_slice(3);// Deferred initialization:values[0].write(1);values[1].write(2);values[2].write(3);letvalues =unsafe{ values.assume_init() };assert_eq!(*values, [1,2,3])
Source§

impl<T>Box<T>
where T: ?Sized,

1.4.0 ·Source

pub unsafe fnfrom_raw(raw:*mut T) ->Box<T>

Constructs a box from a raw pointer.

After calling this function, the raw pointer is owned by theresultingBox. Specifically, theBox destructor will callthe destructor ofT and free the allocated memory. For thisto be safe, the memory must have been allocated in accordancewith thememory layout used byBox .

§Safety

This function is unsafe because improper use may lead tomemory problems. For example, a double-free may occur if thefunction is called twice on the same raw pointer.

The raw pointer must point to a block of memory allocated by the global allocator.

The safety conditions are described in thememory layout section.

§Examples

Recreate aBox which was previously converted to a raw pointerusingBox::into_raw:

letx = Box::new(5);letptr = Box::into_raw(x);letx =unsafe{ Box::from_raw(ptr) };

Manually create aBox from scratch by using the global allocator:

usestd::alloc::{alloc, Layout};unsafe{letptr = alloc(Layout::new::<i32>())as*muti32;// In general .write is required to avoid attempting to destruct    // the (uninitialized) previous contents of `ptr`, though for this    // simple example `*ptr = 5` would have worked as well.ptr.write(5);letx = Box::from_raw(ptr);}
Source

pub unsafe fnfrom_non_null(ptr:NonNull<T>) ->Box<T>

🔬This is a nightly-only experimental API. (box_vec_non_null #130364)

Constructs a box from aNonNull pointer.

After calling this function, theNonNull pointer is owned bythe resultingBox. Specifically, theBox destructor will callthe destructor ofT and free the allocated memory. For thisto be safe, the memory must have been allocated in accordancewith thememory layout used byBox .

§Safety

This function is unsafe because improper use may lead tomemory problems. For example, a double-free may occur if thefunction is called twice on the sameNonNull pointer.

The non-null pointer must point to a block of memory allocated by the global allocator.

The safety conditions are described in thememory layout section.

§Examples

Recreate aBox which was previously converted to aNonNullpointer usingBox::into_non_null:

#![feature(box_vec_non_null)]letx = Box::new(5);letnon_null = Box::into_non_null(x);letx =unsafe{ Box::from_non_null(non_null) };

Manually create aBox from scratch by using the global allocator:

#![feature(box_vec_non_null)]usestd::alloc::{alloc, Layout};usestd::ptr::NonNull;unsafe{letnon_null = NonNull::new(alloc(Layout::new::<i32>()).cast::<i32>())        .expect("allocation failed");// In general .write is required to avoid attempting to destruct    // the (uninitialized) previous contents of `non_null`.non_null.write(5);letx = Box::from_non_null(non_null);}
1.4.0 ·Source

pub fninto_raw(b:Box<T>) ->*mut T

Consumes theBox, returning a wrapped raw pointer.

The pointer will be properly aligned and non-null.

After calling this function, the caller is responsible for thememory previously managed by theBox. In particular, thecaller should properly destroyT and release the memory, takinginto account thememory layout used byBox. The easiest way todo this is to convert the raw pointer back into aBox with theBox::from_raw function, allowing theBox destructor to performthe cleanup.

Note: this is an associated function, which means that you haveto call it asBox::into_raw(b) instead ofb.into_raw(). Thisis so that there is no conflict with a method on the inner type.

§Examples

Converting the raw pointer back into aBox withBox::from_rawfor automatic cleanup:

letx = Box::new(String::from("Hello"));letptr = Box::into_raw(x);letx =unsafe{ Box::from_raw(ptr) };

Manual cleanup by explicitly running the destructor and deallocatingthe memory:

usestd::alloc::{dealloc, Layout};usestd::ptr;letx = Box::new(String::from("Hello"));letptr = Box::into_raw(x);unsafe{    ptr::drop_in_place(ptr);    dealloc(ptras*mutu8, Layout::new::<String>());}

Note: This is equivalent to the following:

letx = Box::new(String::from("Hello"));letptr = Box::into_raw(x);unsafe{    drop(Box::from_raw(ptr));}
Source

pub fninto_non_null(b:Box<T>) ->NonNull<T>

🔬This is a nightly-only experimental API. (box_vec_non_null #130364)

Consumes theBox, returning a wrappedNonNull pointer.

The pointer will be properly aligned.

After calling this function, the caller is responsible for thememory previously managed by theBox. In particular, thecaller should properly destroyT and release the memory, takinginto account thememory layout used byBox. The easiest way todo this is to convert theNonNull pointer back into aBox with theBox::from_non_null function, allowing theBox destructor toperform the cleanup.

Note: this is an associated function, which means that you haveto call it asBox::into_non_null(b) instead ofb.into_non_null().This is so that there is no conflict with a method on the inner type.

§Examples

Converting theNonNull pointer back into aBox withBox::from_non_nullfor automatic cleanup:

#![feature(box_vec_non_null)]letx = Box::new(String::from("Hello"));letnon_null = Box::into_non_null(x);letx =unsafe{ Box::from_non_null(non_null) };

Manual cleanup by explicitly running the destructor and deallocatingthe memory:

#![feature(box_vec_non_null)]usestd::alloc::{dealloc, Layout};letx = Box::new(String::from("Hello"));letnon_null = Box::into_non_null(x);unsafe{    non_null.drop_in_place();    dealloc(non_null.as_ptr().cast::<u8>(), Layout::new::<String>());}

Note: This is equivalent to the following:

#![feature(box_vec_non_null)]letx = Box::new(String::from("Hello"));letnon_null = Box::into_non_null(x);unsafe{    drop(Box::from_non_null(non_null));}
Source§

impl<T, A>Box<T, A>
where A:Allocator, T: ?Sized,

Source

pub unsafe fnfrom_raw_in(raw:*mut T, alloc: A) ->Box<T, A>

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a box from a raw pointer in the given allocator.

After calling this function, the raw pointer is owned by theresultingBox. Specifically, theBox destructor will callthe destructor ofT and free the allocated memory. For thisto be safe, the memory must have been allocated in accordancewith thememory layout used byBox .

§Safety

This function is unsafe because improper use may lead tomemory problems. For example, a double-free may occur if thefunction is called twice on the same raw pointer.

The raw pointer must point to a block of memory allocated byalloc.

§Examples

Recreate aBox which was previously converted to a raw pointerusingBox::into_raw_with_allocator:

#![feature(allocator_api)]usestd::alloc::System;letx = Box::new_in(5, System);let(ptr, alloc) = Box::into_raw_with_allocator(x);letx =unsafe{ Box::from_raw_in(ptr, alloc) };

Manually create aBox from scratch by using the system allocator:

#![feature(allocator_api, slice_ptr_get)]usestd::alloc::{Allocator, Layout, System};unsafe{letptr = System.allocate(Layout::new::<i32>())?.as_mut_ptr()as*muti32;// In general .write is required to avoid attempting to destruct    // the (uninitialized) previous contents of `ptr`, though for this    // simple example `*ptr = 5` would have worked as well.ptr.write(5);letx = Box::from_raw_in(ptr, System);}
Source

pub unsafe fnfrom_non_null_in(raw:NonNull<T>, alloc: A) ->Box<T, A>

🔬This is a nightly-only experimental API. (allocator_api #32838)

Constructs a box from aNonNull pointer in the given allocator.

After calling this function, theNonNull pointer is owned bythe resultingBox. Specifically, theBox destructor will callthe destructor ofT and free the allocated memory. For thisto be safe, the memory must have been allocated in accordancewith thememory layout used byBox .

§Safety

This function is unsafe because improper use may lead tomemory problems. For example, a double-free may occur if thefunction is called twice on the same raw pointer.

The non-null pointer must point to a block of memory allocated byalloc.

§Examples

Recreate aBox which was previously converted to aNonNull pointerusingBox::into_non_null_with_allocator:

#![feature(allocator_api, box_vec_non_null)]usestd::alloc::System;letx = Box::new_in(5, System);let(non_null, alloc) = Box::into_non_null_with_allocator(x);letx =unsafe{ Box::from_non_null_in(non_null, alloc) };

Manually create aBox from scratch by using the system allocator:

#![feature(allocator_api, box_vec_non_null, slice_ptr_get)]usestd::alloc::{Allocator, Layout, System};unsafe{letnon_null = System.allocate(Layout::new::<i32>())?.cast::<i32>();// In general .write is required to avoid attempting to destruct    // the (uninitialized) previous contents of `non_null`.non_null.write(5);letx = Box::from_non_null_in(non_null, System);}
Source

pub fninto_raw_with_allocator(b:Box<T, A>) -> (*mut T, A)

🔬This is a nightly-only experimental API. (allocator_api #32838)

Consumes theBox, returning a wrapped raw pointer and the allocator.

The pointer will be properly aligned and non-null.

After calling this function, the caller is responsible for thememory previously managed by theBox. In particular, thecaller should properly destroyT and release the memory, takinginto account thememory layout used byBox. The easiest way todo this is to convert the raw pointer back into aBox with theBox::from_raw_in function, allowing theBox destructor to performthe cleanup.

Note: this is an associated function, which means that you haveto call it asBox::into_raw_with_allocator(b) instead ofb.into_raw_with_allocator(). Thisis so that there is no conflict with a method on the inner type.

§Examples

Converting the raw pointer back into aBox withBox::from_raw_infor automatic cleanup:

#![feature(allocator_api)]usestd::alloc::System;letx = Box::new_in(String::from("Hello"), System);let(ptr, alloc) = Box::into_raw_with_allocator(x);letx =unsafe{ Box::from_raw_in(ptr, alloc) };

Manual cleanup by explicitly running the destructor and deallocatingthe memory:

#![feature(allocator_api)]usestd::alloc::{Allocator, Layout, System};usestd::ptr::{self, NonNull};letx = Box::new_in(String::from("Hello"), System);let(ptr, alloc) = Box::into_raw_with_allocator(x);unsafe{    ptr::drop_in_place(ptr);letnon_null = NonNull::new_unchecked(ptr);    alloc.deallocate(non_null.cast(), Layout::new::<String>());}
Source

pub fninto_non_null_with_allocator(b:Box<T, A>) -> (NonNull<T>, A)

🔬This is a nightly-only experimental API. (allocator_api #32838)

Consumes theBox, returning a wrappedNonNull pointer and the allocator.

The pointer will be properly aligned.

After calling this function, the caller is responsible for thememory previously managed by theBox. In particular, thecaller should properly destroyT and release the memory, takinginto account thememory layout used byBox. The easiest way todo this is to convert theNonNull pointer back into aBox with theBox::from_non_null_in function, allowing theBox destructor toperform the cleanup.

Note: this is an associated function, which means that you haveto call it asBox::into_non_null_with_allocator(b) instead ofb.into_non_null_with_allocator(). This is so that there is noconflict with a method on the inner type.

§Examples

Converting theNonNull pointer back into aBox withBox::from_non_null_in for automatic cleanup:

#![feature(allocator_api, box_vec_non_null)]usestd::alloc::System;letx = Box::new_in(String::from("Hello"), System);let(non_null, alloc) = Box::into_non_null_with_allocator(x);letx =unsafe{ Box::from_non_null_in(non_null, alloc) };

Manual cleanup by explicitly running the destructor and deallocatingthe memory:

#![feature(allocator_api, box_vec_non_null)]usestd::alloc::{Allocator, Layout, System};letx = Box::new_in(String::from("Hello"), System);let(non_null, alloc) = Box::into_non_null_with_allocator(x);unsafe{    non_null.drop_in_place();    alloc.deallocate(non_null.cast::<u8>(), Layout::new::<String>());}
Source

pub fnas_mut_ptr(b: &mutBox<T, A>) ->*mut T

🔬This is a nightly-only experimental API. (box_as_ptr #129090)

Returns a raw mutable pointer to theBox’s contents.

The caller must ensure that theBox outlives the pointer thisfunction returns, or else it will end up dangling.

This method guarantees that for the purpose of the aliasing model, this methoddoes not materialize a reference to the underlying memory, and thus the returned pointerwill remain valid when mixed with other calls toas_ptr andas_mut_ptr.Note that calling other methods that materialize references to the memorymay still invalidate this pointer.See the example below for how this guarantee can be used.

§Examples

Due to the aliasing guarantee, the following code is legal:

#![feature(box_as_ptr)]unsafe{letmutb = Box::new(0);letptr1 = Box::as_mut_ptr(&mutb);    ptr1.write(1);letptr2 = Box::as_mut_ptr(&mutb);    ptr2.write(2);// Notably, the write to `ptr2` did *not* invalidate `ptr1`:ptr1.write(3);}
Source

pub fnas_ptr(b: &Box<T, A>) ->*const T

🔬This is a nightly-only experimental API. (box_as_ptr #129090)

Returns a raw pointer to theBox’s contents.

The caller must ensure that theBox outlives the pointer thisfunction returns, or else it will end up dangling.

The caller must also ensure that the memory the pointer (non-transitively) points tois never written to (except inside anUnsafeCell) using this pointer or any pointerderived from it. If you need to mutate the contents of theBox, useas_mut_ptr.

This method guarantees that for the purpose of the aliasing model, this methoddoes not materialize a reference to the underlying memory, and thus the returned pointerwill remain valid when mixed with other calls toas_ptr andas_mut_ptr.Note that calling other methods that materialize mutable references to the memory,as well as writing to this memory, may still invalidate this pointer.See the example below for how this guarantee can be used.

§Examples

Due to the aliasing guarantee, the following code is legal:

#![feature(box_as_ptr)]unsafe{letmutv = Box::new(0);letptr1 = Box::as_ptr(&v);letptr2 = Box::as_mut_ptr(&mutv);let_val = ptr2.read();// No write to this memory has happened yet, so `ptr1` is still valid.let_val = ptr1.read();// However, once we do a write...ptr2.write(1);// ... `ptr1` is no longer valid.    // This would be UB: let _val = ptr1.read();}
Source

pub fnallocator(b: &Box<T, A>) ->&A

🔬This is a nightly-only experimental API. (allocator_api #32838)

Returns a reference to the underlying allocator.

Note: this is an associated function, which means that you haveto call it asBox::allocator(&b) instead ofb.allocator(). Thisis so that there is no conflict with a method on the inner type.

1.26.0 ·Source

pub fnleak<'a>(b:Box<T, A>) ->&'a mut T
where A: 'a,

Consumes and leaks theBox, returning a mutable reference,&'a mut T.

Note that the typeT must outlive the chosen lifetime'a. If the typehas only static references, or none at all, then this may be chosen to be'static.

This function is mainly useful for data that lives for the remainder ofthe program’s life. Dropping the returned reference will cause a memoryleak. If this is not acceptable, the reference should first be wrappedwith theBox::from_raw function producing aBox. ThisBox canthen be dropped which will properly destroyT and release theallocated memory.

Note: this is an associated function, which means that you haveto call it asBox::leak(b) instead ofb.leak(). Thisis so that there is no conflict with a method on the inner type.

§Examples

Simple usage:

letx = Box::new(41);letstatic_ref:&'staticmutusize = Box::leak(x);*static_ref +=1;assert_eq!(*static_ref,42);

Unsized data:

letx =vec![1,2,3].into_boxed_slice();letstatic_ref = Box::leak(x);static_ref[0] =4;assert_eq!(*static_ref, [4,2,3]);
1.63.0 ·Source

pub fninto_pin(boxed:Box<T, A>) ->Pin<Box<T, A>>
where A: 'static,

Converts aBox<T> into aPin<Box<T>>. IfT does not implementUnpin, then*boxed will be pinned in memory and unable to be moved.

This conversion does not allocate on the heap and happens in place.

This is also available viaFrom.

Constructing and pinning aBox withBox::into_pin(Box::new(x))can also be written more concisely usingBox::pin(x).Thisinto_pin method is useful if you already have aBox<T>, or you areconstructing a (pinned)Box in a different way than withBox::new.

§Notes

It’s not recommended that crates add an impl likeFrom<Box<T>> for Pin<T>,as it’ll introduce an ambiguity when callingPin::from.A demonstration of such a poor impl is shown below.

structFoo;// A type defined in this crate.implFrom<Box<()>>forPin<Foo> {fnfrom(_: Box<()>) -> Pin<Foo> {        Pin::new(Foo)    }}letfoo = Box::new(());letbar = Pin::from(foo);

Trait Implementations§

Source§

impl<T, A>Allocator forBox<T, A>
where T:Allocator + ?Sized, A:Allocator,

Source§

fnallocate(&self, layout:Layout) ->Result<NonNull<[u8]>,AllocError>

🔬This is a nightly-only experimental API. (allocator_api #32838)
Attempts to allocate a block of memory.Read more
Source§

fnallocate_zeroed(&self, layout:Layout) ->Result<NonNull<[u8]>,AllocError>

🔬This is a nightly-only experimental API. (allocator_api #32838)
Behaves likeallocate, but also ensures that the returned memory is zero-initialized.Read more
Source§

unsafe fndeallocate(&self, ptr:NonNull<u8>, layout:Layout)

🔬This is a nightly-only experimental API. (allocator_api #32838)
Deallocates the memory referenced byptr.Read more
Source§

unsafe fngrow( &self, ptr:NonNull<u8>, old_layout:Layout, new_layout:Layout,) ->Result<NonNull<[u8]>,AllocError>

🔬This is a nightly-only experimental API. (allocator_api #32838)
Attempts to extend the memory block.Read more
Source§

unsafe fngrow_zeroed( &self, ptr:NonNull<u8>, old_layout:Layout, new_layout:Layout,) ->Result<NonNull<[u8]>,AllocError>

🔬This is a nightly-only experimental API. (allocator_api #32838)
Behaves likegrow, but also ensures that the new contents are set to zero before beingreturned.Read more
Source§

unsafe fnshrink( &self, ptr:NonNull<u8>, old_layout:Layout, new_layout:Layout,) ->Result<NonNull<[u8]>,AllocError>

🔬This is a nightly-only experimental API. (allocator_api #32838)
Attempts to shrink the memory block.Read more
Source§

fnby_ref(&self) -> &Self
where Self:Sized,

🔬This is a nightly-only experimental API. (allocator_api #32838)
Creates a “by reference” adapter for this instance ofAllocator.Read more
1.64.0 ·Source§

impl<T:AsFd + ?Sized>AsFd forBox<T>

Available onUnix or HermitCore ortarget_os=trusty or WASI ortarget_os=motor only.
Source§

fnas_fd(&self) ->BorrowedFd<'_>

Borrows the file descriptor.Read more
1.71.0 ·Source§

impl<T:AsHandle + ?Sized>AsHandle forBox<T>

Available onWindows only.
Source§

fnas_handle(&self) ->BorrowedHandle<'_>

Borrows the handle.Read more
1.5.0 ·Source§

impl<T, A>AsMut<T> forBox<T, A>
where A:Allocator, T: ?Sized,

Source§

fnas_mut(&mut self) ->&mut T

Converts this type into a mutable reference of the (usually inferred) input type.
1.63.0 ·Source§

impl<T:AsRawFd>AsRawFd forBox<T>

Available onUnix or HermitCore ortarget_os=trusty or WASI ortarget_os=motor only.
Source§

fnas_raw_fd(&self) ->RawFd

Extracts the raw file descriptor.Read more
1.5.0 ·Source§

impl<T, A>AsRef<T> forBox<T, A>
where A:Allocator, T: ?Sized,

Source§

fnas_ref(&self) ->&T

Converts this type into a shared reference of the (usually inferred) input type.
1.71.0 ·Source§

impl<T:AsSocket>AsSocket forBox<T>

Available onWindows only.
Source§

fnas_socket(&self) ->BorrowedSocket<'_>

Borrows the socket.
1.85.0 ·Source§

impl<Args, F, A>AsyncFn<Args> forBox<F, A>
where Args:Tuple, F:AsyncFn<Args> + ?Sized, A:Allocator,

Source§

extern "rust-call" fnasync_call( &self, args: Args,) -> <Box<F, A> asAsyncFnMut<Args>>::CallRefFuture<'_>

🔬This is a nightly-only experimental API. (async_fn_traits)
Call theAsyncFn, returning a future which may borrow from the called closure.
1.85.0 ·Source§

impl<Args, F, A>AsyncFnMut<Args> forBox<F, A>
where Args:Tuple, F:AsyncFnMut<Args> + ?Sized, A:Allocator,

Source§

typeCallRefFuture<'a> = <F asAsyncFnMut<Args>>::CallRefFuture<'a>whereBox<F, A>: 'a

🔬This is a nightly-only experimental API. (async_fn_traits)
Source§

extern "rust-call" fnasync_call_mut( &mut self, args: Args,) -> <Box<F, A> asAsyncFnMut<Args>>::CallRefFuture<'_>

🔬This is a nightly-only experimental API. (async_fn_traits)
Call theAsyncFnMut, returning a future which may borrow from the called closure.
1.85.0 ·Source§

impl<Args, F, A>AsyncFnOnce<Args> forBox<F, A>
where Args:Tuple, F:AsyncFnOnce<Args> + ?Sized, A:Allocator,

Source§

typeOutput = <F asAsyncFnOnce<Args>>::Output

🔬This is a nightly-only experimental API. (async_fn_traits)
Output type of the called closure’s future.
Source§

typeCallOnceFuture = <F asAsyncFnOnce<Args>>::CallOnceFuture

🔬This is a nightly-only experimental API. (async_fn_traits)
Future returned byAsyncFnOnce::async_call_once.
Source§

extern "rust-call" fnasync_call_once( self, args: Args,) -> <Box<F, A> asAsyncFnOnce<Args>>::CallOnceFuture

🔬This is a nightly-only experimental API. (async_fn_traits)
Call theAsyncFnOnce, returning a future which may move out of the called closure.
Source§

impl<S>AsyncIterator forBox<S>

Source§

typeItem = <S asAsyncIterator>::Item

🔬This is a nightly-only experimental API. (async_iterator #79024)
The type of items yielded by the async iterator.
Source§

fnpoll_next( self:Pin<&mutBox<S>>, cx: &mutContext<'_>,) ->Poll<Option<<Box<S> asAsyncIterator>::Item>>

🔬This is a nightly-only experimental API. (async_iterator #79024)
Attempts to pull out the next value of this async iterator, registering thecurrent task for wakeup if the value is not yet available, and returningNone if the async iterator is exhausted.Read more
Source§

fnsize_hint(&self) -> (usize,Option<usize>)

🔬This is a nightly-only experimental API. (async_iterator #79024)
Returns the bounds on the remaining length of the async iterator.Read more
1.1.0 ·Source§

impl<T, A>Borrow<T> forBox<T, A>
where A:Allocator, T: ?Sized,

Source§

fnborrow(&self) ->&T

Immutably borrows from an owned value.Read more
1.1.0 ·Source§

impl<T, A>BorrowMut<T> forBox<T, A>
where A:Allocator, T: ?Sized,

Source§

fnborrow_mut(&mut self) ->&mut T

Mutably borrows from an owned value.Read more
1.0.0 ·Source§

impl<B:BufRead + ?Sized>BufRead forBox<B>

Source§

fnfill_buf(&mut self) ->Result<&[u8]>

Returns the contents of the internal buffer, filling it with more data, viaRead methods, if empty.Read more
Source§

fnconsume(&mut self, amt:usize)

Marks the givenamount of additional bytes from the internal buffer as having been read.Subsequent calls toread only return bytes that have not been marked as read.Read more
Source§

fnhas_data_left(&mut self) ->Result<bool>

🔬This is a nightly-only experimental API. (buf_read_has_data_left #86423)
Checks if there is any data left to beread.Read more
Source§

fnread_until(&mut self, byte:u8, buf: &mutVec<u8>) ->Result<usize>

Reads all bytes intobuf until the delimiterbyte or EOF is reached.Read more
Source§

fnskip_until(&mut self, byte:u8) ->Result<usize>

Skips all bytes until the delimiterbyte or EOF is reached.Read more
Source§

fnread_line(&mut self, buf: &mutString) ->Result<usize>

Reads all bytes until a newline (the0xA byte) is reached, and appendthem to the providedString buffer.Read more
1.0.0 ·Source§

fnsplit(self, byte:u8) ->Split<Self>
where Self:Sized,

Returns an iterator over the contents of this reader split on the bytebyte.Read more
1.0.0 ·Source§

fnlines(self) ->Lines<Self>
where Self:Sized,

Returns an iterator over the lines of this reader.Read more
1.3.0 ·Source§

impl<T, A>Clone forBox<[T], A>
where T:Clone, A:Allocator +Clone,

Source§

fnclone_from(&mut self, source: &Box<[T], A>)

Copiessource’s contents intoself without creating a new allocation,so long as the two are of the same length.

§Examples
letx = Box::new([5,6,7]);letmuty = Box::new([8,9,10]);letyp:*const[i32] =&*y;y.clone_from(&x);// The value is the sameassert_eq!(x, y);// And no allocation occurredassert_eq!(yp,&*y);
Source§

fnclone(&self) ->Box<[T], A>

Returns a duplicate of the value.Read more
Source§

implClone forBox<ByteStr>

Source§

fnclone(&self) ->Box<ByteStr>

Returns a duplicate of the value.Read more
1.0.0 ·Source§

fnclone_from(&mut self, source: &Self)

Performs copy-assignment fromsource.Read more
1.29.0 ·Source§

implClone forBox<CStr>

Source§

fnclone(&self) ->Box<CStr>

Returns a duplicate of the value.Read more
1.0.0 ·Source§

fnclone_from(&mut self, source: &Self)

Performs copy-assignment fromsource.Read more
1.29.0 ·Source§

implClone forBox<OsStr>

Source§

fnclone(&self) -> Self

Returns a duplicate of the value.Read more
1.0.0 ·Source§

fnclone_from(&mut self, source: &Self)

Performs copy-assignment fromsource.Read more
1.29.0 ·Source§

implClone forBox<Path>

Source§

fnclone(&self) -> Self

Returns a duplicate of the value.Read more
1.0.0 ·Source§

fnclone_from(&mut self, source: &Self)

Performs copy-assignment fromsource.Read more
1.0.0 ·Source§

impl<T, A>Clone forBox<T, A>
where T:Clone, A:Allocator +Clone,

Source§

fnclone(&self) ->Box<T, A>

Returns a new box with aclone() of this box’s contents.

§Examples
letx = Box::new(5);lety = x.clone();// The value is the sameassert_eq!(x, y);// But they are unique objectsassert_ne!(&*xas*consti32,&*yas*consti32);
Source§

fnclone_from(&mut self, source: &Box<T, A>)

Copiessource’s contents intoself without creating a new allocation.

§Examples
letx = Box::new(5);letmuty = Box::new(10);letyp:*consti32 =&*y;y.clone_from(&x);// The value is the sameassert_eq!(x, y);// And no allocation occurredassert_eq!(yp,&*y);
1.3.0 ·Source§

implClone forBox<str>

Source§

fnclone(&self) ->Box<str>

Returns a duplicate of the value.Read more
1.0.0 ·Source§

fnclone_from(&mut self, source: &Self)

Performs copy-assignment fromsource.Read more
Source§

impl<G, R, A>Coroutine<R> forBox<G, A>
where G:Coroutine<R> +Unpin + ?Sized, A:Allocator,

Source§

typeYield = <G asCoroutine<R>>::Yield

🔬This is a nightly-only experimental API. (coroutine_trait #43122)
The type of value this coroutine yields.Read more
Source§

typeReturn = <G asCoroutine<R>>::Return

🔬This is a nightly-only experimental API. (coroutine_trait #43122)
The type of value this coroutine returns.Read more
Source§

fnresume( self:Pin<&mutBox<G, A>>, arg: R,) ->CoroutineState<<Box<G, A> asCoroutine<R>>::Yield, <Box<G, A> asCoroutine<R>>::Return>

🔬This is a nightly-only experimental API. (coroutine_trait #43122)
Resumes the execution of this coroutine.Read more
Source§

impl<G, R, A>Coroutine<R> forPin<Box<G, A>>
where G:Coroutine<R> + ?Sized, A:Allocator + 'static,

Source§

typeYield = <G asCoroutine<R>>::Yield

🔬This is a nightly-only experimental API. (coroutine_trait #43122)
The type of value this coroutine yields.Read more
Source§

typeReturn = <G asCoroutine<R>>::Return

🔬This is a nightly-only experimental API. (coroutine_trait #43122)
The type of value this coroutine returns.Read more
Source§

fnresume( self:Pin<&mutPin<Box<G, A>>>, arg: R,) ->CoroutineState<<Pin<Box<G, A>> asCoroutine<R>>::Yield, <Pin<Box<G, A>> asCoroutine<R>>::Return>

🔬This is a nightly-only experimental API. (coroutine_trait #43122)
Resumes the execution of this coroutine.Read more
1.0.0 ·Source§

impl<T, A>Debug forBox<T, A>
where T:Debug + ?Sized, A:Allocator,

Source§

fnfmt(&self, f: &mutFormatter<'_>) ->Result<(),Error>

Formats the value using the given formatter.Read more
1.0.0 ·Source§

impl<T>Default forBox<[T]>

Source§

fndefault() ->Box<[T]>

Creates an empty[T] inside aBox.

1.17.0 ·Source§

implDefault forBox<CStr>

Source§

fndefault() ->Box<CStr>

Returns the “default value” for a type.Read more
1.17.0 ·Source§

implDefault forBox<OsStr>

Source§

fndefault() ->Box<OsStr>

Returns the “default value” for a type.Read more
1.0.0 ·Source§

impl<T>Default forBox<T>
where T:Default,

Source§

fndefault() ->Box<T>

Creates aBox<T>, with theDefault value forT.

1.17.0 ·Source§

implDefault forBox<str>

Source§

fndefault() ->Box<str>

Returns the “default value” for a type.Read more
1.91.0 ·Source§

impl<T>Default forPin<Box<T>>
whereBox<T>:Default, T: ?Sized,

Source§

fndefault() ->Pin<Box<T>>

Returns the “default value” for a type.Read more
1.0.0 ·Source§

impl<T, A>Deref forBox<T, A>
where A:Allocator, T: ?Sized,

Source§

typeTarget = T

The resulting type after dereferencing.
Source§

fnderef(&self) ->&T

Dereferences the value.
1.0.0 ·Source§

impl<T, A>DerefMut forBox<T, A>
where A:Allocator, T: ?Sized,

Source§

fnderef_mut(&mut self) ->&mut T

Mutably dereferences the value.
1.0.0 ·Source§

impl<T, A>Display forBox<T, A>
where T:Display + ?Sized, A:Allocator,

Source§

fnfmt(&self, f: &mutFormatter<'_>) ->Result<(),Error>

Formats the value using the given formatter.Read more
1.0.0 ·Source§

impl<I, A>DoubleEndedIterator forBox<I, A>

Source§

fnnext_back(&mut self) ->Option<<I asIterator>::Item>

Removes and returns an element from the end of the iterator.Read more
Source§

fnnth_back(&mut self, n:usize) ->Option<<I asIterator>::Item>

Returns thenth element from the end of the iterator.Read more
Source§

fnadvance_back_by(&mut self, n:usize) ->Result<(),NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by #77404)
Advances the iterator from the back byn elements.Read more
1.27.0 ·Source§

fntry_rfold<B, F, R>(&mut self, init: B, f: F) -> R
where Self:Sized, F:FnMut(B, Self::Item) -> R, R:Try<Output = B>,

This is the reverse version ofIterator::try_fold(): it takeselements starting from the back of the iterator.Read more
1.27.0 ·Source§

fnrfold<B, F>(self, init: B, f: F) -> B
where Self:Sized, F:FnMut(B, Self::Item) -> B,

An iterator method that reduces the iterator’s elements to a single,final value, starting from the back.Read more
1.27.0 ·Source§

fnrfind<P>(&mut self, predicate: P) ->Option<Self::Item>
where Self:Sized, P:FnMut(&Self::Item) ->bool,

Searches for an element of an iterator from the back that satisfies a predicate.Read more
1.0.0 ·Source§

impl<T, A>Drop forBox<T, A>
where A:Allocator, T: ?Sized,

Source§

fndrop(&mut self)

Executes the destructor for this type.Read more
1.8.0 ·Source§

impl<E>Error forBox<E>
where E:Error,

Source§

fncause(&self) ->Option<&dynError>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fnsource(&self) ->Option<&(dynError + 'static)>

Returns the lower-level source of this error, if any.Read more
Source§

fnprovide<'b>(&'b self, request: &mutRequest<'b>)

🔬This is a nightly-only experimental API. (error_generic_member_access #99301)
Provides type-based access to context intended for error reports.Read more
1.0.0 ·Source§

fndescription(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 ·Source§

impl<I, A>ExactSizeIterator forBox<I, A>

Source§

fnlen(&self) ->usize

Returns the exact remaining length of the iterator.Read more
Source§

fnis_empty(&self) ->bool

🔬This is a nightly-only experimental API. (exact_size_is_empty #35428)
Returnstrue if the iterator is empty.Read more
1.45.0 ·Source§

impl<A>Extend<Box<str, A>> forString
where A:Allocator,

Source§

fnextend<I>(&mut self, iter: I)
where I:IntoIterator<Item =Box<str, A>>,

Extends a collection with the contents of an iterator.Read more
Source§

fnextend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one #72631)
Extends a collection with exactly one element.
Source§

fnextend_reserve(&mut self, additional:usize)

🔬This is a nightly-only experimental API. (extend_one #72631)
Reserves capacity in a collection for the given number of additional elements.Read more
1.35.0 ·Source§

impl<Args, F, A>Fn<Args> forBox<F, A>
where Args:Tuple, F:Fn<Args> + ?Sized, A:Allocator,

Source§

extern "rust-call" fncall( &self, args: Args,) -> <Box<F, A> asFnOnce<Args>>::Output

🔬This is a nightly-only experimental API. (fn_traits #29625)
Performs the call operation.
1.35.0 ·Source§

impl<Args, F, A>FnMut<Args> forBox<F, A>
where Args:Tuple, F:FnMut<Args> + ?Sized, A:Allocator,

Source§

extern "rust-call" fncall_mut( &mut self, args: Args,) -> <Box<F, A> asFnOnce<Args>>::Output

🔬This is a nightly-only experimental API. (fn_traits #29625)
Performs the call operation.
1.35.0 ·Source§

impl<Args, F, A>FnOnce<Args> forBox<F, A>
where Args:Tuple, F:FnOnce<Args> + ?Sized, A:Allocator,

Source§

typeOutput = <F asFnOnce<Args>>::Output

The returned type after the call operator is used.
Source§

extern "rust-call" fncall_once( self, args: Args,) -> <Box<F, A> asFnOnce<Args>>::Output

🔬This is a nightly-only experimental API. (fn_traits #29625)
Performs the call operation.
1.17.0 ·Source§

impl<T>From<&[T]> forBox<[T]>
where T:Clone,

Source§

fnfrom(slice: &[T]) ->Box<[T]>

Converts a&[T] into aBox<[T]>

This conversion allocates on the heapand performs a copy ofslice and its contents.

§Examples
// create a &[u8] which will be used to create a Box<[u8]>letslice:&[u8] =&[104,101,108,108,111];letboxed_slice: Box<[u8]> = Box::from(slice);println!("{boxed_slice:?}");
1.17.0 ·Source§

implFrom<&CStr> forBox<CStr>

Source§

fnfrom(s: &CStr) ->Box<CStr>

Converts a&CStr into aBox<CStr>,by copying the contents into a newly allocatedBox.

1.17.0 ·Source§

implFrom<&OsStr> forBox<OsStr>

Source§

fnfrom(s: &OsStr) ->Box<OsStr>

Copies the string into a newly allocatedBox<OsStr>.

1.17.0 ·Source§

implFrom<&Path> forBox<Path>

Source§

fnfrom(path: &Path) ->Box<Path>

Creates a boxedPath from a reference.

This will allocate and clonepath to it.

1.84.0 ·Source§

impl<T>From<&mut[T]> forBox<[T]>
where T:Clone,

Source§

fnfrom(slice: &mut[T]) ->Box<[T]>

Converts a&mut [T] into aBox<[T]>

This conversion allocates on the heapand performs a copy ofslice and its contents.

§Examples
// create a &mut [u8] which will be used to create a Box<[u8]>letmutarray = [104,101,108,108,111];letslice:&mut[u8] =&mutarray;letboxed_slice: Box<[u8]> = Box::from(slice);println!("{boxed_slice:?}");
1.84.0 ·Source§

implFrom<&mutCStr> forBox<CStr>

Source§

fnfrom(s: &mutCStr) ->Box<CStr>

Converts a&mut CStr into aBox<CStr>,by copying the contents into a newly allocatedBox.

1.84.0 ·Source§

implFrom<&mutOsStr> forBox<OsStr>

Source§

fnfrom(s: &mutOsStr) ->Box<OsStr>

Copies the string into a newly allocatedBox<OsStr>.

1.84.0 ·Source§

implFrom<&mutPath> forBox<Path>

Source§

fnfrom(path: &mutPath) ->Box<Path>

Creates a boxedPath from a reference.

This will allocate and clonepath to it.

1.84.0 ·Source§

implFrom<&mutstr> forBox<str>

Source§

fnfrom(s: &mutstr) ->Box<str>

Converts a&mut str into aBox<str>

This conversion allocates on the heapand performs a copy ofs.

§Examples
letmutoriginal = String::from("hello");letoriginal:&mutstr =&mutoriginal;letboxed: Box<str> = Box::from(original);println!("{boxed}");
1.6.0 ·Source§

impl<'a>From<&str> forBox<dynError + 'a>

Source§

fnfrom(err: &str) ->Box<dynError + 'a>

Converts astr into a box of dynError.

§Examples
usestd::error::Error;leta_str_error ="a str error";leta_boxed_error = Box::<dynError>::from(a_str_error);assert!(size_of::<Box<dynError>>() == size_of_val(&a_boxed_error))
1.0.0 ·Source§

impl<'a>From<&str> forBox<dynError +Send +Sync + 'a>

Source§

fnfrom(err: &str) ->Box<dynError +Send +Sync + 'a>

Converts astr into a box of dynError +Send +Sync.

§Examples
usestd::error::Error;leta_str_error ="a str error";leta_boxed_error = Box::<dynError + Send + Sync>::from(a_str_error);assert!(    size_of::<Box<dynError + Send + Sync>>() == size_of_val(&a_boxed_error))
1.17.0 ·Source§

implFrom<&str> forBox<str>

Source§

fnfrom(s: &str) ->Box<str>

Converts a&str into aBox<str>

This conversion allocates on the heapand performs a copy ofs.

§Examples
letboxed: Box<str> = Box::from("hello");println!("{boxed}");
1.45.0 ·Source§

impl<T, const N:usize>From<[T; N]> forBox<[T]>

Source§

fnfrom(array:[T; N]) ->Box<[T]>

Converts a[T; N] into aBox<[T]>

This conversion moves the array to newly heap-allocated memory.

§Examples
letboxed: Box<[u8]> = Box::from([4,2]);println!("{boxed:?}");
1.18.0 ·Source§

impl<T, A>From<Box<[T], A>> forVec<T, A>
where A:Allocator,

Source§

fnfrom(s:Box<[T], A>) ->Vec<T, A>

Converts a boxed slice into a vector by transferring ownership ofthe existing heap allocation.

§Examples
letb: Box<[i32]> =vec![1,2,3].into_boxed_slice();assert_eq!(Vec::from(b),vec![1,2,3]);
Source§

implFrom<Box<[u8]>> forBox<ByteStr>

Source§

fnfrom(s:Box<[u8]>) ->Box<ByteStr>

Converts to this type from the input type.
Source§

implFrom<Box<ByteStr>> forBox<[u8]>

Source§

fnfrom(s:Box<ByteStr>) ->Box<[u8]>

Converts to this type from the input type.
1.18.0 ·Source§

implFrom<Box<CStr>> forCString

Source§

fnfrom(s:Box<CStr>) ->CString

Converts aBox<CStr> into aCString without copying or allocating.

1.18.0 ·Source§

implFrom<Box<OsStr>> forOsString

Source§

fnfrom(boxed:Box<OsStr>) ->OsString

Converts aBox<OsStr> into anOsString without copying orallocating.

1.18.0 ·Source§

implFrom<Box<Path>> forPathBuf

Source§

fnfrom(boxed:Box<Path>) ->PathBuf

Converts aBox<Path> into aPathBuf.

This conversion does not allocate or copy memory.

1.21.0 ·Source§

impl<T, A>From<Box<T, A>> forArc<T, A>
where A:Allocator, T: ?Sized,

Source§

fnfrom(v:Box<T, A>) ->Arc<T, A>

Move a boxed object to a new, reference-counted allocation.

§Example
letunique: Box<str> = Box::from("eggplant");letshared: Arc<str> = Arc::from(unique);assert_eq!("eggplant",&shared[..]);
1.33.0 ·Source§

impl<T, A>From<Box<T, A>> forPin<Box<T, A>>
where A:Allocator + 'static, T: ?Sized,

Source§

fnfrom(boxed:Box<T, A>) ->Pin<Box<T, A>>

Converts aBox<T> into aPin<Box<T>>. IfT does not implementUnpin, then*boxed will be pinned in memory and unable to be moved.

This conversion does not allocate on the heap and happens in place.

This is also available viaBox::into_pin.

Constructing and pinning aBox with<Pin<Box<T>>>::from(Box::new(x))can also be written more concisely usingBox::pin(x).ThisFrom implementation is useful if you already have aBox<T>, or you areconstructing a (pinned)Box in a different way than withBox::new.

1.21.0 ·Source§

impl<T, A>From<Box<T, A>> forRc<T, A>
where A:Allocator, T: ?Sized,

Source§

fnfrom(v:Box<T, A>) ->Rc<T, A>

Move a boxed object to a new, reference counted, allocation.

§Example
letoriginal: Box<i32> = Box::new(1);letshared: Rc<i32> = Rc::from(original);assert_eq!(1,*shared);
1.18.0 ·Source§

implFrom<Box<str>> forString

Source§

fnfrom(s:Box<str>) ->String

Converts the given boxedstr slice to aString.It is notable that thestr slice is owned.

§Examples
lets1: String = String::from("hello world");lets2: Box<str> = s1.into_boxed_str();lets3: String = String::from(s2);assert_eq!("hello world", s3)
1.19.0 ·Source§

impl<A>From<Box<str, A>> forBox<[u8], A>
where A:Allocator,

Source§

fnfrom(s:Box<str, A>) ->Box<[u8], A>

Converts aBox<str> into aBox<[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]>letboxed: Box<str> = Box::from("hello");letboxed_str: Box<[u8]> = Box::from(boxed);// create a &[u8] which will be used to create a Box<[u8]>letslice:&[u8] =&[104,101,108,108,111];letboxed_slice = Box::from(slice);assert_eq!(boxed_slice, boxed_str);
1.20.0 ·Source§

implFrom<CString> forBox<CStr>

Source§

fnfrom(s:CString) ->Box<CStr>

Converts aCString into aBox<CStr> without copying or allocating.

1.45.0 ·Source§

impl<T>From<Cow<'_,[T]>> forBox<[T]>
where T:Clone,

Source§

fnfrom(cow:Cow<'_,[T]>) ->Box<[T]>

Converts aCow<'_, [T]> into aBox<[T]>

Whencow is theCow::Borrowed variant, thisconversion allocates on the heap and copies theunderlying slice. Otherwise, it will try to reuse the ownedVec’s allocation.

1.45.0 ·Source§

implFrom<Cow<'_,CStr>> forBox<CStr>

Source§

fnfrom(cow:Cow<'_,CStr>) ->Box<CStr>

Converts aCow<'a, CStr> into aBox<CStr>,by copying the contents if they are borrowed.

1.45.0 ·Source§

implFrom<Cow<'_,OsStr>> forBox<OsStr>

Source§

fnfrom(cow:Cow<'_,OsStr>) ->Box<OsStr>

Converts aCow<'a, OsStr> into aBox<OsStr>,by copying the contents if they are borrowed.

1.45.0 ·Source§

implFrom<Cow<'_,Path>> forBox<Path>

Source§

fnfrom(cow:Cow<'_,Path>) ->Box<Path>

Creates a boxedPath from a clone-on-write pointer.

Converting from aCow::Owned does not clone or allocate.

1.45.0 ·Source§

implFrom<Cow<'_,str>> forBox<str>

Source§

fnfrom(cow:Cow<'_,str>) ->Box<str>

Converts aCow<'_, str> into aBox<str>

Whencow is theCow::Borrowed variant, thisconversion allocates on the heap and copies theunderlyingstr. Otherwise, it will try to reuse the ownedString’s allocation.

§Examples
usestd::borrow::Cow;letunboxed = Cow::Borrowed("hello");letboxed: Box<str> = Box::from(unboxed);println!("{boxed}");
letunboxed = Cow::Owned("hello".to_string());letboxed: Box<str> = Box::from(unboxed);println!("{boxed}");
1.22.0 ·Source§

impl<'a, 'b>From<Cow<'b,str>> forBox<dynError + 'a>

Source§

fnfrom(err:Cow<'b,str>) ->Box<dynError + 'a>

Converts aCow into a box of dynError.

§Examples
usestd::error::Error;usestd::borrow::Cow;leta_cow_str_error = Cow::from("a str error");leta_boxed_error = Box::<dynError>::from(a_cow_str_error);assert!(size_of::<Box<dynError>>() == size_of_val(&a_boxed_error))
1.22.0 ·Source§

impl<'a, 'b>From<Cow<'b,str>> forBox<dynError +Send +Sync + 'a>

Source§

fnfrom(err:Cow<'b,str>) ->Box<dynError +Send +Sync + 'a>

Converts aCow into a box of dynError +Send +Sync.

§Examples
usestd::error::Error;usestd::borrow::Cow;leta_cow_str_error = Cow::from("a str error");leta_boxed_error = Box::<dynError + Send + Sync>::from(a_cow_str_error);assert!(    size_of::<Box<dynError + Send + Sync>>() == size_of_val(&a_boxed_error))
1.0.0 ·Source§

impl<'a, E>From<E> forBox<dynError + 'a>
where E:Error + 'a,

Source§

fnfrom(err: E) ->Box<dynError + 'a>

Converts a type ofError into a box of dynError.

§Examples
usestd::error::Error;usestd::fmt;#[derive(Debug)]structAnError;implfmt::DisplayforAnError {fnfmt(&self, f:&mutfmt::Formatter<'_>) -> fmt::Result {write!(f,"An error")    }}implErrorforAnError {}letan_error = AnError;assert!(0== size_of_val(&an_error));leta_boxed_error = Box::<dynError>::from(an_error);assert!(size_of::<Box<dynError>>() == size_of_val(&a_boxed_error))
1.0.0 ·Source§

impl<'a, E>From<E> forBox<dynError +Send +Sync + 'a>
where E:Error +Send +Sync + 'a,

Source§

fnfrom(err: E) ->Box<dynError +Send +Sync + 'a>

Converts a type ofError +Send +Sync into a box ofdynError +Send +Sync.

§Examples
usestd::error::Error;usestd::fmt;#[derive(Debug)]structAnError;implfmt::DisplayforAnError {fnfmt(&self, f:&mutfmt::Formatter<'_>) -> fmt::Result {write!(f,"An error")    }}implErrorforAnError {}unsafe implSendforAnError {}unsafe implSyncforAnError {}letan_error = AnError;assert!(0== size_of_val(&an_error));leta_boxed_error = Box::<dynError + Send + Sync>::from(an_error);assert!(    size_of::<Box<dynError + Send + Sync>>() == size_of_val(&a_boxed_error))
1.20.0 ·Source§

implFrom<OsString> forBox<OsStr>

Source§

fnfrom(s:OsString) ->Box<OsStr>

Converts anOsString into aBox<OsStr> without copying or allocating.

1.20.0 ·Source§

implFrom<PathBuf> forBox<Path>

Source§

fnfrom(p:PathBuf) ->Box<Path>

Converts aPathBuf into aBox<Path>.

This conversion currently should not allocate memory,but this behavior is not guaranteed on all platforms or in all future versions.

1.6.0 ·Source§

impl<'a>From<String> forBox<dynError + 'a>

Source§

fnfrom(str_err:String) ->Box<dynError + 'a>

Converts aString into a box of dynError.

§Examples
usestd::error::Error;leta_string_error ="a string error".to_string();leta_boxed_error = Box::<dynError>::from(a_string_error);assert!(size_of::<Box<dynError>>() == size_of_val(&a_boxed_error))
1.0.0 ·Source§

impl<'a>From<String> forBox<dynError +Send +Sync + 'a>

Source§

fnfrom(err:String) ->Box<dynError +Send +Sync + 'a>

Converts aString into a box of dynError +Send +Sync.

§Examples
usestd::error::Error;leta_string_error ="a string error".to_string();leta_boxed_error = Box::<dynError + Send + Sync>::from(a_string_error);assert!(    size_of::<Box<dynError + Send + Sync>>() == size_of_val(&a_boxed_error))
1.20.0 ·Source§

implFrom<String> forBox<str>

Source§

fnfrom(s:String) ->Box<str>

Converts the givenString to a boxedstr slice that is owned.

§Examples
lets1: String = String::from("hello world");lets2: Box<str> = Box::from(s1);lets3: String = String::from(s2);assert_eq!("hello world", s3)
1.6.0 ·Source§

impl<T>From<T> forBox<T>

Source§

fnfrom(t: T) ->Box<T>

Converts aT into aBox<T>

The conversion allocates on the heap and movestfrom the stack into it.

§Examples
letx =5;letboxed = Box::new(5);assert_eq!(Box::from(x), boxed);
1.20.0 ·Source§

impl<T, A>From<Vec<T, A>> forBox<[T], A>
where A:Allocator,

Source§

fnfrom(v:Vec<T, A>) ->Box<[T], A>

Converts a vector into a boxed slice.

Before doing the conversion, this method discards excess capacity likeVec::shrink_to_fit.

§Examples
assert_eq!(Box::from(vec![1,2,3]),vec![1,2,3].into_boxed_slice());

Any excess capacity is removed:

letmutvec = Vec::with_capacity(10);vec.extend([1,2,3]);assert_eq!(Box::from(vec),vec![1,2,3].into_boxed_slice());
1.80.0 ·Source§

impl<'a>FromIterator<&'achar> forBox<str>

Source§

fnfrom_iter<T>(iter: T) ->Box<str>
where T:IntoIterator<Item = &'achar>,

Creates a value from an iterator.Read more
1.80.0 ·Source§

impl<'a>FromIterator<&'astr> forBox<str>

Source§

fnfrom_iter<T>(iter: T) ->Box<str>
where T:IntoIterator<Item = &'astr>,

Creates a value from an iterator.Read more
1.80.0 ·Source§

impl<A>FromIterator<Box<str, A>> forBox<str>
where A:Allocator,

Source§

fnfrom_iter<T>(iter: T) ->Box<str>
where T:IntoIterator<Item =Box<str, A>>,

Creates a value from an iterator.Read more
1.45.0 ·Source§

impl<A>FromIterator<Box<str, A>> forString
where A:Allocator,

Source§

fnfrom_iter<I>(iter: I) ->String
where I:IntoIterator<Item =Box<str, A>>,

Creates a value from an iterator.Read more
1.80.0 ·Source§

impl<'a>FromIterator<Cow<'a,str>> forBox<str>

Source§

fnfrom_iter<T>(iter: T) ->Box<str>
where T:IntoIterator<Item =Cow<'a,str>>,

Creates a value from an iterator.Read more
1.32.0 ·Source§

impl<I>FromIterator<I> forBox<[I]>

Source§

fnfrom_iter<T>(iter: T) ->Box<[I]>
where T:IntoIterator<Item = I>,

Creates a value from an iterator.Read more
1.80.0 ·Source§

implFromIterator<String> forBox<str>

Source§

fnfrom_iter<T>(iter: T) ->Box<str>
where T:IntoIterator<Item =String>,

Creates a value from an iterator.Read more
1.80.0 ·Source§

implFromIterator<char> forBox<str>

Source§

fnfrom_iter<T>(iter: T) ->Box<str>
where T:IntoIterator<Item =char>,

Creates a value from an iterator.Read more
1.36.0 ·Source§

impl<F, A>Future forBox<F, A>
where F:Future +Unpin + ?Sized, A:Allocator,

Source§

typeOutput = <F asFuture>::Output

The type of value produced on completion.
Source§

fnpoll( self:Pin<&mutBox<F, A>>, cx: &mutContext<'_>,) ->Poll<<Box<F, A> asFuture>::Output>

Attempts to resolve the future to a final value, registeringthe current task for wakeup if the value is not yet available.Read more
1.0.0 ·Source§

impl<T, A>Hash forBox<T, A>
where T:Hash + ?Sized, A:Allocator,

Source§

fnhash<H>(&self, state:&mut H)
where H:Hasher,

Feeds this value into the givenHasher.Read more
1.3.0 ·Source§

fnhash_slice<H>(data: &[Self], state:&mut H)
where H:Hasher, Self:Sized,

Feeds a slice of this type into the givenHasher.Read more
1.22.0 ·Source§

impl<T, A>Hasher forBox<T, A>
where T:Hasher + ?Sized, A:Allocator,

Source§

fnfinish(&self) ->u64

Returns the hash value for the values written so far.Read more
Source§

fnwrite(&mut self, bytes: &[u8])

Writes some data into thisHasher.Read more
Source§

fnwrite_u8(&mut self, i:u8)

Writes a singleu8 into this hasher.
Source§

fnwrite_u16(&mut self, i:u16)

Writes a singleu16 into this hasher.
Source§

fnwrite_u32(&mut self, i:u32)

Writes a singleu32 into this hasher.
Source§

fnwrite_u64(&mut self, i:u64)

Writes a singleu64 into this hasher.
Source§

fnwrite_u128(&mut self, i:u128)

Writes a singleu128 into this hasher.
Source§

fnwrite_usize(&mut self, i:usize)

Writes a singleusize into this hasher.
Source§

fnwrite_i8(&mut self, i:i8)

Writes a singlei8 into this hasher.
Source§

fnwrite_i16(&mut self, i:i16)

Writes a singlei16 into this hasher.
Source§

fnwrite_i32(&mut self, i:i32)

Writes a singlei32 into this hasher.
Source§

fnwrite_i64(&mut self, i:i64)

Writes a singlei64 into this hasher.
Source§

fnwrite_i128(&mut self, i:i128)

Writes a singlei128 into this hasher.
Source§

fnwrite_isize(&mut self, i:isize)

Writes a singleisize into this hasher.
Source§

fnwrite_length_prefix(&mut self, len:usize)

🔬This is a nightly-only experimental API. (hasher_prefixfree_extras #96762)
Writes a length prefix into this hasher, as part of being prefix-free.Read more
Source§

fnwrite_str(&mut self, s: &str)

🔬This is a nightly-only experimental API. (hasher_prefixfree_extras #96762)
Writes a singlestr into this hasher.Read more
1.80.0 ·Source§

impl<'a, I, A>IntoIterator for &'aBox<[I], A>
where A:Allocator,

Source§

typeIntoIter =Iter<'a, I>

Which kind of iterator are we turning this into?
Source§

typeItem =&'a I

The type of the elements being iterated over.
Source§

fninto_iter(self) ->Iter<'a, I>

Creates an iterator from a value.Read more
1.80.0 ·Source§

impl<'a, I, A>IntoIterator for &'a mutBox<[I], A>
where A:Allocator,

Source§

typeIntoIter =IterMut<'a, I>

Which kind of iterator are we turning this into?
Source§

typeItem =&'a mut I

The type of the elements being iterated over.
Source§

fninto_iter(self) ->IterMut<'a, I>

Creates an iterator from a value.Read more
1.80.0 ·Source§

impl<I, A>IntoIterator forBox<[I], A>
where A:Allocator,

Source§

typeIntoIter =IntoIter<I, A>

Which kind of iterator are we turning this into?
Source§

typeItem = I

The type of the elements being iterated over.
Source§

fninto_iter(self) ->IntoIter<I, A>

Creates an iterator from a value.Read more
1.0.0 ·Source§

impl<I, A>Iterator forBox<I, A>
where I:Iterator + ?Sized, A:Allocator,

Source§

typeItem = <I asIterator>::Item

The type of the elements being iterated over.
Source§

fnnext(&mut self) ->Option<<I asIterator>::Item>

Advances the iterator and returns the next value.Read more
Source§

fnsize_hint(&self) -> (usize,Option<usize>)

Returns the bounds on the remaining length of the iterator.Read more
Source§

fnnth(&mut self, n:usize) ->Option<<I asIterator>::Item>

Returns thenth element of the iterator.Read more
Source§

fnlast(self) ->Option<<I asIterator>::Item>

Consumes the iterator, returning the last element.Read more
Source§

fnnext_chunk<const N:usize>( &mut self,) ->Result<[Self::Item;N],IntoIter<Self::Item, N>>
where Self:Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk #98326)
Advances the iterator and returns an array containing the nextN values.Read more
1.0.0 ·Source§

fncount(self) ->usize
where Self:Sized,

Consumes the iterator, counting the number of iterations and returning it.Read more
Source§

fnadvance_by(&mut self, n:usize) ->Result<(),NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by #77404)
Advances the iterator byn elements.Read more
1.28.0 ·Source§

fnstep_by(self, step:usize) ->StepBy<Self>
where Self:Sized,

Creates an iterator starting at the same point, but stepping bythe given amount at each iteration.Read more
1.0.0 ·Source§

fnchain<U>(self, other: U) ->Chain<Self, <U asIntoIterator>::IntoIter>
where Self:Sized, U:IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence.Read more
1.0.0 ·Source§

fnzip<U>(self, other: U) ->Zip<Self, <U asIntoIterator>::IntoIter>
where Self:Sized, U:IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs.Read more
Source§

fnintersperse(self, separator: Self::Item) ->Intersperse<Self>
where Self:Sized, Self::Item:Clone,

🔬This is a nightly-only experimental API. (iter_intersperse #79524)
Creates a new iterator which places a copy ofseparator between adjacentitems of the original iterator.Read more
Source§

fnintersperse_with<G>(self, separator: G) ->IntersperseWith<Self, G>
where Self:Sized, G:FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse #79524)
Creates a new iterator which places an item generated byseparatorbetween adjacent items of the original iterator.Read more
1.0.0 ·Source§

fnmap<B, F>(self, f: F) ->Map<Self, F>
where Self:Sized, F:FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on eachelement.Read more
1.21.0 ·Source§

fnfor_each<F>(self, f: F)
where Self:Sized, F:FnMut(Self::Item),

Calls a closure on each element of an iterator.Read more
1.0.0 ·Source§

fnfilter<P>(self, predicate: P) ->Filter<Self, P>
where Self:Sized, P:FnMut(&Self::Item) ->bool,

Creates an iterator which uses a closure to determine if an elementshould be yielded.Read more
1.0.0 ·Source§

fnfilter_map<B, F>(self, f: F) ->FilterMap<Self, F>
where Self:Sized, F:FnMut(Self::Item) ->Option<B>,

Creates an iterator that both filters and maps.Read more
1.0.0 ·Source§

fnenumerate(self) ->Enumerate<Self>
where Self:Sized,

Creates an iterator which gives the current iteration count as well asthe next value.Read more
1.0.0 ·Source§

fnpeekable(self) ->Peekable<Self>
where Self:Sized,

Creates an iterator which can use thepeek andpeek_mut methodsto look at the next element of the iterator without consuming it. Seetheir documentation for more information.Read more
1.0.0 ·Source§

fnskip_while<P>(self, predicate: P) ->SkipWhile<Self, P>
where Self:Sized, P:FnMut(&Self::Item) ->bool,

Creates an iterator thatskips elements based on a predicate.Read more
1.0.0 ·Source§

fntake_while<P>(self, predicate: P) ->TakeWhile<Self, P>
where Self:Sized, P:FnMut(&Self::Item) ->bool,

Creates an iterator that yields elements based on a predicate.Read more
1.57.0 ·Source§

fnmap_while<B, P>(self, predicate: P) ->MapWhile<Self, P>
where Self:Sized, P:FnMut(Self::Item) ->Option<B>,

Creates an iterator that both yields elements based on a predicate and maps.Read more
1.0.0 ·Source§

fnskip(self, n:usize) ->Skip<Self>
where Self:Sized,

Creates an iterator that skips the firstn elements.Read more
1.0.0 ·Source§

fntake(self, n:usize) ->Take<Self>
where Self:Sized,

Creates an iterator that yields the firstn elements, or fewerif the underlying iterator ends sooner.Read more
1.0.0 ·Source§

fnscan<St, B, F>(self, initial_state: St, f: F) ->Scan<Self, St, F>
where Self:Sized, F:FnMut(&mut St, Self::Item) ->Option<B>,

An iterator adapter which, likefold, holds internal state, butunlikefold, produces a new iterator.Read more
1.0.0 ·Source§

fnflat_map<U, F>(self, f: F) ->FlatMap<Self, U, F>
where Self:Sized, U:IntoIterator, F:FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure.Read more
1.29.0 ·Source§

fnflatten(self) ->Flatten<Self>
where Self:Sized, Self::Item:IntoIterator,

Creates an iterator that flattens nested structure.Read more
Source§

fnmap_windows<F, R, const N:usize>(self, f: F) ->MapWindows<Self, F, N>
where Self:Sized, F:FnMut(&[Self::Item;N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows #87155)
Calls the given functionf for each contiguous window of sizeN overself and returns an iterator over the outputs off. Likeslice::windows(),the windows during mapping overlap as well.Read more
1.0.0 ·Source§

fnfuse(self) ->Fuse<Self>
where Self:Sized,

Creates an iterator which ends after the firstNone.Read more
1.0.0 ·Source§

fninspect<F>(self, f: F) ->Inspect<Self, F>
where Self:Sized, F:FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on.Read more
1.0.0 ·Source§

fnby_ref(&mut self) -> &mut Self
where Self:Sized,

Creates a “by reference” adapter for this instance ofIterator.Read more
1.0.0 ·Source§

fncollect<B>(self) -> B
where B:FromIterator<Self::Item>, Self:Sized,

Transforms an iterator into a collection.Read more
Source§

fntry_collect<B>( &mut self,) -> <<Self::Item asTry>::Residual asResidual<B>>::TryType
where Self:Sized, Self::Item:Try, <Self::Item asTry>::Residual:Residual<B>, B:FromIterator<<Self::Item asTry>::Output>,

🔬This is a nightly-only experimental API. (iterator_try_collect #94047)
Fallibly transforms an iterator into a collection, short circuiting ifa failure is encountered.Read more
Source§

fncollect_into<E>(self, collection:&mut E) ->&mut E
where E:Extend<Self::Item>, Self:Sized,

🔬This is a nightly-only experimental API. (iter_collect_into #94780)
Collects all the items from an iterator into a collection.Read more
1.0.0 ·Source§

fnpartition<B, F>(self, f: F) ->(B, B)
where Self:Sized, B:Default +Extend<Self::Item>, F:FnMut(&Self::Item) ->bool,

Consumes an iterator, creating two collections from it.Read more
Source§

fnpartition_in_place<'a, T, P>(self, predicate: P) ->usize
where T: 'a, Self:Sized +DoubleEndedIterator<Item =&'a mut T>, P:FnMut(&T) ->bool,

🔬This is a nightly-only experimental API. (iter_partition_in_place #62543)
Reorders the elements of this iteratorin-place according to the given predicate,such that all those that returntrue precede all those that returnfalse.Returns the number oftrue elements found.Read more
Source§

fnis_partitioned<P>(self, predicate: P) ->bool
where Self:Sized, P:FnMut(Self::Item) ->bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned #62544)
Checks if the elements of this iterator are partitioned according to the given predicate,such that all those that returntrue precede all those that returnfalse.Read more
1.27.0 ·Source§

fntry_fold<B, F, R>(&mut self, init: B, f: F) -> R
where Self:Sized, F:FnMut(B, Self::Item) -> R, R:Try<Output = B>,

An iterator method that applies a function as long as it returnssuccessfully, producing a single, final value.Read more
1.27.0 ·Source§

fntry_for_each<F, R>(&mut self, f: F) -> R
where Self:Sized, F:FnMut(Self::Item) -> R, R:Try<Output =()>,

An iterator method that applies a fallible function to each item in theiterator, stopping at the first error and returning that error.Read more
1.0.0 ·Source§

fnfold<B, F>(self, init: B, f: F) -> B
where Self:Sized, F:FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation,returning the final result.Read more
1.51.0 ·Source§

fnreduce<F>(self, f: F) ->Option<Self::Item>
where Self:Sized, F:FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducingoperation.Read more
Source§

fntry_reduce<R>( &mut self, f: implFnMut(Self::Item, Self::Item) -> R,) -> <<R asTry>::Residual asResidual<Option<<R asTry>::Output>>>::TryType
where Self:Sized, R:Try<Output = Self::Item>, <R asTry>::Residual:Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce #87053)
Reduces the elements to a single one by repeatedly applying a reducing operation. If theclosure returns a failure, the failure is propagated back to the caller immediately.Read more
1.0.0 ·Source§

fnall<F>(&mut self, f: F) ->bool
where Self:Sized, F:FnMut(Self::Item) ->bool,

Tests if every element of the iterator matches a predicate.Read more
1.0.0 ·Source§

fnany<F>(&mut self, f: F) ->bool
where Self:Sized, F:FnMut(Self::Item) ->bool,

Tests if any element of the iterator matches a predicate.Read more
1.0.0 ·Source§

fnfind<P>(&mut self, predicate: P) ->Option<Self::Item>
where Self:Sized, P:FnMut(&Self::Item) ->bool,

Searches for an element of an iterator that satisfies a predicate.Read more
1.30.0 ·Source§

fnfind_map<B, F>(&mut self, f: F) ->Option<B>
where Self:Sized, F:FnMut(Self::Item) ->Option<B>,

Applies function to the elements of iterator and returnsthe first non-none result.Read more
Source§

fntry_find<R>( &mut self, f: implFnMut(&Self::Item) -> R,) -> <<R asTry>::Residual asResidual<Option<Self::Item>>>::TryType
where Self:Sized, R:Try<Output =bool>, <R asTry>::Residual:Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find #63178)
Applies function to the elements of iterator and returnsthe first true result or the first error.Read more
1.0.0 ·Source§

fnposition<P>(&mut self, predicate: P) ->Option<usize>
where Self:Sized, P:FnMut(Self::Item) ->bool,

Searches for an element in an iterator, returning its index.Read more
1.0.0 ·Source§

fnrposition<P>(&mut self, predicate: P) ->Option<usize>

Searches for an element in an iterator from the right, returning itsindex.Read more
1.0.0 ·Source§

fnmax(self) ->Option<Self::Item>
where Self:Sized, Self::Item:Ord,

Returns the maximum element of an iterator.Read more
1.0.0 ·Source§

fnmin(self) ->Option<Self::Item>
where Self:Sized, Self::Item:Ord,

Returns the minimum element of an iterator.Read more
1.6.0 ·Source§

fnmax_by_key<B, F>(self, f: F) ->Option<Self::Item>
where B:Ord, Self:Sized, F:FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from thespecified function.Read more
1.15.0 ·Source§

fnmax_by<F>(self, compare: F) ->Option<Self::Item>
where Self:Sized, F:FnMut(&Self::Item, &Self::Item) ->Ordering,

Returns the element that gives the maximum value with respect to thespecified comparison function.Read more
1.6.0 ·Source§

fnmin_by_key<B, F>(self, f: F) ->Option<Self::Item>
where B:Ord, Self:Sized, F:FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from thespecified function.Read more
1.15.0 ·Source§

fnmin_by<F>(self, compare: F) ->Option<Self::Item>
where Self:Sized, F:FnMut(&Self::Item, &Self::Item) ->Ordering,

Returns the element that gives the minimum value with respect to thespecified comparison function.Read more
1.0.0 ·Source§

fnrev(self) ->Rev<Self>

Reverses an iterator’s direction.Read more
1.0.0 ·Source§

fnunzip<A, B, FromA, FromB>(self) ->(FromA, FromB)
where FromA:Default +Extend<A>, FromB:Default +Extend<B>, Self:Sized +Iterator<Item =(A, B)>,

Converts an iterator of pairs into a pair of containers.Read more
1.36.0 ·Source§

fncopied<'a, T>(self) ->Copied<Self>
where T:Copy + 'a, Self:Sized +Iterator<Item =&'a T>,

Creates an iterator which copies all of its elements.Read more
1.0.0 ·Source§

fncloned<'a, T>(self) ->Cloned<Self>
where T:Clone + 'a, Self:Sized +Iterator<Item =&'a T>,

Creates an iterator whichclones all of its elements.Read more
1.0.0 ·Source§

fncycle(self) ->Cycle<Self>
where Self:Sized +Clone,

Repeats an iterator endlessly.Read more
Source§

fnarray_chunks<const N:usize>(self) ->ArrayChunks<Self, N>
where Self:Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks #100450)
Returns an iterator overN elements of the iterator at a time.Read more
1.11.0 ·Source§

fnsum<S>(self) -> S
where Self:Sized, S:Sum<Self::Item>,

Sums the elements of an iterator.Read more
1.11.0 ·Source§

fnproduct<P>(self) -> P
where Self:Sized, P:Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elementsRead more
1.5.0 ·Source§

fncmp<I>(self, other: I) ->Ordering
where I:IntoIterator<Item = Self::Item>, Self::Item:Ord, Self:Sized,

Lexicographically compares the elements of thisIterator with thoseof another.Read more
Source§

fncmp_by<I, F>(self, other: I, cmp: F) ->Ordering
where Self:Sized, I:IntoIterator, F:FnMut(Self::Item, <I asIntoIterator>::Item) ->Ordering,

🔬This is a nightly-only experimental API. (iter_order_by #64295)
Lexicographically compares the elements of thisIterator with thoseof another with respect to the specified comparison function.Read more
1.5.0 ·Source§

fnpartial_cmp<I>(self, other: I) ->Option<Ordering>
where I:IntoIterator, Self::Item:PartialOrd<<I asIntoIterator>::Item>, Self:Sized,

Lexicographically compares thePartialOrd elements ofthisIterator with those of another. The comparison works like short-circuitevaluation, returning a result without comparing the remaining elements.As soon as an order can be determined, the evaluation stops and a result is returned.Read more
Source§

fnpartial_cmp_by<I, F>(self, other: I, partial_cmp: F) ->Option<Ordering>
where Self:Sized, I:IntoIterator, F:FnMut(Self::Item, <I asIntoIterator>::Item) ->Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by #64295)
Lexicographically compares the elements of thisIterator with thoseof another with respect to the specified comparison function.Read more
1.5.0 ·Source§

fneq<I>(self, other: I) ->bool
where I:IntoIterator, Self::Item:PartialEq<<I asIntoIterator>::Item>, Self:Sized,

Determines if the elements of thisIterator are equal to those ofanother.Read more
Source§

fneq_by<I, F>(self, other: I, eq: F) ->bool
where Self:Sized, I:IntoIterator, F:FnMut(Self::Item, <I asIntoIterator>::Item) ->bool,

🔬This is a nightly-only experimental API. (iter_order_by #64295)
Determines if the elements of thisIterator are equal to those ofanother with respect to the specified equality function.Read more
1.5.0 ·Source§

fnne<I>(self, other: I) ->bool
where I:IntoIterator, Self::Item:PartialEq<<I asIntoIterator>::Item>, Self:Sized,

Determines if the elements of thisIterator are not equal to those ofanother.Read more
1.5.0 ·Source§

fnlt<I>(self, other: I) ->bool
where I:IntoIterator, Self::Item:PartialOrd<<I asIntoIterator>::Item>, Self:Sized,

Determines if the elements of thisIterator arelexicographicallyless than those of another.Read more
1.5.0 ·Source§

fnle<I>(self, other: I) ->bool
where I:IntoIterator, Self::Item:PartialOrd<<I asIntoIterator>::Item>, Self:Sized,

Determines if the elements of thisIterator arelexicographicallyless or equal to those of another.Read more
1.5.0 ·Source§

fngt<I>(self, other: I) ->bool
where I:IntoIterator, Self::Item:PartialOrd<<I asIntoIterator>::Item>, Self:Sized,

Determines if the elements of thisIterator arelexicographicallygreater than those of another.Read more
1.5.0 ·Source§

fnge<I>(self, other: I) ->bool
where I:IntoIterator, Self::Item:PartialOrd<<I asIntoIterator>::Item>, Self:Sized,

Determines if the elements of thisIterator arelexicographicallygreater than or equal to those of another.Read more
1.82.0 ·Source§

fnis_sorted(self) ->bool
where Self:Sized, Self::Item:PartialOrd,

Checks if the elements of this iterator are sorted.Read more
1.82.0 ·Source§

fnis_sorted_by<F>(self, compare: F) ->bool
where Self:Sized, F:FnMut(&Self::Item, &Self::Item) ->bool,

Checks if the elements of this iterator are sorted using the given comparator function.Read more
1.82.0 ·Source§

fnis_sorted_by_key<F, K>(self, f: F) ->bool
where Self:Sized, F:FnMut(Self::Item) -> K, K:PartialOrd,

Checks if the elements of this iterator are sorted using the given key extractionfunction.Read more
1.0.0 ·Source§

impl<T, A>Ord forBox<T, A>
where T:Ord + ?Sized, A:Allocator,

Source§

fncmp(&self, other: &Box<T, A>) ->Ordering

This method returns anOrdering betweenself andother.Read more
1.21.0 ·Source§

fnmax(self, other: Self) -> Self
where Self:Sized,

Compares and returns the maximum of two values.Read more
1.21.0 ·Source§

fnmin(self, other: Self) -> Self
where Self:Sized,

Compares and returns the minimum of two values.Read more
1.50.0 ·Source§

fnclamp(self, min: Self, max: Self) -> Self
where Self:Sized,

Restrict a value to a certain interval.Read more
1.0.0 ·Source§

impl<T, A>PartialEq forBox<T, A>
where T:PartialEq + ?Sized, A:Allocator,

Source§

fneq(&self, other: &Box<T, A>) ->bool

Tests forself andother values to be equal, and is used by==.
Source§

fnne(&self, other: &Box<T, A>) ->bool

Tests for!=. The default implementation is almost always sufficient,and should not be overridden without very good reason.
1.0.0 ·Source§

impl<T, A>PartialOrd forBox<T, A>
where T:PartialOrd + ?Sized, A:Allocator,

Source§

fnpartial_cmp(&self, other: &Box<T, A>) ->Option<Ordering>

This method returns an ordering betweenself andother values if one exists.Read more
Source§

fnlt(&self, other: &Box<T, A>) ->bool

Tests less than (forself andother) and is used by the< operator.Read more
Source§

fnle(&self, other: &Box<T, A>) ->bool

Tests less than or equal to (forself andother) and is used by the<= operator.Read more
Source§

fnge(&self, other: &Box<T, A>) ->bool

Tests greater than or equal to (forself andother) and is used bythe>= operator.Read more
Source§

fngt(&self, other: &Box<T, A>) ->bool

Tests greater than (forself andother) and is used by the>operator.Read more
1.0.0 ·Source§

impl<T, A>Pointer forBox<T, A>
where A:Allocator, T: ?Sized,

Source§

fnfmt(&self, f: &mutFormatter<'_>) ->Result<(),Error>

Formats the value using the given formatter.Read more
1.0.0 ·Source§

impl<R:Read + ?Sized>Read forBox<R>

Source§

fnread(&mut self, buf: &mut [u8]) ->Result<usize>

Pull some bytes from this source into the specified buffer, returninghow many bytes were read.Read more
Source§

fnread_buf(&mut self, cursor:BorrowedCursor<'_>) ->Result<()>

🔬This is a nightly-only experimental API. (read_buf #78485)
Pull some bytes from this source into the specified buffer.Read more
Source§

fnread_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) ->Result<usize>

Likeread, except that it reads into a slice of buffers.Read more
Source§

fnis_read_vectored(&self) ->bool

🔬This is a nightly-only experimental API. (can_vector #69941)
Determines if thisReader has an efficientread_vectoredimplementation.Read more
Source§

fnread_to_end(&mut self, buf: &mutVec<u8>) ->Result<usize>

Reads all bytes until EOF in this source, placing them intobuf.Read more
Source§

fnread_to_string(&mut self, buf: &mutString) ->Result<usize>

Reads all bytes until EOF in this source, appending them tobuf.Read more
Source§

fnread_exact(&mut self, buf: &mut [u8]) ->Result<()>

Reads the exact number of bytes required to fillbuf.Read more
Source§

fnread_buf_exact(&mut self, cursor:BorrowedCursor<'_>) ->Result<()>

🔬This is a nightly-only experimental API. (read_buf #78485)
Reads the exact number of bytes required to fillcursor.Read more
1.0.0 ·Source§

fnby_ref(&mut self) -> &mut Self
where Self:Sized,

Creates a “by reference” adapter for this instance ofRead.Read more
1.0.0 ·Source§

fnbytes(self) ->Bytes<Self>
where Self:Sized,

Transforms thisRead instance to anIterator over its bytes.Read more
1.0.0 ·Source§

fnchain<R:Read>(self, next: R) ->Chain<Self, R>
where Self:Sized,

Creates an adapter which will chain this stream with another.Read more
1.0.0 ·Source§

fntake(self, limit:u64) ->Take<Self>
where Self:Sized,

Creates an adapter which will read at mostlimit bytes from it.Read more
Source§

fnread_array<const N:usize>(&mut self) ->Result<[u8;N]>
where Self:Sized,

🔬This is a nightly-only experimental API. (read_array #148848)
Read and return a fixed array of bytes from this source.Read more
1.0.0 ·Source§

impl<S:Seek + ?Sized>Seek forBox<S>

Source§

fnseek(&mut self, pos:SeekFrom) ->Result<u64>

Seek to an offset, in bytes, in a stream.Read more
Source§

fnrewind(&mut self) ->Result<()>

Rewind to the beginning of a stream.Read more
Source§

fnstream_len(&mut self) ->Result<u64>

🔬This is a nightly-only experimental API. (seek_stream_len #59359)
Returns the length of this stream (in bytes).Read more
Source§

fnstream_position(&mut self) ->Result<u64>

Returns the current seek position from the start of the stream.Read more
Source§

fnseek_relative(&mut self, offset:i64) ->Result<()>

Seeks relative to the current position.Read more
1.43.0 ·Source§

impl<T, const N:usize>TryFrom<Box<[T]>> forBox<[T; N]>

Source§

fntry_from( boxed_slice:Box<[T]>,) ->Result<Box<[T; N]>, <Box<[T; N]> asTryFrom<Box<[T]>>>::Error>

Attempts to convert aBox<[T]> into aBox<[T; N]>.

The conversion occurs in-place and does not require anew memory allocation.

§Errors

Returns the oldBox<[T]> in theErr variant ifboxed_slice.len() does not equalN.

Source§

typeError =Box<[T]>

The type returned in the event of a conversion error.
1.66.0 ·Source§

impl<T, const N:usize>TryFrom<Vec<T>> forBox<[T; N]>

Source§

fntry_from( vec:Vec<T>,) ->Result<Box<[T; N]>, <Box<[T; N]> asTryFrom<Vec<T>>>::Error>

Attempts to convert aVec<T> into aBox<[T; N]>.

LikeVec::into_boxed_slice, this is in-place ifvec.capacity() == N,but will require a reallocation otherwise.

§Errors

Returns the originalVec<T> in theErr variant ifboxed_slice.len() does not equalN.

§Examples

This can be used withvec! to create an array on the heap:

letstate: Box<[f32;100]> =vec![1.0;100].try_into().unwrap();assert_eq!(state.len(),100);
Source§

typeError =Vec<T>

The type returned in the event of a conversion error.
1.0.0 ·Source§

impl<W:Write + ?Sized>Write forBox<W>

Source§

fnwrite(&mut self, buf: &[u8]) ->Result<usize>

Writes a buffer into this writer, returning how many bytes were written.Read more
Source§

fnwrite_vectored(&mut self, bufs: &[IoSlice<'_>]) ->Result<usize>

Likewrite, except that it writes from a slice of buffers.Read more
Source§

fnis_write_vectored(&self) ->bool

🔬This is a nightly-only experimental API. (can_vector #69941)
Determines if thisWriter has an efficientwrite_vectoredimplementation.Read more
Source§

fnflush(&mut self) ->Result<()>

Flushes this output stream, ensuring that all intermediately bufferedcontents reach their destination.Read more
Source§

fnwrite_all(&mut self, buf: &[u8]) ->Result<()>

Attempts to write an entire buffer into this writer.Read more
Source§

fnwrite_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) ->Result<()>

🔬This is a nightly-only experimental API. (write_all_vectored #70436)
Attempts to write multiple buffers into this writer.Read more
Source§

fnwrite_fmt(&mut self, fmt:Arguments<'_>) ->Result<()>

Writes a formatted string into this writer, returning any errorencountered.Read more
1.0.0 ·Source§

fnby_ref(&mut self) -> &mut Self
where Self:Sized,

Creates a “by reference” adapter for this instance ofWrite.Read more
Source§

impl<T, U, A>CoerceUnsized<Box<U, A>> forBox<T, A>
where T:Unsize<U> + ?Sized, A:Allocator, U: ?Sized,

Source§

impl<T, A>DerefPure forBox<T, A>
where A:Allocator, T: ?Sized,

Source§

impl<T, U>DispatchFromDyn<Box<U>> forBox<T>
where T:Unsize<U> + ?Sized, U: ?Sized,

1.0.0 ·Source§

impl<T, A>Eq forBox<T, A>
where T:Eq + ?Sized, A:Allocator,

1.26.0 ·Source§

impl<I, A>FusedIterator forBox<I, A>

1.80.0 ·Source§

impl<'a, I, A> !Iterator for &'aBox<[I], A>
where A:Allocator,

This implementation is required to make sure that the&Box<[I]>: IntoIteratorimplementation doesn’t overlap withIntoIterator for T where T: Iterator blanket.

1.80.0 ·Source§

impl<'a, I, A> !Iterator for &'a mutBox<[I], A>
where A:Allocator,

This implementation is required to make sure that the&mut Box<[I]>: IntoIteratorimplementation doesn’t overlap withIntoIterator for T where T: Iterator blanket.

1.80.0 ·Source§

impl<I, A> !Iterator forBox<[I], A>
where A:Allocator,

This implementation is required to make sure that theBox<[I]>: IntoIteratorimplementation doesn’t overlap withIntoIterator for T where T: Iterator blanket.

Source§

impl<T, A>PinCoerceUnsized forBox<T, A>
where A:Allocator, T: ?Sized,

1.33.0 ·Source§

impl<T, A>Unpin forBox<T, A>
where A:Allocator, T: ?Sized,

Auto Trait Implementations§

§

impl<T, A>Freeze forBox<T, A>
where A:Freeze, T: ?Sized,

§

impl<T, A>RefUnwindSafe forBox<T, A>

§

impl<T, A>Send forBox<T, A>
where A:Send, T:Send + ?Sized,

§

impl<T, A>Sync forBox<T, A>
where A:Sync, T:Sync + ?Sized,

§

impl<T, A>UnwindSafe forBox<T, A>
where A:UnwindSafe, T:UnwindSafe + ?Sized,

Blanket Implementations§

Source§

impl<T>Any for T
where T: 'static + ?Sized,

Source§

fntype_id(&self) ->TypeId

Gets theTypeId ofself.Read more
Source§

impl<T>Borrow<T> for T
where T: ?Sized,

Source§

fnborrow(&self) ->&T

Immutably borrows from an owned value.Read more
Source§

impl<T>BorrowMut<T> for T
where T: ?Sized,

Source§

fnborrow_mut(&mut self) ->&mut T

Mutably borrows from an owned value.Read more
Source§

impl<T>CloneToUninit for T
where T:Clone,

Source§

unsafe fnclone_to_uninit(&self, dest:*mutu8)

🔬This is a nightly-only experimental API. (clone_to_uninit #126799)
Performs copy-assignment fromself todest.Read more
Source§

impl<T>From<!> for T

Source§

fnfrom(t:!) -> T

Converts to this type from the input type.
Source§

impl<T>From<T> for T

Source§

fnfrom(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U>Into<U> for T
where U:From<T>,

Source§

fninto(self) -> U

CallsU::from(self).

That is, this conversion is whatever the implementation ofFrom<T> for U chooses to do.

Source§

impl<I>IntoAsyncIterator for I
where I:AsyncIterator,

Source§

typeItem = <I asAsyncIterator>::Item

🔬This is a nightly-only experimental API. (async_iterator #79024)
The type of the item yielded by the iterator
Source§

typeIntoAsyncIter = I

🔬This is a nightly-only experimental API. (async_iterator #79024)
The type of the resulting iterator
Source§

fninto_async_iter(self) -> <I asIntoAsyncIterator>::IntoAsyncIter

🔬This is a nightly-only experimental API. (async_iterator #79024)
Convertsself into an async iterator
Source§

impl<F>IntoFuture for F
where F:Future,

Source§

typeOutput = <F asFuture>::Output

The output that the future will produce on completion.
Source§

typeIntoFuture = F

Which kind of future are we turning this into?
Source§

fninto_future(self) -> <F asIntoFuture>::IntoFuture

Creates a future from a value.Read more
Source§

impl<I>IntoIterator for I
where I:Iterator,

Source§

typeItem = <I asIterator>::Item

The type of the elements being iterated over.
Source§

typeIntoIter = I

Which kind of iterator are we turning this into?
Source§

fninto_iter(self) -> I

Creates an iterator from a value.Read more
Source§

impl<F>Pattern for F
where F:FnMut(char) ->bool,

Source§

typeSearcher<'a> =CharPredicateSearcher<'a, F>

🔬This is a nightly-only experimental API. (pattern #27721)
Associated searcher for this pattern
Source§

fninto_searcher<'a>(self, haystack: &'astr) ->CharPredicateSearcher<'a, F>

🔬This is a nightly-only experimental API. (pattern #27721)
Constructs the associated searcher fromself and thehaystack to search in.
Source§

fnis_contained_in<'a>(self, haystack: &'astr) ->bool

🔬This is a nightly-only experimental API. (pattern #27721)
Checks whether the pattern matches anywhere in the haystack
Source§

fnis_prefix_of<'a>(self, haystack: &'astr) ->bool

🔬This is a nightly-only experimental API. (pattern #27721)
Checks whether the pattern matches at the front of the haystack
Source§

fnstrip_prefix_of<'a>(self, haystack: &'astr) ->Option<&'astr>

🔬This is a nightly-only experimental API. (pattern #27721)
Removes the pattern from the front of haystack, if it matches.
Source§

fnis_suffix_of<'a>(self, haystack: &'astr) ->bool

🔬This is a nightly-only experimental API. (pattern #27721)
Checks whether the pattern matches at the back of the haystack
Source§

fnstrip_suffix_of<'a>(self, haystack: &'astr) ->Option<&'astr>

🔬This is a nightly-only experimental API. (pattern #27721)
Removes the pattern from the back of haystack, if it matches.
Source§

fnas_utf8_pattern(&self) ->Option<Utf8Pattern<'_>>

🔬This is a nightly-only experimental API. (pattern #27721)
Returns the pattern as utf-8 bytes if possible.
Source§

impl<P, T>Receiver for P
where P:Deref<Target = T> + ?Sized, T: ?Sized,

Source§

typeTarget = T

🔬This is a nightly-only experimental API. (arbitrary_self_types #44874)
The target type on which the method may be called.
Source§

impl<T>ToOwned for T
where T:Clone,

Source§

typeOwned = T

The resulting type after obtaining ownership.
Source§

fnto_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning.Read more
Source§

fnclone_into(&self, target:&mut T)

Uses borrowed data to replace owned data, usually by cloning.Read more
Source§

impl<T>ToString for T
where T:Display + ?Sized,

Source§

fnto_string(&self) ->String

Converts the given value to aString.Read more
Source§

impl<T, U>TryFrom<U> for T
where U:Into<T>,

Source§

typeError =Infallible

The type returned in the event of a conversion error.
Source§

fntry_from(value: U) ->Result<T, <T asTryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U>TryInto<U> for T
where U:TryFrom<T>,

Source§

typeError = <U asTryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fntry_into(self) ->Result<U, <U asTryFrom<T>>::Error>

Performs the conversion.

[8]ページ先頭

©2009-2026 Movatter.jp