@@ -1145,45 +1145,69 @@ impl<T, E: Into<!>> Result<T, E> {
11451145    } 
11461146} 
11471147
1148- #[ unstable( feature = "inner_deref" ,  reason =  "newly added" ,   issue = "50264" ) ]  
1148+ #[ unstable( feature = "inner_deref" ,  issue = "50264" ) ]  
11491149impl < T :  Deref ,  E >  Result < T ,  E >  { 
1150-     /// Converts from `Result<T, E>` (or `&Result<T, E>`) to `Result<&T ::Target, &E>`. 
1150+     /// Converts from `Result<T, E>` (or `&Result<T, E>`) to `Result<&<T as Deref> ::Target, &E>`. 
11511151/// 
1152- /// Leaves the original `Result` in-place, creating a new one containing a reference to the 
1153- /// `Ok` type's `Deref::Target` type. 
1152+ /// Coerces the [`Ok`] variant of the original [`Result`] via [`Deref`](crate::ops::Deref) 
1153+ /// and returns the new [`Result`]. 
1154+ /// 
1155+ /// # Examples 
1156+ /// 
1157+ /// ``` 
1158+ /// let x: Result<String, u32> = Ok("hello".to_string()); 
1159+ /// let y: Result<&str, &u32> = Ok("hello"); 
1160+ /// assert_eq!(x.as_deref(), y); 
1161+ /// 
1162+ /// let x: Result<String, u32> = Err(42); 
1163+ /// let y: Result<&str, &u32> = Err(&42); 
1164+ /// assert_eq!(x.as_deref(), y); 
1165+ /// ``` 
11541166pub  fn  as_deref ( & self )  -> Result < & T :: Target ,  & E >  { 
11551167        self . as_ref ( ) . map ( |t| t. deref ( ) ) 
11561168    } 
11571169} 
11581170
1159- #[ unstable( feature = "inner_deref" ,  reason =  "newly added" ,   issue = "50264" ) ]  
1171+ #[ unstable( feature = "inner_deref" ,  issue = "50264" ) ]  
11601172impl < T ,  E :  Deref >  Result < T ,  E >  { 
1161-     /// Converts from `Result<T, E>` (or `&Result<T, E>`) to `Result<&T, &E ::Target>`. 
1173+     /// Converts from `Result<T, E>` (or `&Result<T, E>`) to `Result<&T, &<E as Deref> ::Target>`. 
11621174/// 
1163- /// Leaves  the original `Result` in-place, creating a new one containing a reference to the  
1164- /// `Err` type's `Deref::Target` type . 
1175+ /// Coerces  the [`Err`] variant of the original [`Result`] via [`Deref`](crate::ops::Deref)  
1176+ /// and returns the new [`Result`] . 
11651177pub  fn  as_deref_err ( & self )  -> Result < & T ,  & E :: Target >  { 
11661178        self . as_ref ( ) . map_err ( |e| e. deref ( ) ) 
11671179    } 
11681180} 
11691181
1170- #[ unstable( feature = "inner_deref" ,  reason =  "newly added" ,   issue = "50264" ) ]  
1182+ #[ unstable( feature = "inner_deref" ,  issue = "50264" ) ]  
11711183impl < T :  DerefMut ,  E >  Result < T ,  E >  { 
1172-     /// Converts from `Result<T, E>` (or `&mut Result<T, E>`) to `Result<&mut T ::Target, &mut E>`. 
1184+     /// Converts from `Result<T, E>` (or `&mut Result<T, E>`) to `Result<&mut <T as DerefMut> ::Target, &mut E>`. 
11731185/// 
1174- /// Leaves the original `Result` in-place, creating a new one containing a mutable reference to 
1175- /// the `Ok` type's `Deref::Target` type. 
1186+ /// Coerces the [`Ok`] variant of the original [`Result`] via [`DerefMut`](crate::ops::DerefMut) 
1187+ /// and returns the new [`Result`]. 
1188+ /// 
1189+ /// # Examples 
1190+ /// 
1191+ /// ``` 
1192+ /// let mut x: Result<String, u32> = Ok("hello".to_string()); 
1193+ /// let y: Result<&mut str, &mut u32> = Ok("HELLO"); 
1194+ /// assert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y); 
1195+ /// 
1196+ /// let mut x: Result<String, u32> = Err(42); 
1197+ /// let y: Result<&mut str, &mut u32> = Err(&42); 
1198+ /// assert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y); 
1199+ /// ``` 
11761200pub  fn  as_deref_mut ( & mut  self )  -> Result < & mut  T :: Target ,  & mut  E >  { 
11771201        self . as_mut ( ) . map ( |t| t. deref_mut ( ) ) 
11781202    } 
11791203} 
11801204
1181- #[ unstable( feature = "inner_deref" ,  reason =  "newly added" ,   issue = "50264" ) ]  
1205+ #[ unstable( feature = "inner_deref" ,  issue = "50264" ) ]  
11821206impl < T ,  E :  DerefMut >  Result < T ,  E >  { 
1183-     /// Converts from `Result<T, E>` (or `&mut Result<T, E>`) to `Result<&mut T, &mut E ::Target>`. 
1207+     /// Converts from `Result<T, E>` (or `&mut Result<T, E>`) to `Result<&mut T, &mut <E as DerefMut> ::Target>`. 
11841208/// 
1185- /// Leaves  the original `Result` in-place, creating a new one containing a mutable reference to  
1186- /// the `Err` type's `Deref::Target` type . 
1209+ /// Coerces  the [`Err`] variant of the original [`Result`] via [`DerefMut`](crate::ops::DerefMut)  
1210+ /// and returns the new [`Result`] . 
11871211pub  fn  as_deref_mut_err ( & mut  self )  -> Result < & mut  T ,  & mut  E :: Target >  { 
11881212        self . as_mut ( ) . map_err ( |e| e. deref_mut ( ) ) 
11891213    } 
0 commit comments