File tree 1 file changed +14
-0
lines changed
1 file changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -795,6 +795,20 @@ impl<T: ?Sized> Pin<&'static T> {
795
795
}
796
796
}
797
797
798
+ impl < T : ?Sized > Pin < & ' static T > {
799
+ /// Get a pinned mutable reference from a static mutable reference.
800
+ ///
801
+ /// This is safe, because the `'static` lifetime guarantees the data will
802
+ /// never be moved.
803
+ #[ unstable( feature = "pin_static_ref" , issue = "none" ) ]
804
+ #[ rustc_const_unstable( feature = "const_pin" , issue = "76654" ) ]
805
+ pub const fn static_mut ( r : & ' static mut T ) -> Pin < & ' static mut T > {
806
+ // SAFETY: The 'static lifetime guarantees the data will not be
807
+ // moved/invalidated until it gets dropped (which is never).
808
+ unsafe { Pin :: new_unchecked ( r) }
809
+ }
810
+ }
811
+
798
812
#[ stable( feature = "pin" , since = "1.33.0" ) ]
799
813
impl < P : Deref > Deref for Pin < P > {
800
814
type Target = P :: Target ;
You can’t perform that action at this time.
0 commit comments