rust: alloc: upgrade to 1.57.0 · ojeda/linux@7aaec26 (original) (raw)

`@@ -189,6 +189,7 @@ impl Box {

`

189

189

`#[cfg(not(no_global_oom_handling))]

`

190

190

`#[inline(always)]

`

191

191

`#[stable(feature = "rust1", since = "1.0.0")]

`

``

192

`+

#[must_use]

`

192

193

`pub fn new(x: T) -> Self {

`

193

194

` box x

`

194

195

`}

`

`@@ -213,6 +214,7 @@ impl Box {

`

213

214

```` /// ```


`214`

`215`

`#[cfg(not(no_global_oom_handling))]

`

`215`

`216`

`#[unstable(feature = "new_uninit", issue = "63291")]

`

``

`217`

`+

#[must_use]

`

`216`

`218`

`#[inline]

`

`217`

`219`

`pub fn new_uninit() -> Box<mem::MaybeUninit<T>> {

`

`218`

`220`

`Self::new_uninit_in(Global)

`

`@@ -239,6 +241,7 @@ impl<T> Box<T> {

`

`239`

`241`

`#[cfg(not(no_global_oom_handling))]

`

`240`

`242`

`#[inline]

`

`241`

`243`

`#[unstable(feature = "new_uninit", issue = "63291")]

`

``

`244`

`+

#[must_use]

`

`242`

`245`

`pub fn new_zeroed() -> Box<mem::MaybeUninit<T>> {

`

`243`

`246`

`Self::new_zeroed_in(Global)

`

`244`

`247`

`}

`

`@@ -247,6 +250,7 @@ impl<T> Box<T> {

`

`247`

`250`

`` /// `x` will be pinned in memory and unable to be moved.

``

`248`

`251`

`#[cfg(not(no_global_oom_handling))]

`

`249`

`252`

`#[stable(feature = "pin", since = "1.33.0")]

`

``

`253`

`+

#[must_use]

`

`250`

`254`

`#[inline(always)]

`

`251`

`255`

`pub fn pin(x: T) -> Pin<Box<T>> {

`

`252`

`256`

`(box x).into()

`

`@@ -341,6 +345,7 @@ impl<T, A: Allocator> Box<T, A> {

`

`341`

`345`

```` /// ```

342

346

`#[cfg(not(no_global_oom_handling))]

`

343

347

`#[unstable(feature = "allocator_api", issue = "32838")]

`

``

348

`+

#[must_use]

`

344

349

`#[inline]

`

345

350

`pub fn new_in(x: T, alloc: A) -> Self {

`

346

351

`let mut boxed = Self::new_uninit_in(alloc);

`

`@@ -397,6 +402,7 @@ impl<T, A: Allocator> Box<T, A> {

`

397

402

```` /// ```


`398`

`403`

`#[unstable(feature = "allocator_api", issue = "32838")]

`

`399`

`404`

`#[cfg(not(no_global_oom_handling))]

`

``

`405`

`+

#[must_use]

`

`400`

`406`

`// #[unstable(feature = "new_uninit", issue = "63291")]

`

`401`

`407`

`pub fn new_uninit_in(alloc: A) -> Box<mem::MaybeUninit<T>, A> {

`

`402`

`408`

`let layout = Layout:🆕:<mem::MaybeUninit<T>>();

`

`@@ -461,6 +467,7 @@ impl<T, A: Allocator> Box<T, A> {

`

`461`

`467`

`#[unstable(feature = "allocator_api", issue = "32838")]

`

`462`

`468`

`#[cfg(not(no_global_oom_handling))]

`

`463`

`469`

`// #[unstable(feature = "new_uninit", issue = "63291")]

`

``

`470`

`+

#[must_use]

`

`464`

`471`

`pub fn new_zeroed_in(alloc: A) -> Box<mem::MaybeUninit<T>, A> {

`

`465`

`472`

`let layout = Layout:🆕:<mem::MaybeUninit<T>>();

`

`466`

`473`

`// NOTE: Prefer match over unwrap_or_else since closure sometimes not inlineable.

`

`@@ -505,6 +512,7 @@ impl<T, A: Allocator> Box<T, A> {

`

`505`

`512`

`` /// `x` will be pinned in memory and unable to be moved.

``

`506`

`513`

`#[cfg(not(no_global_oom_handling))]

`

`507`

`514`

`#[unstable(feature = "allocator_api", issue = "32838")]

`

``

`515`

`+

#[must_use]

`

`508`

`516`

`#[inline(always)]

`

`509`

`517`

`pub fn pin_in(x: T, alloc: A) -> Pin<Self>

`

`510`

`518`

`where

`

`@@ -563,6 +571,7 @@ impl<T> Box<[T]> {

`

`563`

`571`

```` /// ```

564

572

`#[cfg(not(no_global_oom_handling))]

`

565

573

`#[unstable(feature = "new_uninit", issue = "63291")]

`

``

574

`+

#[must_use]

`

566

575

`pub fn new_uninit_slice(len: usize) -> Box<[mem::MaybeUninit]> {

`

567

576

`unsafe { RawVec::with_capacity(len).into_box(len) }

`

568

577

`}

`

`@@ -587,6 +596,7 @@ impl Box<[T]> {

`

587

596

`/// [zeroed]: mem::MaybeUninit::zeroed

`

588

597

`#[cfg(not(no_global_oom_handling))]

`

589

598

`#[unstable(feature = "new_uninit", issue = "63291")]

`

``

599

`+

#[must_use]

`

590

600

`pub fn new_zeroed_slice(len: usize) -> Box<[mem::MaybeUninit]> {

`

591

601

`unsafe { RawVec::with_capacity_zeroed(len).into_box(len) }

`

592

602

`}

`

`@@ -683,6 +693,7 @@ impl<T, A: Allocator> Box<[T], A> {

`

683

693

`#[cfg(not(no_global_oom_handling))]

`

684

694

`#[unstable(feature = "allocator_api", issue = "32838")]

`

685

695

`// #[unstable(feature = "new_uninit", issue = "63291")]

`

``

696

`+

#[must_use]

`

686

697

`pub fn new_uninit_slice_in(len: usize, alloc: A) -> Box<[mem::MaybeUninit], A> {

`

687

698

`unsafe { RawVec::with_capacity_in(len, alloc).into_box(len) }

`

688

699

`}

`

`@@ -710,6 +721,7 @@ impl<T, A: Allocator> Box<[T], A> {

`

710

721

`#[cfg(not(no_global_oom_handling))]

`

711

722

`#[unstable(feature = "allocator_api", issue = "32838")]

`

712

723

`// #[unstable(feature = "new_uninit", issue = "63291")]

`

``

724

`+

#[must_use]

`

713

725

`pub fn new_zeroed_slice_in(len: usize, alloc: A) -> Box<[mem::MaybeUninit], A> {

`

714

726

`unsafe { RawVec::with_capacity_zeroed_in(len, alloc).into_box(len) }

`

715

727

`}

`

`@@ -1088,6 +1100,7 @@ unsafe impl<#[may_dangle] T: ?Sized, A: Allocator> Drop for Box<T, A> {

`

1088

1100

`}

`

1089

1101

`}

`

1090

1102

``

``

1103

`+

#[cfg(not(no_global_oom_handling))]

`

1091

1104

`#[stable(feature = "rust1", since = "1.0.0")]

`

1092

1105

`impl<T: Default> Default for Box {

`

1093

1106

`` /// Creates a Box<T>, with the Default value for T.

``

`@@ -1278,6 +1291,7 @@ impl From for Box {

`

1278

1291

`/// from the stack into it.

`

1279

1292

`///

`

1280

1293

`/// # Examples

`

``

1294

`+

///

`

1281

1295

```` /// ```rust


`1282`

`1296`

`/// let x = 5;

`

`1283`

`1297`

`/// let boxed = Box::new(5);

`

`@@ -1331,6 +1345,12 @@ impl<T: Copy> From<&[T]> for Box<[T]> {

`

`1331`

`1345`

`#[cfg(not(no_global_oom_handling))]

`

`1332`

`1346`

`#[stable(feature = "box_from_cow", since = "1.45.0")]

`

`1333`

`1347`

`impl<T: Copy> From<Cow<'_, [T]>> for Box<[T]> {

`

``

`1348`

`` +

/// Converts a `Cow<'_, [T]>` into a `Box<[T]>`

``

``

`1349`

`+

///

`

``

`1350`

`` +

/// When `cow` is the `Cow::Borrowed` variant, this

``

``

`1351`

`+

/// conversion allocates on the heap and copies the

`

``

`1352`

`+

/// underlying slice. Otherwise, it will try to reuse the owned

`

``

`1353`

`` +

/// `Vec`'s allocation.

``

`1334`

`1354`

`#[inline]

`

`1335`

`1355`

`fn from(cow: Cow<'_, [T]>) -> Box<[T]> {

`

`1336`

`1356`

`match cow {

`

`@@ -1349,6 +1369,7 @@ impl From<&str> for Box<str> {

`

`1349`

`1369`

`` /// and performs a copy of `s`.

``

`1350`

`1370`

`///

`

`1351`

`1371`

`/// # Examples

`

``

`1372`

`+

///

`

`1352`

`1373`

```` /// ```rust

1353

1374

`/// let boxed: Box = Box::from("hello");

`

1354

1375

`/// println!("{}", boxed);

`

`@@ -1362,6 +1383,29 @@ impl From<&str> for Box {

`

1362

1383

`#[cfg(not(no_global_oom_handling))]

`

1363

1384

`#[stable(feature = "box_from_cow", since = "1.45.0")]

`

1364

1385

`impl From<Cow<'_, str>> for Box {

`

``

1386

`` +

/// Converts a Cow<'_, str> into a Box<str>

``

``

1387

`+

///

`

``

1388

`` +

/// When cow is the Cow::Borrowed variant, this

``

``

1389

`+

/// conversion allocates on the heap and copies the

`

``

1390

`` +

/// underlying str. Otherwise, it will try to reuse the owned

``

``

1391

`` +

/// String's allocation.

``

``

1392

`+

///

`

``

1393

`+

/// # Examples

`

``

1394

`+

///

`

``

1395


/// ```rust

``

1396

`+

/// use std::borrow::Cow;

`

``

1397

`+

///

`

``

1398

`+

/// let unboxed = Cow::Borrowed("hello");

`

``

1399

`+

/// let boxed: Box = Box::from(unboxed);

`

``

1400

`+

/// println!("{}", boxed);

`

``

1401


/// ```

``

1402

`+

///

`

``

1403


/// ```rust

``

1404

`+

/// # use std::borrow::Cow;

`

``

1405

`+

/// let unboxed = Cow::Owned("hello".to_string());

`

``

1406

`+

/// let boxed: Box = Box::from(unboxed);

`

``

1407

`+

/// println!("{}", boxed);

`

``

1408


/// ```

1365

1409

`#[inline]

`

1366

1410

`fn from(cow: Cow<'_, str>) -> Box {

`

1367

1411

`match cow {

`

`@@ -1396,13 +1440,15 @@ impl<A: Allocator> From<Box<str, A>> for Box<[u8], A> {

`

1396

1440

`}

`

1397

1441

`}

`

1398

1442

``

``

1443

`+

#[cfg(not(no_global_oom_handling))]

`

1399

1444

`#[stable(feature = "box_from_array", since = "1.45.0")]

`

1400

1445

`impl<T, const N: usize> From<[T; N]> for Box<[T]> {

`

1401

1446

`` /// Converts a [T; N] into a Box<[T]>

``

1402

1447

`///

`

1403

1448

`/// This conversion moves the array to newly heap-allocated memory.

`

1404

1449

`///

`

1405

1450

`/// # Examples

`

``

1451

`+

///

`

1406

1452

```` /// ```rust

````

1407

1453

`/// let boxed: Box<[u8]> = Box::from([4, 2]);

`

1408

1454

`/// println!("{:?}", boxed);

`

`@@ -1416,6 +1462,15 @@ impl<T, const N: usize> From<[T; N]> for Box<[T]> {

`

1416

1462

`impl<T, const N: usize> TryFrom<Box<[T]>> for Box<[T; N]> {

`

1417

1463

`type Error = Box<[T]>;

`

1418

1464

``

``

1465

`` +

/// Attempts to convert a Box<[T]> into a Box<[T; N]>.

``

``

1466

`+

///

`

``

1467

`+

/// The conversion occurs in-place and does not require a

`

``

1468

`+

/// new memory allocation.

`

``

1469

`+

///

`

``

1470

`+

/// # Errors

`

``

1471

`+

///

`

``

1472

`` +

/// Returns the old Box<[T]> in the Err variant if

``

``

1473

`` +

/// boxed_slice.len() does not equal N.

``

1419

1474

`fn try_from(boxed_slice: Box<[T]>) -> Result<Self, Self::Error> {

`

1420

1475

`if boxed_slice.len() == N {

`

1421

1476

`Ok(unsafe { Box::from_raw(Box::into_raw(boxed_slice) as *mut [T; N]) })

`