File tree Expand file tree Collapse file tree 1 file changed +23
-0
lines changed Expand file tree Collapse file tree 1 file changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -469,6 +469,29 @@ impl<T: 'static> LocalKey<Cell<T>> {
469
469
pub fn replace ( & ' static self , value : T ) -> T {
470
470
self . with ( |cell| cell. replace ( value) )
471
471
}
472
+
473
+ /// Updates the contained value using a function.
474
+ ///
475
+ /// # Examples
476
+ ///
477
+ /// ```
478
+ /// #![feature(local_key_cell_update)]
479
+ /// use std::cell::Cell;
480
+ ///
481
+ /// thread_local! {
482
+ /// static X: Cell<i32> = const { Cell::new(5) };
483
+ /// }
484
+ ///
485
+ /// X.update(|x| x + 1);
486
+ /// assert_eq!(X.get(), 6);
487
+ /// ```
488
+ #[ unstable( feature = "local_key_cell_update" , issue = "143989" ) ]
489
+ pub fn update ( & ' static self , f : impl FnOnce ( T ) -> T )
490
+ where
491
+ T : Copy ,
492
+ {
493
+ self . with ( |cell| cell. update ( f) )
494
+ }
472
495
}
473
496
474
497
impl < T : ' static > LocalKey < RefCell < T > > {
You can’t perform that action at this time.
0 commit comments