@@ -994,8 +994,18 @@ unsafe impl<#[may_dangle] T, A: Allocator> Drop for RawVec<T, A> {
994
994
impl < A : Allocator > RawVecInner < A > {
995
995
#[ inline]
996
996
const fn new_in ( alloc : A , align : Alignment ) -> Self
997
- //@ req exists::<usize>(?elemSize) &*& thread_token(?t) &*& Allocator(t, alloc, ?alloc_id) &*& std::alloc::is_valid_layout(elemSize, NonZero::get_(Alignment::as_nonzero_(align))) == true;
998
- //@ ens thread_token(t) &*& RawVecInner(t, result, Layout::from_size_align_(elemSize, NonZero::get_(Alignment::as_nonzero_(align))), alloc_id, ?ptr, ?capacity) &*& array_at_lft_(alloc_id.lft, ptr, capacity * elemSize, _) &*& capacity * elemSize == 0;
997
+ /*@
998
+ req exists::<usize>(?elemSize) &*&
999
+ thread_token(?t) &*&
1000
+ Allocator(t, alloc, ?alloc_id) &*&
1001
+ std::alloc::is_valid_layout(elemSize, NonZero::get_(Alignment::as_nonzero_(align))) == true;
1002
+ @*/
1003
+ /*@
1004
+ ens thread_token(t) &*&
1005
+ RawVecInner(t, result, Layout::from_size_align_(elemSize, NonZero::get_(Alignment::as_nonzero_(align))), alloc_id, ?ptr, ?capacity) &*&
1006
+ array_at_lft_(alloc_id.lft, ptr, capacity * elemSize, _) &*&
1007
+ capacity * elemSize == 0;
1008
+ @*/
999
1009
//@ on_unwind_ens false;
1000
1010
//@ safety_proof { assume(false); }
1001
1011
{
@@ -1017,8 +1027,18 @@ impl<A: Allocator> RawVecInner<A> {
1017
1027
#[ inline]
1018
1028
#[ track_caller]
1019
1029
fn with_capacity_in ( capacity : usize , alloc : A , elem_layout : Layout ) -> Self
1020
- //@ req thread_token(?t) &*& Allocator(t, alloc, ?alloc_id) &*& t == currentThread &*& Layout::size_(elem_layout) % Layout::align_(elem_layout) == 0;
1021
- //@ ens thread_token(t) &*& RawVecInner(t, result, elem_layout, alloc_id, ?ptr, ?capacity_) &*& array_at_lft_(alloc_id.lft, ptr, Layout::size_(elem_layout) * capacity_, _) &*& capacity <= capacity_;
1030
+ /*@
1031
+ req thread_token(?t) &*&
1032
+ Allocator(t, alloc, ?alloc_id) &*&
1033
+ t == currentThread &*&
1034
+ Layout::size_(elem_layout) % Layout::align_(elem_layout) == 0;
1035
+ @*/
1036
+ /*@
1037
+ ens thread_token(t) &*&
1038
+ RawVecInner(t, result, elem_layout, alloc_id, ?ptr, ?capacity_) &*&
1039
+ array_at_lft_(alloc_id.lft, ptr, Layout::size_(elem_layout) * capacity_, _) &*&
1040
+ capacity <= capacity_;
1041
+ @*/
1022
1042
//@ safety_proof { assume(false); }
1023
1043
{
1024
1044
match Self :: try_allocate_in ( capacity, AllocInit :: Uninitialized , alloc, elem_layout) {
@@ -1085,16 +1105,24 @@ impl<A: Allocator> RawVecInner<A> {
1085
1105
alloc : A ,
1086
1106
elem_layout : Layout ,
1087
1107
) -> Result < Self , TryReserveError >
1088
- //@ req thread_token(?t) &*& Allocator(t, alloc, ?alloc_id) &*& t == currentThread &*& Layout::size_(elem_layout) % Layout::align_(elem_layout) == 0;
1108
+ /*@
1109
+ req thread_token(?t) &*&
1110
+ Allocator(t, alloc, ?alloc_id) &*&
1111
+ t == currentThread &*&
1112
+ Layout::size_(elem_layout) % Layout::align_(elem_layout) == 0;
1113
+ @*/
1089
1114
/*@
1090
1115
ens thread_token(t) &*&
1091
1116
match result {
1092
1117
Result::Ok(v) =>
1093
1118
RawVecInner(t, v, elem_layout, alloc_id, ?ptr, ?capacity_) &*&
1094
1119
capacity <= capacity_ &*&
1095
1120
match init {
1096
- raw_vec::AllocInit::Uninitialized => array_at_lft_(alloc_id.lft, ptr, capacity_ * Layout::size_(elem_layout), _),
1097
- raw_vec::AllocInit::Zeroed => array_at_lft(alloc_id.lft, ptr, capacity_ * Layout::size_(elem_layout), ?bs) &*& forall(bs, (eq)(0)) == true
1121
+ raw_vec::AllocInit::Uninitialized =>
1122
+ array_at_lft_(alloc_id.lft, ptr, capacity_ * Layout::size_(elem_layout), _),
1123
+ raw_vec::AllocInit::Zeroed =>
1124
+ array_at_lft(alloc_id.lft, ptr, capacity_ * Layout::size_(elem_layout), ?bs) &*&
1125
+ forall(bs, (eq)(0)) == true
1098
1126
},
1099
1127
Result::Err(e) => <std::collections::TryReserveError>.own(t, e)
1100
1128
};
@@ -1256,7 +1284,11 @@ impl<A: Allocator> RawVecInner<A> {
1256
1284
1257
1285
#[ inline]
1258
1286
const fn ptr < T > ( & self ) -> * mut T
1259
- //@ req [_]RawVecInner_share_(?k, ?t, self, ?elem_layout, ?alloc_id, ?ptr, ?capacity) &*& [?q]lifetime_token(k) &*& [_]frac_borrow(k, ref_initialized_(self));
1287
+ /*@
1288
+ req [_]RawVecInner_share_(?k, ?t, self, ?elem_layout, ?alloc_id, ?ptr, ?capacity) &*&
1289
+ [?q]lifetime_token(k) &*&
1290
+ [_]frac_borrow(k, ref_initialized_(self));
1291
+ @*/
1260
1292
//@ ens [q]lifetime_token(k) &*& result == ptr as *T;
1261
1293
//@ safety_proof { assume(false); }
1262
1294
{
@@ -1284,7 +1316,11 @@ impl<A: Allocator> RawVecInner<A> {
1284
1316
1285
1317
#[ inline]
1286
1318
const fn capacity ( & self , elem_size : usize ) -> usize
1287
- //@ req [_]RawVecInner_share_(?k, ?t, self, ?elem_layout, ?alloc_id, ?ptr, ?capacity) &*& elem_size == Layout::size_(elem_layout) &*& [?q]lifetime_token(k);
1319
+ /*@
1320
+ req [_]RawVecInner_share_(?k, ?t, self, ?elem_layout, ?alloc_id, ?ptr, ?capacity) &*&
1321
+ elem_size == Layout::size_(elem_layout) &*&
1322
+ [?q]lifetime_token(k);
1323
+ @*/
1288
1324
//@ ens [q]lifetime_token(k) &*& result == capacity;
1289
1325
//@ safety_proof { assume(false); }
1290
1326
{
@@ -1313,7 +1349,10 @@ impl<A: Allocator> RawVecInner<A> {
1313
1349
if capacity * Layout::size_(elem_layout) == 0 {
1314
1350
result == Option::None
1315
1351
} else {
1316
- result == Option::Some(std_tuple_2_::<NonNull<u8>, Layout> {0: NonNull::new_(ptr), 1: Layout::from_size_align_(capacity * Layout::size_(elem_layout), Layout::align_(elem_layout))})
1352
+ result == Option::Some(std_tuple_2_::<NonNull<u8>, Layout> {
1353
+ 0: NonNull::new_(ptr),
1354
+ 1: Layout::from_size_align_(capacity * Layout::size_(elem_layout), Layout::align_(elem_layout))
1355
+ })
1317
1356
};
1318
1357
@*/
1319
1358
//@ on_unwind_ens false;
@@ -1395,17 +1434,20 @@ impl<A: Allocator> RawVecInner<A> {
1395
1434
req thread_token(?t) &*& t == currentThread &*&
1396
1435
Layout::size_(elem_layout) % Layout::align_(elem_layout) == 0 &*&
1397
1436
*self |-> ?self0 &*&
1398
- RawVecInner(t, self0, elem_layout, ?alloc_id, ?ptr0, ?capacity0) &*& array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _);
1437
+ RawVecInner(t, self0, elem_layout, ?alloc_id, ?ptr0, ?capacity0) &*&
1438
+ array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _);
1399
1439
@*/
1400
1440
/*@
1401
1441
ens thread_token(t) &*&
1402
1442
*self |-> ?self1 &*&
1403
1443
match result {
1404
1444
Result::Ok(u) =>
1405
- RawVecInner(t, self1, elem_layout, alloc_id, ?ptr1, ?capacity1) &*& array_at_lft_(alloc_id.lft, ptr1, capacity1 * Layout::size_(elem_layout), _) &*&
1445
+ RawVecInner(t, self1, elem_layout, alloc_id, ?ptr1, ?capacity1) &*&
1446
+ array_at_lft_(alloc_id.lft, ptr1, capacity1 * Layout::size_(elem_layout), _) &*&
1406
1447
len > capacity0 || len + additional <= capacity1,
1407
1448
Result::Err(e) =>
1408
- RawVecInner(t, self1, elem_layout, alloc_id, ptr0, capacity0) &*& array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1449
+ RawVecInner(t, self1, elem_layout, alloc_id, ptr0, capacity0) &*&
1450
+ array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1409
1451
<std::collections::TryReserveError>.own(t, e)
1410
1452
};
1411
1453
@*/
@@ -1464,17 +1506,20 @@ impl<A: Allocator> RawVecInner<A> {
1464
1506
req thread_token(?t) &*& t == currentThread &*&
1465
1507
Layout::size_(elem_layout) % Layout::align_(elem_layout) == 0 &*&
1466
1508
*self |-> ?self0 &*&
1467
- RawVecInner(t, self0, elem_layout, ?alloc_id, ?ptr0, ?capacity0) &*& array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _);
1509
+ RawVecInner(t, self0, elem_layout, ?alloc_id, ?ptr0, ?capacity0) &*&
1510
+ array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _);
1468
1511
@*/
1469
1512
/*@
1470
1513
ens thread_token(t) &*&
1471
1514
*self |-> ?self1 &*&
1472
1515
match result {
1473
1516
Result::Ok(u) =>
1474
- RawVecInner(t, self1, elem_layout, alloc_id, ?ptr1, ?capacity1) &*& array_at_lft_(alloc_id.lft, ptr1, capacity1 * Layout::size_(elem_layout), _) &*&
1517
+ RawVecInner(t, self1, elem_layout, alloc_id, ?ptr1, ?capacity1) &*&
1518
+ array_at_lft_(alloc_id.lft, ptr1, capacity1 * Layout::size_(elem_layout), _) &*&
1475
1519
len > capacity0 || len + additional <= capacity1,
1476
1520
Result::Err(e) =>
1477
- RawVecInner(t, self1, elem_layout, alloc_id, ptr0, capacity0) &*& array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1521
+ RawVecInner(t, self1, elem_layout, alloc_id, ptr0, capacity0) &*&
1522
+ array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1478
1523
<std::collections::TryReserveError>.own(t, e)
1479
1524
};
1480
1525
@*/
@@ -1526,7 +1571,11 @@ impl<A: Allocator> RawVecInner<A> {
1526
1571
1527
1572
#[ inline]
1528
1573
fn needs_to_grow ( & self , len : usize , additional : usize , elem_layout : Layout ) -> bool
1529
- //@ req [_]RawVecInner_share_(?k, ?t, self, elem_layout, ?alloc_id, ?ptr, ?capacity) &*& [_]frac_borrow(k, ref_initialized_(self)) &*& [?qa]lifetime_token(k);
1574
+ /*@
1575
+ req [_]RawVecInner_share_(?k, ?t, self, elem_layout, ?alloc_id, ?ptr, ?capacity) &*&
1576
+ [_]frac_borrow(k, ref_initialized_(self)) &*&
1577
+ [?qa]lifetime_token(k);
1578
+ @*/
1530
1579
//@ ens [qa]lifetime_token(k) &*& result == (additional > std::num::wrapping_sub_usize(capacity, len));
1531
1580
//@ safety_proof { assume(false); }
1532
1581
{
@@ -1556,18 +1605,21 @@ impl<A: Allocator> RawVecInner<A> {
1556
1605
req thread_token(?t) &*& t == currentThread &*&
1557
1606
Layout::size_(elem_layout) % Layout::align_(elem_layout) == 0 &*&
1558
1607
*self |-> ?self0 &*&
1559
- RawVecInner(t, self0, elem_layout, ?alloc_id, ?ptr0, ?capacity0) &*& array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1608
+ RawVecInner(t, self0, elem_layout, ?alloc_id, ?ptr0, ?capacity0) &*&
1609
+ array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1560
1610
capacity0 < len + additional;
1561
1611
@*/
1562
1612
/*@
1563
1613
ens thread_token(t) &*&
1564
1614
*self |-> ?self1 &*&
1565
1615
match result {
1566
1616
Result::Ok(u) =>
1567
- RawVecInner(t, self1, elem_layout, alloc_id, ?ptr1, ?capacity1) &*& array_at_lft_(alloc_id.lft, ptr1, capacity1 * Layout::size_(elem_layout), _) &*&
1617
+ RawVecInner(t, self1, elem_layout, alloc_id, ?ptr1, ?capacity1) &*&
1618
+ array_at_lft_(alloc_id.lft, ptr1, capacity1 * Layout::size_(elem_layout), _) &*&
1568
1619
len + additional <= capacity1,
1569
1620
Result::Err(e) =>
1570
- RawVecInner(t, self1, elem_layout, alloc_id, ptr0, capacity0) &*& array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1621
+ RawVecInner(t, self1, elem_layout, alloc_id, ptr0, capacity0) &*&
1622
+ array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1571
1623
<std::collections::TryReserveError>.own(t, e)
1572
1624
};
1573
1625
@*/
@@ -1668,18 +1720,21 @@ impl<A: Allocator> RawVecInner<A> {
1668
1720
req thread_token(?t) &*& t == currentThread &*&
1669
1721
Layout::size_(elem_layout) % Layout::align_(elem_layout) == 0 &*&
1670
1722
*self |-> ?self0 &*&
1671
- RawVecInner(t, self0, elem_layout, ?alloc_id, ?ptr0, ?capacity0) &*& array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1723
+ RawVecInner(t, self0, elem_layout, ?alloc_id, ?ptr0, ?capacity0) &*&
1724
+ array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1672
1725
capacity0 < len + additional;
1673
1726
@*/
1674
1727
/*@
1675
1728
ens thread_token(t) &*&
1676
1729
*self |-> ?self1 &*&
1677
1730
match result {
1678
1731
Result::Ok(u) =>
1679
- RawVecInner(t, self1, elem_layout, alloc_id, ?ptr1, ?capacity1) &*& array_at_lft_(alloc_id.lft, ptr1, capacity1 * Layout::size_(elem_layout), _) &*&
1732
+ RawVecInner(t, self1, elem_layout, alloc_id, ?ptr1, ?capacity1) &*&
1733
+ array_at_lft_(alloc_id.lft, ptr1, capacity1 * Layout::size_(elem_layout), _) &*&
1680
1734
len + additional <= capacity1,
1681
1735
Result::Err(e) =>
1682
- RawVecInner(t, self1, elem_layout, alloc_id, ptr0, capacity0) &*& array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1736
+ RawVecInner(t, self1, elem_layout, alloc_id, ptr0, capacity0) &*&
1737
+ array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1683
1738
<std::collections::TryReserveError>.own(t, e)
1684
1739
};
1685
1740
@*/
@@ -1766,17 +1821,20 @@ impl<A: Allocator> RawVecInner<A> {
1766
1821
req thread_token(?t) &*& t == currentThread &*&
1767
1822
Layout::size_(elem_layout) % Layout::align_(elem_layout) == 0 &*&
1768
1823
*self |-> ?self0 &*&
1769
- RawVecInner(t, self0, elem_layout, ?alloc_id, ?ptr0, ?capacity0) &*& array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _);
1824
+ RawVecInner(t, self0, elem_layout, ?alloc_id, ?ptr0, ?capacity0) &*&
1825
+ array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _);
1770
1826
@*/
1771
1827
/*@
1772
1828
ens thread_token(t) &*&
1773
1829
*self |-> ?self1 &*&
1774
1830
match result {
1775
1831
Result::Ok(u) =>
1776
- RawVecInner(t, self1, elem_layout, alloc_id, ?ptr1, ?capacity1) &*& array_at_lft_(alloc_id.lft, ptr1, capacity1 * Layout::size_(elem_layout), _) &*&
1832
+ RawVecInner(t, self1, elem_layout, alloc_id, ?ptr1, ?capacity1) &*&
1833
+ array_at_lft_(alloc_id.lft, ptr1, capacity1 * Layout::size_(elem_layout), _) &*&
1777
1834
cap <= capacity1,
1778
1835
Result::Err(e) =>
1779
- RawVecInner(t, self1, elem_layout, alloc_id, ptr0, capacity0) &*& array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1836
+ RawVecInner(t, self1, elem_layout, alloc_id, ptr0, capacity0) &*&
1837
+ array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1780
1838
<std::collections::TryReserveError>.own(t, e)
1781
1839
};
1782
1840
@*/
@@ -1818,18 +1876,21 @@ impl<A: Allocator> RawVecInner<A> {
1818
1876
req thread_token(?t) &*& t == currentThread &*&
1819
1877
Layout::size_(elem_layout) % Layout::align_(elem_layout) == 0 &*&
1820
1878
*self |-> ?self0 &*&
1821
- RawVecInner(t, self0, elem_layout, ?alloc_id, ?ptr0, ?capacity0) &*& array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1879
+ RawVecInner(t, self0, elem_layout, ?alloc_id, ?ptr0, ?capacity0) &*&
1880
+ array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1822
1881
cap <= capacity0;
1823
1882
@*/
1824
1883
/*@
1825
1884
ens thread_token(t) &*&
1826
1885
*self |-> ?self1 &*&
1827
1886
match result {
1828
1887
Result::Ok(u) =>
1829
- RawVecInner(t, self1, elem_layout, alloc_id, ?ptr1, ?capacity1) &*& array_at_lft_(alloc_id.lft, ptr1, capacity1 * Layout::size_(elem_layout), _) &*&
1888
+ RawVecInner(t, self1, elem_layout, alloc_id, ?ptr1, ?capacity1) &*&
1889
+ array_at_lft_(alloc_id.lft, ptr1, capacity1 * Layout::size_(elem_layout), _) &*&
1830
1890
cap <= capacity1,
1831
1891
Result::Err(e) =>
1832
- RawVecInner(t, self1, elem_layout, alloc_id, ptr0, capacity0) &*& array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1892
+ RawVecInner(t, self1, elem_layout, alloc_id, ptr0, capacity0) &*&
1893
+ array_at_lft_(alloc_id.lft, ptr0, capacity0 * Layout::size_(elem_layout), _) &*&
1833
1894
<std::collections::TryReserveError>.own(t, e)
1834
1895
};
1835
1896
@*/
@@ -1936,7 +1997,12 @@ impl<A: Allocator> RawVecInner<A> {
1936
1997
/// Ideally this function would take `self` by move, but it cannot because it exists to be
1937
1998
/// called from a `Drop` impl.
1938
1999
unsafe fn deallocate ( & mut self , elem_layout : Layout )
1939
- //@ req thread_token(?t) &*& *self |-> ?self0 &*& RawVecInner(t, self0, elem_layout, ?alloc_id, ?ptr_, ?capacity) &*& array_at_lft_(alloc_id.lft, ptr_, capacity * Layout::size_(elem_layout), _);
2000
+ /*@
2001
+ req thread_token(?t) &*&
2002
+ *self |-> ?self0 &*&
2003
+ RawVecInner(t, self0, elem_layout, ?alloc_id, ?ptr_, ?capacity) &*&
2004
+ array_at_lft_(alloc_id.lft, ptr_, capacity * Layout::size_(elem_layout), _);
2005
+ @*/
1940
2006
//@ ens thread_token(t) &*& *self |-> ?self1 &*& <RawVecInner<A>>.own(t, self1);
1941
2007
//@ on_unwind_ens thread_token(t) &*& *self |-> ?self1 &*& <RawVecInner<A>>.own(t, self1);
1942
2008
{
@@ -1993,7 +2059,8 @@ req thread_token(?t) &*& t == currentThread &*&
1993
2059
match current_memory {
1994
2060
Option::None => true,
1995
2061
Option::Some(memory) =>
1996
- alloc_block_in(alloc_id, NonNull_ptr(memory.0), memory.1) &*& array_at_lft_(alloc_id.lft, NonNull_ptr(memory.0), Layout::size_(memory.1), _) &*&
2062
+ alloc_block_in(alloc_id, NonNull_ptr(memory.0), memory.1) &*&
2063
+ array_at_lft_(alloc_id.lft, NonNull_ptr(memory.0), Layout::size_(memory.1), _) &*&
1997
2064
Layout::size_(memory.1) <= Layout::size_(new_layout) &*&
1998
2065
Layout::align_(memory.1) == Layout::align_(new_layout)
1999
2066
};
@@ -2002,13 +2069,15 @@ req thread_token(?t) &*& t == currentThread &*&
2002
2069
ens thread_token(t) &*& *alloc |-> ?alloc1 &*& Allocator(t, alloc1, alloc_id) &*&
2003
2070
match result {
2004
2071
Result::Ok(ptr) =>
2005
- alloc_block_in(alloc_id, NonNull_ptr(ptr.ptr), new_layout) &*& array_at_lft_(alloc_id.lft, NonNull_ptr(ptr.ptr), Layout::size_(new_layout), _) &*&
2072
+ alloc_block_in(alloc_id, NonNull_ptr(ptr.ptr), new_layout) &*&
2073
+ array_at_lft_(alloc_id.lft, NonNull_ptr(ptr.ptr), Layout::size_(new_layout), _) &*&
2006
2074
Layout::size_(new_layout) <= isize::MAX,
2007
2075
Result::Err(e) =>
2008
2076
match current_memory {
2009
2077
Option::None => true,
2010
2078
Option::Some(memory) =>
2011
- alloc_block_in(alloc_id, NonNull_ptr(memory.0), memory.1) &*& array_at_lft_(alloc_id.lft, NonNull_ptr(memory.0), Layout::size_(memory.1), _)
2079
+ alloc_block_in(alloc_id, NonNull_ptr(memory.0), memory.1) &*&
2080
+ array_at_lft_(alloc_id.lft, NonNull_ptr(memory.0), Layout::size_(memory.1), _)
2012
2081
} &*&
2013
2082
<std::collections::TryReserveError>.own(currentThread, e)
2014
2083
};
0 commit comments