@@ -2718,6 +2718,8 @@ impl<T: ?Sized> PartialOrd for *mut T {
2718
2718
(if you also use #[may_dangle]), Send, and/or Sync") ]
2719
2719
#[ doc( hidden) ]
2720
2720
#[ repr( transparent) ]
2721
+ // FIXME: the rustc_layout_scalar_valid_range_start attr is marked as unused
2722
+ #[ cfg_attr( stage0, allow( unused_attributes) ) ]
2721
2723
#[ rustc_layout_scalar_valid_range_start( 1 ) ]
2722
2724
pub struct Unique < T : ?Sized > {
2723
2725
pointer : * const T ,
@@ -2783,6 +2785,8 @@ impl<T: ?Sized> Unique<T> {
2783
2785
/// Creates a new `Unique` if `ptr` is non-null.
2784
2786
pub fn new ( ptr : * mut T ) -> Option < Self > {
2785
2787
if !ptr. is_null ( ) {
2788
+ // FIXME: this unsafe block is actually needed
2789
+ #[ cfg_attr( stage0, allow( unused_unsafe) ) ]
2786
2790
Some ( unsafe { Unique { pointer : ptr as _ , _marker : PhantomData } } )
2787
2791
} else {
2788
2792
None
@@ -2839,20 +2843,26 @@ impl<T: ?Sized> fmt::Pointer for Unique<T> {
2839
2843
#[ unstable( feature = "ptr_internals" , issue = "0" ) ]
2840
2844
impl < ' a , T : ?Sized > From < & ' a mut T > for Unique < T > {
2841
2845
fn from ( reference : & ' a mut T ) -> Self {
2846
+ // FIXME: this unsafe block is actually needed
2847
+ #[ cfg_attr( stage0, allow( unused_unsafe) ) ]
2842
2848
unsafe { Unique { pointer : reference as * mut T , _marker : PhantomData } }
2843
2849
}
2844
2850
}
2845
2851
2846
2852
#[ unstable( feature = "ptr_internals" , issue = "0" ) ]
2847
2853
impl < ' a , T : ?Sized > From < & ' a T > for Unique < T > {
2848
2854
fn from ( reference : & ' a T ) -> Self {
2855
+ // FIXME: this unsafe block is actually needed
2856
+ #[ cfg_attr( stage0, allow( unused_unsafe) ) ]
2849
2857
unsafe { Unique { pointer : reference as * const T , _marker : PhantomData } }
2850
2858
}
2851
2859
}
2852
2860
2853
2861
#[ unstable( feature = "ptr_internals" , issue = "0" ) ]
2854
2862
impl < ' a , T : ?Sized > From < NonNull < T > > for Unique < T > {
2855
2863
fn from ( p : NonNull < T > ) -> Self {
2864
+ // FIXME: this unsafe block is actually needed
2865
+ #[ cfg_attr( stage0, allow( unused_unsafe) ) ]
2856
2866
unsafe { Unique { pointer : p. pointer , _marker : PhantomData } }
2857
2867
}
2858
2868
}
@@ -3042,6 +3052,8 @@ impl<T: ?Sized> hash::Hash for NonNull<T> {
3042
3052
impl < T : ?Sized > From < Unique < T > > for NonNull < T > {
3043
3053
#[ inline]
3044
3054
fn from ( unique : Unique < T > ) -> Self {
3055
+ // FIXME: this unsafe block is actually needed
3056
+ #[ cfg_attr( stage0, allow( unused_unsafe) ) ]
3045
3057
unsafe { NonNull { pointer : unique. pointer } }
3046
3058
}
3047
3059
}
@@ -3050,6 +3062,8 @@ impl<T: ?Sized> From<Unique<T>> for NonNull<T> {
3050
3062
impl < ' a , T : ?Sized > From < & ' a mut T > for NonNull < T > {
3051
3063
#[ inline]
3052
3064
fn from ( reference : & ' a mut T ) -> Self {
3065
+ // FIXME: this unsafe block is actually needed
3066
+ #[ cfg_attr( stage0, allow( unused_unsafe) ) ]
3053
3067
unsafe { NonNull { pointer : reference as * mut T } }
3054
3068
}
3055
3069
}
@@ -3058,6 +3072,8 @@ impl<'a, T: ?Sized> From<&'a mut T> for NonNull<T> {
3058
3072
impl < ' a , T : ?Sized > From < & ' a T > for NonNull < T > {
3059
3073
#[ inline]
3060
3074
fn from ( reference : & ' a T ) -> Self {
3075
+ // FIXME: this unsafe block is actually needed
3076
+ #[ cfg_attr( stage0, allow( unused_unsafe) ) ]
3061
3077
unsafe { NonNull { pointer : reference as * const T } }
3062
3078
}
3063
3079
}
0 commit comments