Auto merge of #141366 - matthiaskrgr:rollup-utvtyy3, r=matthiaskrgr · rust-lang/rust@5df0f72 (original) (raw)
`@@ -1312,6 +1312,8 @@ impl<T, A: Allocator> VecDeque<T, A> {
`
1312
1312
`///
`
1313
1313
`` /// If [make_contiguous
] was previously called, all elements of the
``
1314
1314
`/// deque will be in the first slice and the second slice will be empty.
`
``
1315
`+
/// Otherwise, the exact split point depends on implementation details
`
``
1316
`+
/// and is not guaranteed.
`
1315
1317
`///
`
1316
1318
`` /// [make_contiguous
]: VecDeque::make_contiguous
``
1317
1319
`///
`
`@@ -1326,12 +1328,18 @@ impl<T, A: Allocator> VecDeque<T, A> {
`
1326
1328
`/// deque.push_back(1);
`
1327
1329
`/// deque.push_back(2);
`
1328
1330
`///
`
1329
``
`-
/// assert_eq!(deque.as_slices(), (&[0, 1, 2][..], &[][..]));
`
``
1331
`+
/// let expected = [0, 1, 2];
`
``
1332
`+
/// let (front, back) = deque.as_slices();
`
``
1333
`+
/// assert_eq!(&expected[..front.len()], front);
`
``
1334
`+
/// assert_eq!(&expected[front.len()..], back);
`
1330
1335
`///
`
1331
1336
`/// deque.push_front(10);
`
1332
1337
`/// deque.push_front(9);
`
1333
1338
`///
`
1334
``
`-
/// assert_eq!(deque.as_slices(), (&[9, 10][..], &[0, 1, 2][..]));
`
``
1339
`+
/// let expected = [9, 10, 0, 1, 2];
`
``
1340
`+
/// let (front, back) = deque.as_slices();
`
``
1341
`+
/// assert_eq!(&expected[..front.len()], front);
`
``
1342
`+
/// assert_eq!(&expected[front.len()..], back);
`
1335
1343
```` /// ```
`1336`
`1344`
`#[inline]
`
`1337`
`1345`
`#[stable(feature = "deque_extras_15", since = "1.5.0")]
`
`@@ -1347,6 +1355,8 @@ impl<T, A: Allocator> VecDeque<T, A> {
`
`1347`
`1355`
`///
`
`1348`
`1356`
`` /// If [`make_contiguous`] was previously called, all elements of the
``
`1349`
`1357`
`/// deque will be in the first slice and the second slice will be empty.
`
``
`1358`
`+
/// Otherwise, the exact split point depends on implementation details
`
``
`1359`
`+
/// and is not guaranteed.
`
`1350`
`1360`
`///
`
`1351`
`1361`
`` /// [`make_contiguous`]: VecDeque::make_contiguous
``
`1352`
`1362`
`///
`
`@@ -1363,9 +1373,22 @@ impl<T, A: Allocator> VecDeque<T, A> {
`
`1363`
`1373`
`/// deque.push_front(10);
`
`1364`
`1374`
`/// deque.push_front(9);
`
`1365`
`1375`
`///
`
`1366`
``
`-
/// deque.as_mut_slices().0[0] = 42;
`
`1367`
``
`-
/// deque.as_mut_slices().1[0] = 24;
`
`1368`
``
`-
/// assert_eq!(deque.as_slices(), (&[42, 10][..], &[24, 1][..]));
`
``
`1376`
`+
/// // Since the split point is not guaranteed, we may need to update
`
``
`1377`
`+
/// // either slice.
`
``
`1378`
`+
/// let mut update_nth = |index: usize, val: u32| {
`
``
`1379`
`+
/// let (front, back) = deque.as_mut_slices();
`
``
`1380`
`+
/// if index > front.len() - 1 {
`
``
`1381`
`+
/// back[index - front.len()] = val;
`
``
`1382`
`+
/// } else {
`
``
`1383`
`+
/// front[index] = val;
`
``
`1384`
`+
/// }
`
``
`1385`
`+
/// };
`
``
`1386`
`+
///
`
``
`1387`
`+
/// update_nth(0, 42);
`
``
`1388`
`+
/// update_nth(2, 24);
`
``
`1389`
`+
///
`
``
`1390`
`+
/// let v: Vec<_> = deque.into();
`
``
`1391`
`+
/// assert_eq!(v, [42, 10, 24, 1]);
`
`1369`
`1392`
```` /// ```
1370
1393
`#[inline]
`
1371
1394
`#[stable(feature = "deque_extras_15", since = "1.5.0")]
`