@@ -1272,19 +1272,19 @@ impl<T> ops::SliceMut<uint, [T]> for Vec<T> {
1272
1272
}
1273
1273
}
1274
1274
1275
- #[ experimental = "waiting on Deref stability" ]
1275
+ #[ stable ]
1276
1276
impl < T > ops:: Deref for Vec < T > {
1277
1277
type Target = [ T ] ;
1278
1278
1279
1279
fn deref < ' a > ( & ' a self ) -> & ' a [ T ] { self . as_slice ( ) }
1280
1280
}
1281
1281
1282
- #[ experimental = "waiting on DerefMut stability" ]
1282
+ #[ stable ]
1283
1283
impl < T > ops:: DerefMut for Vec < T > {
1284
1284
fn deref_mut < ' a > ( & ' a mut self ) -> & ' a mut [ T ] { self . as_mut_slice ( ) }
1285
1285
}
1286
1286
1287
- #[ experimental = "waiting on FromIterator stability" ]
1287
+ #[ stable ]
1288
1288
impl < T > FromIterator < T > for Vec < T > {
1289
1289
#[ inline]
1290
1290
fn from_iter < I : Iterator < Item =T > > ( mut iterator : I ) -> Vec < T > {
@@ -1414,6 +1414,7 @@ impl<T> AsSlice<T> for Vec<T> {
1414
1414
}
1415
1415
}
1416
1416
1417
+ #[ unstable = "recent addition, needs more experience" ]
1417
1418
impl < ' a , T : Clone > Add < & ' a [ T ] > for Vec < T > {
1418
1419
type Output = Vec < T > ;
1419
1420
@@ -1425,6 +1426,7 @@ impl<'a, T: Clone> Add<&'a [T]> for Vec<T> {
1425
1426
}
1426
1427
1427
1428
#[ unsafe_destructor]
1429
+ #[ stable]
1428
1430
impl < T > Drop for Vec < T > {
1429
1431
fn drop ( & mut self ) {
1430
1432
// This is (and should always remain) a no-op if the fields are
@@ -1470,6 +1472,7 @@ impl<'a> fmt::Writer for Vec<u8> {
1470
1472
/// A clone-on-write vector
1471
1473
pub type CowVec < ' a , T > = Cow < ' a , Vec < T > , [ T ] > ;
1472
1474
1475
+ #[ unstable]
1473
1476
impl < ' a , T > FromIterator < T > for CowVec < ' a , T > where T : Clone {
1474
1477
fn from_iter < I : Iterator < Item =T > > ( it : I ) -> CowVec < ' a , T > {
1475
1478
Cow :: Owned ( FromIterator :: from_iter ( it) )
@@ -1515,6 +1518,7 @@ impl<T> IntoIter<T> {
1515
1518
}
1516
1519
}
1517
1520
1521
+ #[ stable]
1518
1522
impl < T > Iterator for IntoIter < T > {
1519
1523
type Item = T ;
1520
1524
@@ -1551,6 +1555,7 @@ impl<T> Iterator for IntoIter<T> {
1551
1555
}
1552
1556
}
1553
1557
1558
+ #[ stable]
1554
1559
impl < T > DoubleEndedIterator for IntoIter < T > {
1555
1560
#[ inline]
1556
1561
fn next_back < ' a > ( & ' a mut self ) -> Option < T > {
@@ -1574,9 +1579,11 @@ impl<T> DoubleEndedIterator for IntoIter<T> {
1574
1579
}
1575
1580
}
1576
1581
1582
+ #[ stable]
1577
1583
impl < T > ExactSizeIterator for IntoIter < T > { }
1578
1584
1579
1585
#[ unsafe_destructor]
1586
+ #[ stable]
1580
1587
impl < T > Drop for IntoIter < T > {
1581
1588
fn drop ( & mut self ) {
1582
1589
// destroy the remaining elements
@@ -1598,6 +1605,7 @@ pub struct Drain<'a, T> {
1598
1605
marker : ContravariantLifetime < ' a > ,
1599
1606
}
1600
1607
1608
+ #[ stable]
1601
1609
impl < ' a , T > Iterator for Drain < ' a , T > {
1602
1610
type Item = T ;
1603
1611
@@ -1634,6 +1642,7 @@ impl<'a, T> Iterator for Drain<'a, T> {
1634
1642
}
1635
1643
}
1636
1644
1645
+ #[ stable]
1637
1646
impl < ' a , T > DoubleEndedIterator for Drain < ' a , T > {
1638
1647
#[ inline]
1639
1648
fn next_back ( & mut self ) -> Option < T > {
@@ -1657,9 +1666,11 @@ impl<'a, T> DoubleEndedIterator for Drain<'a, T> {
1657
1666
}
1658
1667
}
1659
1668
1669
+ #[ stable]
1660
1670
impl < ' a , T > ExactSizeIterator for Drain < ' a , T > { }
1661
1671
1662
1672
#[ unsafe_destructor]
1673
+ #[ stable]
1663
1674
impl < ' a , T > Drop for Drain < ' a , T > {
1664
1675
fn drop ( & mut self ) {
1665
1676
// self.ptr == self.end == null if drop has already been called,
@@ -1692,7 +1703,7 @@ impl<'a, T> Deref for DerefVec<'a, T> {
1692
1703
1693
1704
// Prevent the inner `Vec<T>` from attempting to deallocate memory.
1694
1705
#[ unsafe_destructor]
1695
- #[ experimental ]
1706
+ #[ stable ]
1696
1707
impl < ' a , T > Drop for DerefVec < ' a , T > {
1697
1708
fn drop ( & mut self ) {
1698
1709
self . x . len = 0 ;
0 commit comments