remove duplicate explanations of the ptr to ref conversion rules · patricklam/verify-rust-std@394c864 (original) (raw)

`@@ -296,24 +296,7 @@ impl<T: ?Sized> *mut T {

`

296

296

`///

`

297

297

`/// # Safety

`

298

298

`///

`

299

``

`-

/// When calling this method, you have to ensure that all of the following is true:

`

300

``

`-

///

`

301

``

`-

/// * The pointer must be properly aligned.

`

302

``

`-

///

`

303

``

`-

/// * It must be "dereferenceable" in the sense defined in [the module documentation].

`

304

``

`-

///

`

305

``

`` -

/// * The pointer must point to an initialized instance of T.

``

306

``

`-

///

`

307

``

`` -

/// * You must enforce Rust's aliasing rules, since the returned lifetime 'a is

``

308

``

`-

/// arbitrarily chosen and does not necessarily reflect the actual lifetime of the data.

`

309

``

`-

/// In particular, while this reference exists, the memory the pointer points to must

`

310

``

`` -

/// not get mutated (except inside UnsafeCell).

``

311

``

`-

///

`

312

``

`-

/// This applies even if the result of this method is unused!

`

313

``

`-

/// (The part about being initialized is not yet fully decided, but until

`

314

``

`-

/// it is, the only safe approach is to ensure that they are indeed initialized.)

`

315

``

`-

///

`

316

``

`-

/// [the module documentation]: crate::ptr#safety

`

``

299

`+

/// When calling this method, you have to ensure that the pointer is convirtible to a reference

`

317

300

`///

`

318

301

`/// # Examples

`

319

302

`///

`

`@@ -347,20 +330,9 @@ impl<T: ?Sized> *mut T {

`

347

330

`/// # Safety

`

348

331

`///

`

349

332

`/// When calling this method, you have to ensure that either the pointer is null or

`

350

``

`-

/// all of the following is true:

`

351

``

`-

///

`

352

``

`-

/// * The pointer must be properly aligned.

`

353

``

`-

///

`

354

``

`-

/// * It must be "dereferenceable" in the sense defined in [the module documentation].

`

355

``

`-

///

`

356

``

`` -

/// * You must enforce Rust's aliasing rules, since the returned lifetime 'a is

``

357

``

`-

/// arbitrarily chosen and does not necessarily reflect the actual lifetime of the data.

`

358

``

`-

/// In particular, while this reference exists, the memory the pointer points to must

`

359

``

`` -

/// not get mutated (except inside UnsafeCell).

``

360

``

`-

///

`

361

``

`-

/// This applies even if the result of this method is unused!

`

362

``

`-

///

`

363

``

`-

/// [the module documentation]: crate::ptr#safety

`

``

333

`+

/// the pointer is convirtible to a reference.

`

``

334

`` +

/// Note that because the created reference is to MaybeUninit<T>, the

``

``

335

`+

/// source pointer can point to uninitialized memory.

`

364

336

`///

`

365

337

`/// # Examples

`

366

338

`///

`

`@@ -594,7 +566,7 @@ impl<T: ?Sized> *mut T {

`

594

566

`///

`

595

567

`/// When calling this method, you have to ensure that either

`

596

568

`/// the pointer is null or

`

597

``

`-

/// the pointer is convirtible to a reference

`

``

569

`+

/// the pointer is convertible to a reference

`

598

570

`///

`

599

571

`///

`

600

572

`/// # Examples

`

`@@ -643,24 +615,8 @@ impl<T: ?Sized> *mut T {

`

643

615

`///

`

644

616

`/// # Safety

`

645

617

`///

`

646

``

`-

/// When calling this method, you have to ensure that all of the following is true:

`

647

``

`-

///

`

648

``

`-

/// * The pointer must be properly aligned.

`

649

``

`-

///

`

650

``

`-

/// * It must be "dereferenceable" in the sense defined in [the module documentation].

`

651

``

`-

///

`

652

``

`` -

/// * The pointer must point to an initialized instance of T.

``

653

``

`-

///

`

654

``

`` -

/// * You must enforce Rust's aliasing rules, since the returned lifetime 'a is

``

655

``

`-

/// arbitrarily chosen and does not necessarily reflect the actual lifetime of the data.

`

656

``

`-

/// In particular, while this reference exists, the memory the pointer points to must

`

657

``

`` -

/// not get mutated (except inside UnsafeCell).

``

658

``

`-

///

`

659

``

`-

/// This applies even if the result of this method is unused!

`

660

``

`-

/// (The part about being initialized is not yet fully decided, but until

`

661

``

`-

/// it is, the only safe approach is to ensure that they are indeed initialized.)

`

662

``

`-

///

`

663

``

`-

/// [the module documentation]: crate::ptr#safety

`

``

618

`+

/// When calling this method, you have to ensure that

`

``

619

`+

/// the pointer is convertible to a reference

`

664

620

`///

`

665

621

`/// # Examples

`

666

622

`///

`

`@@ -695,20 +651,7 @@ impl<T: ?Sized> *mut T {

`

695

651

`/// # Safety

`

696

652

`///

`

697

653

`/// When calling this method, you have to ensure that either the pointer is null or

`

698

``

`-

/// all of the following is true:

`

699

``

`-

///

`

700

``

`-

/// * The pointer must be properly aligned.

`

701

``

`-

///

`

702

``

`-

/// * It must be "dereferenceable" in the sense defined in [the module documentation].

`

703

``

`-

///

`

704

``

`` -

/// * You must enforce Rust's aliasing rules, since the returned lifetime 'a is

``

705

``

`-

/// arbitrarily chosen and does not necessarily reflect the actual lifetime of the data.

`

706

``

`-

/// In particular, while this reference exists, the memory the pointer points to must

`

707

``

`-

/// not get accessed (read or written) through any other pointer.

`

708

``

`-

///

`

709

``

`-

/// This applies even if the result of this method is unused!

`

710

``

`-

///

`

711

``

`-

/// [the module documentation]: crate::ptr#safety

`

``

654

`+

/// the pointer is convertible to a reference

`

712

655

`#[inline]

`

713

656

`#[unstable(feature = "ptr_as_uninit", issue = "75402")]

`

714

657

`#[rustc_const_unstable(feature = "const_ptr_as_ref", issue = "91822")]

`