diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2016-07-12 12:08:23 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-07-12 12:08:23 +0200 |
| commit | f02754a2b26d56f4f5f966692b748992102d22d2 (patch) | |
| tree | 445603f81bd5642602a285652a5cd057d4a2120a /src/liballoc | |
| parent | a94e4c0f10b4ba72c44a34e826974fa5c3f69182 (diff) | |
| parent | 1ef7bdc0c7a3ad8a4b3421b3224988cbd0b1a557 (diff) | |
| download | rust-f02754a2b26d56f4f5f966692b748992102d22d2.tar.gz rust-f02754a2b26d56f4f5f966692b748992102d22d2.zip | |
Rollup merge of #34740 - GuillaumeGomez:boxed_doc, r=steveklabnik
Improve boxed docs Fixes #29343. r? @steveklabnik
Diffstat (limited to 'src/liballoc')
| -rw-r--r-- | src/liballoc/boxed.rs | 49 |
1 files changed, 46 insertions, 3 deletions
diff --git a/src/liballoc/boxed.rs b/src/liballoc/boxed.rs index 51523ca8dc6..7ba5ca30941 100644 --- a/src/liballoc/boxed.rs +++ b/src/liballoc/boxed.rs @@ -249,6 +249,14 @@ impl<T: ?Sized> Box<T> { /// 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 + /// + /// ``` + /// let x = Box::new(5); + /// let ptr = Box::into_raw(x); + /// let x = unsafe { Box::from_raw(ptr) }; + /// ``` #[stable(feature = "box_raw", since = "1.4.0")] #[inline] pub unsafe fn from_raw(raw: *mut T) -> Self { @@ -266,9 +274,8 @@ impl<T: ?Sized> Box<T> { /// # Examples /// /// ``` - /// let seventeen = Box::new(17); - /// let raw = Box::into_raw(seventeen); - /// let boxed_again = unsafe { Box::from_raw(raw) }; + /// let x = Box::new(5); + /// let ptr = Box::into_raw(x); /// ``` #[stable(feature = "box_raw", since = "1.4.0")] #[inline] @@ -399,6 +406,24 @@ impl Box<Any> { #[inline] #[stable(feature = "rust1", since = "1.0.0")] /// Attempt to downcast the box to a concrete type. + /// + /// # Examples + /// + /// ``` + /// use std::any::Any; + /// + /// fn print_if_string(value: Box<Any>) { + /// if let Ok(string) = value.downcast::<String>() { + /// println!("String ({}): {}", string.len(), string); + /// } + /// } + /// + /// fn main() { + /// let my_string = "Hello World".to_string(); + /// print_if_string(Box::new(my_string)); + /// print_if_string(Box::new(0i8)); + /// } + /// ``` pub fn downcast<T: Any>(self) -> Result<Box<T>, Box<Any>> { if self.is::<T>() { unsafe { @@ -419,6 +444,24 @@ impl Box<Any + Send> { #[inline] #[stable(feature = "rust1", since = "1.0.0")] /// Attempt to downcast the box to a concrete type. + /// + /// # Examples + /// + /// ``` + /// use std::any::Any; + /// + /// fn print_if_string(value: Box<Any + Send>) { + /// if let Ok(string) = value.downcast::<String>() { + /// println!("String ({}): {}", string.len(), string); + /// } + /// } + /// + /// fn main() { + /// let my_string = "Hello World".to_string(); + /// print_if_string(Box::new(my_string)); + /// print_if_string(Box::new(0i8)); + /// } + /// ``` pub fn downcast<T: Any>(self) -> Result<Box<T>, Box<Any + Send>> { <Box<Any>>::downcast(self).map_err(|s| unsafe { // reapply the Send marker |
