@@ -184,11 +184,13 @@ impl<T> OnceCell<T> {
184
184
///
185
185
/// let mut cell = OnceCell::new();
186
186
/// let value = cell.get_mut_or_init(|| 92);
187
- /// assert_eq!(value, &92);
187
+ /// assert_eq!(*value, 92);
188
+ ///
188
189
/// *value += 2;
189
- /// assert_eq!(value, &94);
190
+ /// assert_eq!(*value, 94);
191
+ ///
190
192
/// let value = cell.get_mut_or_init(|| unreachable!());
191
- /// assert_eq!(value, & 94);
193
+ /// assert_eq!(* value, 94);
192
194
/// ```
193
195
#[ inline]
194
196
#[ unstable( feature = "once_cell_get_mut" , issue = "121641" ) ]
@@ -259,15 +261,16 @@ impl<T> OnceCell<T> {
259
261
///
260
262
/// use std::cell::OnceCell;
261
263
///
262
- /// let mut cell = OnceCell::new();
263
- /// assert_eq!(cell.get_mut_or_try_init(|| Err(())), Err(()));
264
+ /// let mut cell: OnceCell<u32> = OnceCell::new();
265
+ ///
266
+ /// // Failed initializers do not change the value
267
+ /// assert!(cell.get_mut_or_try_init(|| "not a number!".parse()).is_err());
264
268
/// assert!(cell.get().is_none());
265
- /// let value = cell.get_mut_or_try_init(|| -> Result<i32, ()> {
266
- /// Ok(92)
267
- /// });
268
- /// assert_eq!(value, Ok(&mut 92));
269
+ ///
270
+ /// let value = cell.get_mut_or_try_init(|| "1234".parse());
271
+ /// assert_eq!(value, Ok(&mut 1234));
269
272
/// *value.unwrap() += 2;
270
- /// assert_eq!(cell.get(), Some(&94 ))
273
+ /// assert_eq!(cell.get(), Some(&1236 ))
271
274
/// ```
272
275
#[ unstable( feature = "once_cell_get_mut" , issue = "121641" ) ]
273
276
pub fn get_mut_or_try_init < F , E > ( & mut self , f : F ) -> Result < & mut T , E >
0 commit comments