1.0.0[−][src]Struct nom::lib::std::boxed::Box
A pointer type for heap allocation.
See the module-level documentation for more.
Implementations
impl<T> Box<T>
[src][−]
pub fn new(x: T) -> Box<T>ⓘNotable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
[src][−]
Notable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
Allocates memory on the heap and then places x
into it.
This doesn't actually allocate if T
is zero-sized.
Examples
let five = Box::new(5);
pub fn new_uninit() -> Box<MaybeUninit<T>>ⓘNotable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
[src][−]
Notable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
new_uninit
)Constructs a new box with uninitialized contents.
Examples
#![feature(new_uninit)] let mut five = Box::<u32>::new_uninit(); let five = unsafe { // Deferred initialization: five.as_mut_ptr().write(5); five.assume_init() }; assert_eq!(*five, 5)
pub fn new_zeroed() -> Box<MaybeUninit<T>>ⓘNotable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
[src][−]
Notable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
new_uninit
)Constructs a new Box
with uninitialized contents, with the memory
being filled with 0
bytes.
See MaybeUninit::zeroed
for examples of correct and incorrect usage
of this method.
Examples
#![feature(new_uninit)] let zero = Box::<u32>::new_zeroed(); let zero = unsafe { zero.assume_init() }; assert_eq!(*zero, 0)
pub fn pin(x: T) -> Pin<Box<T>>
1.33.0[src][−]
Constructs a new Pin<Box<T>>
. If T
does not implement Unpin
, then
x
will be pinned in memory and unable to be moved.
pub fn into_boxed_slice(boxed: Box<T>) -> Box<[T]>ⓘNotable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
[src][−]
Notable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
box_into_boxed_slice
)Converts a Box<T>
into a Box<[T]>
This conversion does not allocate on the heap and happens in place.
impl<T> Box<[T]>
[src][−]
pub fn new_uninit_slice(len: usize) -> Box<[MaybeUninit<T>]>ⓘNotable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
[src][−]
Notable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
new_uninit
)Constructs a new boxed slice with uninitialized contents.
Examples
#![feature(new_uninit)] let mut values = Box::<[u32]>::new_uninit_slice(3); let values = unsafe { // Deferred initialization: values[0].as_mut_ptr().write(1); values[1].as_mut_ptr().write(2); values[2].as_mut_ptr().write(3); values.assume_init() }; assert_eq!(*values, [1, 2, 3])
pub fn new_zeroed_slice(len: usize) -> Box<[MaybeUninit<T>]>ⓘNotable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
[src][−]
Notable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
new_uninit
)Constructs a new boxed slice with uninitialized contents, with the memory
being filled with 0
bytes.
See MaybeUninit::zeroed
for examples of correct and incorrect usage
of this method.
Examples
#![feature(new_uninit)] let values = Box::<[u32]>::new_zeroed_slice(3); let values = unsafe { values.assume_init() }; assert_eq!(*values, [0, 0, 0])
impl<T> Box<MaybeUninit<T>>
[src][−]
pub unsafe fn assume_init(self) -> Box<T>ⓘNotable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
[src][−]
Notable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
new_uninit
)Converts to Box<T>
.
Safety
As with MaybeUninit::assume_init
,
it is up to the caller to guarantee that the value
really is in an initialized state.
Calling this when the content is not yet fully initialized
causes immediate undefined behavior.
Examples
#![feature(new_uninit)] let mut five = Box::<u32>::new_uninit(); let five: Box<u32> = unsafe { // Deferred initialization: five.as_mut_ptr().write(5); five.assume_init() }; assert_eq!(*five, 5)
impl<T> Box<[MaybeUninit<T>]>
[src][−]
pub unsafe fn assume_init(self) -> Box<[T]>ⓘNotable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
[src][−]
Notable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
new_uninit
)Converts to Box<[T]>
.
Safety
As with MaybeUninit::assume_init
,
it is up to the caller to guarantee that the values
really are in an initialized state.
Calling this when the content is not yet fully initialized
causes immediate undefined behavior.
Examples
#![feature(new_uninit)] let mut values = Box::<[u32]>::new_uninit_slice(3); let values = unsafe { // Deferred initialization: values[0].as_mut_ptr().write(1); values[1].as_mut_ptr().write(2); values[2].as_mut_ptr().write(3); values.assume_init() }; assert_eq!(*values, [1, 2, 3])
impl<T> Box<T> where
T: ?Sized,
[src][−]
T: ?Sized,
pub unsafe fn from_raw(raw: *mut T) -> Box<T>ⓘNotable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
1.4.0[src][−]
Notable traits for Box<W>
impl<W> Write for Box<W> where
W: Write + ?Sized, impl<R> Read for Box<R> where
R: Read + ?Sized, impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized, type Output = <F as Future>::Output;impl<I> Iterator for Box<I> where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;
Constructs a box from a raw pointer.
After calling this function, the raw pointer is owned by the
resulting Box
. Specifically, the Box
destructor will call
the destructor of T
and free the allocated memory. For this
to be safe, the memory must have been allocated in accordance
with the memory layout used by Box
.
Safety
This function is unsafe because improper use may lead to memory problems. For example, a double-free may occur if the function is called twice on the same raw pointer.
Examples
Recreate a Box
which was previously converted to a raw pointer
using Box::into_raw
:
let x = Box::new(5); let ptr = Box::into_raw(x); let x = unsafe { Box::from_raw(ptr) };
Manually create a Box
from scratch by using the global allocator:
use std::alloc::{alloc, Layout}; unsafe { let ptr = alloc(Layout::new::<i32>()) as *mut i32; // 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); let x = Box::from_raw(ptr); }
pub fn into_raw(b: Box<T>) -> *mut T
1.4.0[src][−]
Consumes the Box
, returning a wrapped raw pointer.
The pointer will be properly aligned and non-null.
After calling this function, the caller is responsible for the
memory previously managed by the Box
. In particular, the
caller should properly destroy T
and release the memory, taking
into account the memory layout used by Box
. The easiest way to
do this is to convert the raw pointer back into a Box
with the
Box::from_raw
function, allowing the Box
destructor to perform
the cleanup.
Note: this is an associated function, which means that you have
to call it as Box::into_raw(b)
instead of b.into_raw()
. This
is so that there is no conflict with a method on the inner type.
Examples
Converting the raw pointer back into a Box
with Box::from_raw
for automatic cleanup:
let x = Box::new(String::from("Hello")); let ptr = Box::into_raw(x); let x = unsafe { Box::from_raw(ptr) };
Manual cleanup by explicitly running the destructor and deallocating the memory:
use std::alloc::{dealloc, Layout}; use std::ptr; let x = Box::new(String::from("Hello")); let p = Box::into_raw(x); unsafe { ptr::drop_in_place(p); dealloc(p as *mut u8, Layout::new::<String>()); }
pub fn leak<'a>(b: Box<T>) -> &'a mut Tⓘ where
T: 'a,
1.26.0[src][−]
T: 'a,
Consumes and leaks the Box
, returning a mutable reference,
&'a mut T
. Note that the type T
must outlive the chosen lifetime
'a
. If the type has 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 of
the program's life. Dropping the returned reference will cause a memory
leak. If this is not acceptable, the reference should first be wrapped
with the Box::from_raw
function producing a Box
. This Box
can
then be dropped which will properly destroy T
and release the
allocated memory.
Note: this is an associated function, which means that you have
to call it as Box::leak(b)
instead of b.leak()
. This
is so that there is no conflict with a method on the inner type.
Examples
Simple usage:
let x = Box::new(41); let static_ref: &'static mut usize = Box::leak(x); *static_ref += 1; assert_eq!(*static_ref, 42);
Unsized data:
let x = vec![1, 2, 3].into_boxed_slice(); let static_ref = Box::leak(x); static_ref[0] = 4; assert_eq!(*static_ref, [4, 2, 3]);
pub fn into_pin(boxed: Box<T>) -> Pin<Box<T>>
[src][−]
box_into_pin
)Converts a Box<T>
into a Pin<Box<T>>
This conversion does not allocate on the heap and happens in place.
This is also available via From
.
impl Box<dyn Any + 'static>
[src][−]
pub fn downcast<T>(self) -> Result<Box<T>, Box<dyn Any + 'static>> where
T: Any,
[src][−]
T: Any,
Attempt to downcast the box to a concrete type.
Examples
use std::any::Any; fn print_if_string(value: Box<dyn Any>) { if let Ok(string) = value.downcast::<String>() { println!("String ({}): {}", string.len(), string); } } let my_string = "Hello World".to_string(); print_if_string(Box::new(my_string)); print_if_string(Box::new(0i8));
impl Box<dyn Any + 'static + Send>
[src][−]
pub fn downcast<T>(self) -> Result<Box<T>, Box<dyn Any + 'static + Send>> where
T: Any,
[src][−]
T: Any,
Attempt to downcast the box to a concrete type.
Examples
use std::any::Any; fn print_if_string(value: Box<dyn Any + Send>) { if let Ok(string) = value.downcast::<String>() { println!("String ({}): {}", string.len(), string); } } let my_string = "Hello World".to_string(); print_if_string(Box::new(my_string)); print_if_string(Box::new(0i8));
Trait Implementations
impl<T> AsMut<T> for Box<T> where
T: ?Sized,
1.5.0[src][+]
T: ?Sized,
impl<T> AsRef<T> for Box<T> where
T: ?Sized,
1.5.0[src][+]
T: ?Sized,
impl<T> Borrow<T> for Box<T> where
T: ?Sized,
1.1.0[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for Box<T> where
T: ?Sized,
1.1.0[src][+]
T: ?Sized,
impl<B> BufRead for Box<B> where
B: BufRead + ?Sized,
[src][+]
B: BufRead + ?Sized,
impl Clone for Box<OsStr>
1.29.0[src][+]
impl Clone for Box<CStr>
1.29.0[src][+]
impl Clone for Box<Path>
1.29.0[src][+]
impl Clone for Box<str>
1.3.0[src][+]
impl<T> Clone for Box<T> where
T: Clone,
[src][+]
T: Clone,
impl<T> Clone for Box<[T]> where
T: Clone,
1.3.0[src][+]
T: Clone,
impl<T, U> CoerceUnsized<Box<U>> for Box<T> where
T: Unsize<U> + ?Sized,
U: ?Sized,
[src]
T: Unsize<U> + ?Sized,
U: ?Sized,
impl<T> Debug for Box<T> where
T: Debug + ?Sized,
[src][+]
T: Debug + ?Sized,
impl Default for Box<OsStr>
1.17.0[src][+]
impl Default for Box<CStr>
1.17.0[src][+]
impl<T> Default for Box<T> where
T: Default,
[src][+]
T: Default,
impl Default for Box<str>
1.17.0[src][+]
impl<T> Default for Box<[T]>
[src][+]
impl<T> Deref for Box<T> where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> DerefMut for Box<T> where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T, U> DispatchFromDyn<Box<U>> for Box<T> where
T: Unsize<U> + ?Sized,
U: ?Sized,
[src]
T: Unsize<U> + ?Sized,
U: ?Sized,
impl<T> Display for Box<T> where
T: Display + ?Sized,
[src][+]
T: Display + ?Sized,
impl<I> DoubleEndedIterator for Box<I> where
I: DoubleEndedIterator + ?Sized,
[src][+]
I: DoubleEndedIterator + ?Sized,
impl<T> Drop for Box<T> where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> Eq for Box<T> where
T: Eq + ?Sized,
[src]
T: Eq + ?Sized,
impl<T> Error for Box<T> where
T: Error,
1.8.0[src][+]
T: Error,
impl<I> ExactSizeIterator for Box<I> where
I: ExactSizeIterator + ?Sized,
[src][+]
I: ExactSizeIterator + ?Sized,
impl Extend<Box<str>> for String
1.45.0[src][+]
impl<A, F> Fn<A> for Box<F> where
F: Fn<A> + ?Sized,
1.35.0[src][+]
F: Fn<A> + ?Sized,
impl<A, F> FnMut<A> for Box<F> where
F: FnMut<A> + ?Sized,
1.35.0[src][+]
F: FnMut<A> + ?Sized,
impl<A, F> FnOnce<A> for Box<F> where
F: FnOnce<A> + ?Sized,
1.35.0[src][+]
F: FnOnce<A> + ?Sized,
impl<'_, T> From<&'_ [T]> for Box<[T]> where
T: Copy,
1.17.0[src][+]
T: Copy,
impl<'_> From<&'_ CStr> for Box<CStr>
1.17.0[src][+]
impl<'_> From<&'_ OsStr> for Box<OsStr>
1.17.0[src][+]
impl<'_> From<&'_ Path> for Box<Path>
1.17.0[src][+]
impl<'a, '_> From<&'_ str> for Box<dyn Error + 'a + Sync + Send>
[src][+]
impl<'_> From<&'_ str> for Box<dyn Error + 'static>
1.6.0[src][+]
impl<'_> From<&'_ str> for Box<str>
1.17.0[src][+]
impl<T, const N: usize> From<[T; N]> for Box<[T]>
1.45.0[src][+]
impl<T> From<Box<[T]>> for Vec<T>
1.18.0[src][+]
impl From<Box<CStr>> for CString
1.18.0[src][+]
impl From<Box<OsStr>> for OsString
1.18.0[src][+]
impl From<Box<Path>> for PathBuf
1.18.0[src][+]
impl<T> From<Box<T>> for Arc<T> where
T: ?Sized,
1.21.0[src][+]
T: ?Sized,
impl<T> From<Box<T>> for Rc<T> where
T: ?Sized,
1.21.0[src][+]
T: ?Sized,
impl<T> From<Box<T>> for Pin<Box<T>> where
T: ?Sized,
1.33.0[src][+]
T: ?Sized,
impl From<Box<str>> for String
1.18.0[src][+]
impl From<Box<str>> for Box<[u8]>
1.19.0[src][+]
impl From<CString> for Box<CStr>
1.20.0[src][+]
impl<'_, T> From<Cow<'_, [T]>> for Box<[T]> where
T: Copy,
1.45.0[src][+]
T: Copy,
impl<'_> From<Cow<'_, CStr>> for Box<CStr>
1.45.0[src][+]
impl<'_> From<Cow<'_, OsStr>> for Box<OsStr>
1.45.0[src][+]
impl<'_> From<Cow<'_, Path>> for Box<Path>
1.45.0[src][+]
impl<'_> From<Cow<'_, str>> for Box<str>
1.45.0[src][+]
impl<'a> From<Cow<'a, str>> for Box<dyn Error + 'static>
1.22.0[src][+]
impl<'a, 'b> From<Cow<'b, str>> for Box<dyn Error + 'a + Sync + Send>
1.22.0[src][+]
impl<'a, E> From<E> for Box<dyn Error + 'a> where
E: 'a + Error,
[src][+]
E: 'a + Error,
impl<'a, E> From<E> for Box<dyn Error + 'a + Sync + Send> where
E: 'a + Error + Send + Sync,
[src][+]
E: 'a + Error + Send + Sync,
impl From<OsString> for Box<OsStr>
1.20.0[src][+]
impl From<PathBuf> for Box<Path>
1.20.0[src][+]
impl From<String> for Box<dyn Error + 'static + Sync + Send>
[src][+]
impl From<String> for Box<dyn Error + 'static>
1.6.0[src][+]
impl From<String> for Box<str>
1.20.0[src][+]
impl<T> From<T> for Box<T>
1.6.0[src][+]
impl<T> From<Vec<T>> for Box<[T]>
1.20.0[src][+]
impl<A> FromIterator<A> for Box<[A]>
1.32.0[src][+]
impl FromIterator<Box<str>> for String
1.45.0[src][+]
impl<I> FusedIterator for Box<I> where
I: FusedIterator + ?Sized,
1.26.0[src]
I: FusedIterator + ?Sized,
impl<F> Future for Box<F> where
F: Unpin + Future + ?Sized,
1.36.0[src][+]
F: Unpin + Future + ?Sized,
impl<G, R> Generator<R> for Box<G> where
G: Unpin + Generator<R> + ?Sized,
[src][+]
G: Unpin + Generator<R> + ?Sized,
impl<T> Hash for Box<T> where
T: Hash + ?Sized,
[src][+]
T: Hash + ?Sized,
impl<T> Hasher for Box<T> where
T: Hasher + ?Sized,
1.22.0[src][+]
T: Hasher + ?Sized,
impl<I> Iterator for Box<I> where
I: Iterator + ?Sized,
[src][+]
I: Iterator + ?Sized,
impl<T> Ord for Box<T> where
T: Ord + ?Sized,
[src][+]
T: Ord + ?Sized,
impl<T> PartialEq<Box<T>> for Box<T> where
T: PartialEq<T> + ?Sized,
[src][+]
T: PartialEq<T> + ?Sized,
impl<T> PartialOrd<Box<T>> for Box<T> where
T: PartialOrd<T> + ?Sized,
[src][+]
T: PartialOrd<T> + ?Sized,
impl<T> Pointer for Box<T> where
T: ?Sized,
[src][+]
T: ?Sized,
impl<R> Read for Box<R> where
R: Read + ?Sized,
[src][+]
R: Read + ?Sized,
impl<S> Seek for Box<S> where
S: Seek + ?Sized,
[src][+]
S: Seek + ?Sized,
impl<T, const N: usize> TryFrom<Box<[T]>> for Box<[T; N]>
1.43.0[src][+]
impl<T> Unpin for Box<T> where
T: ?Sized,
1.33.0[src]
T: ?Sized,
impl<W> Write for Box<W> where
W: Write + ?Sized,
[src][+]
W: Write + ?Sized,
Auto Trait Implementations
impl<T: ?Sized> RefUnwindSafe for Box<T> where
T: RefUnwindSafe,
T: RefUnwindSafe,
impl<T: ?Sized> Send for Box<T> where
T: Send,
T: Send,
impl<T: ?Sized> Sync for Box<T> where
T: Sync,
T: Sync,
impl<T: ?Sized> UnwindSafe for Box<T> where
T: UnwindSafe,
T: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src][+]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> From<!> for T
[src][+]
impl<T> From<T> for T
[src][+]
impl<T, U> Into<U> for T where
U: From<T>,
[src][+]
U: From<T>,
impl<F> IntoFuture for F where
F: Future,
[src][+]
F: Future,
impl<I> IntoIterator for I where
I: Iterator,
[src][+]
I: Iterator,
impl<'a, F> Pattern<'a> for F where
F: FnMut(char) -> bool,
[src][+]
F: FnMut(char) -> bool,
impl<T> ToOwned for T where
T: Clone,
[src][+]
T: Clone,
impl<T> ToString for T where
T: Display + ?Sized,
[src][+]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,