Add 'from_ref' and 'from_mut' constructors to 'core::ptr::NonNull'; · qinheping/verify-rust-std@9b4776b (original) (raw)
`@@ -230,6 +230,24 @@ impl<T: ?Sized> NonNull {
`
230
230
`}
`
231
231
`}
`
232
232
``
``
233
`` +
/// Converts a reference to a NonNull
pointer.
``
``
234
`+
#[unstable(feature = "non_null_from_ref", issue = "130823")]
`
``
235
`+
#[rustc_const_unstable(feature = "non_null_from_ref", issue = "130823")]
`
``
236
`+
#[inline]
`
``
237
`+
pub const fn from_ref(r: &T) -> Self {
`
``
238
`+
// SAFETY: A reference cannot be null.
`
``
239
`+
unsafe { NonNull { pointer: r as *const T } }
`
``
240
`+
}
`
``
241
+
``
242
`` +
/// Converts a mutable reference to a NonNull
pointer.
``
``
243
`+
#[unstable(feature = "non_null_from_ref", issue = "130823")]
`
``
244
`+
#[rustc_const_unstable(feature = "non_null_from_ref", issue = "130823")]
`
``
245
`+
#[inline]
`
``
246
`+
pub const fn from_mut(r: &mut T) -> Self {
`
``
247
`+
// SAFETY: A mutable reference cannot be null.
`
``
248
`+
unsafe { NonNull { pointer: r as *mut T } }
`
``
249
`+
}
`
``
250
+
233
251
`` /// Performs the same functionality as [std::ptr::from_raw_parts
], except that a
``
234
252
`` /// NonNull
pointer is returned, as opposed to a raw *const
pointer.
``
235
253
`///
`
`@@ -1753,9 +1771,8 @@ impl<T: ?Sized> From<&mut T> for NonNull {
`
1753
1771
`///
`
1754
1772
`/// This conversion is safe and infallible since references cannot be null.
`
1755
1773
`#[inline]
`
1756
``
`-
fn from(reference: &mut T) -> Self {
`
1757
``
`-
// SAFETY: A mutable reference cannot be null.
`
1758
``
`-
unsafe { NonNull { pointer: reference as *mut T } }
`
``
1774
`+
fn from(r: &mut T) -> Self {
`
``
1775
`+
NonNull::from_mut(r)
`
1759
1776
`}
`
1760
1777
`}
`
1761
1778
``
`@@ -1765,8 +1782,7 @@ impl<T: ?Sized> From<&T> for NonNull {
`
1765
1782
`///
`
1766
1783
`/// This conversion is safe and infallible since references cannot be null.
`
1767
1784
`#[inline]
`
1768
``
`-
fn from(reference: &T) -> Self {
`
1769
``
`-
// SAFETY: A reference cannot be null.
`
1770
``
`-
unsafe { NonNull { pointer: reference as *const T } }
`
``
1785
`+
fn from(r: &T) -> Self {
`
``
1786
`+
NonNull::from_ref(r)
`
1771
1787
`}
`
1772
1788
`}
`