mirror of
https://github.com/rust-lang/rust.git
synced 2025-01-03 03:16:23 +00:00
Rollup merge of #45133 - GuillaumeGomez:usize-index-msg, r=dtolnay
usize index message for vec
This commit is contained in:
commit
b290568dcd
@ -121,6 +121,7 @@
|
|||||||
#![feature(unique)]
|
#![feature(unique)]
|
||||||
#![feature(unsize)]
|
#![feature(unsize)]
|
||||||
#![feature(allocator_internals)]
|
#![feature(allocator_internals)]
|
||||||
|
#![feature(on_unimplemented)]
|
||||||
|
|
||||||
#![cfg_attr(not(test), feature(fused, fn_traits, placement_new_protocol, swap_with_slice, i128))]
|
#![cfg_attr(not(test), feature(fused, fn_traits, placement_new_protocol, swap_with_slice, i128))]
|
||||||
#![cfg_attr(test, feature(test, box_heap))]
|
#![cfg_attr(test, feature(test, box_heap))]
|
||||||
|
@ -1543,6 +1543,7 @@ impl<T: Hash> Hash for Vec<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
||||||
impl<T> Index<usize> for Vec<T> {
|
impl<T> Index<usize> for Vec<T> {
|
||||||
type Output = T;
|
type Output = T;
|
||||||
|
|
||||||
@ -1554,6 +1555,7 @@ impl<T> Index<usize> for Vec<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
||||||
impl<T> IndexMut<usize> for Vec<T> {
|
impl<T> IndexMut<usize> for Vec<T> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn index_mut(&mut self, index: usize) -> &mut T {
|
fn index_mut(&mut self, index: usize) -> &mut T {
|
||||||
@ -1562,8 +1564,8 @@ impl<T> IndexMut<usize> for Vec<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
||||||
impl<T> ops::Index<ops::Range<usize>> for Vec<T> {
|
impl<T> ops::Index<ops::Range<usize>> for Vec<T> {
|
||||||
type Output = [T];
|
type Output = [T];
|
||||||
|
|
||||||
@ -1572,7 +1574,9 @@ impl<T> ops::Index<ops::Range<usize>> for Vec<T> {
|
|||||||
Index::index(&**self, index)
|
Index::index(&**self, index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
||||||
impl<T> ops::Index<ops::RangeTo<usize>> for Vec<T> {
|
impl<T> ops::Index<ops::RangeTo<usize>> for Vec<T> {
|
||||||
type Output = [T];
|
type Output = [T];
|
||||||
|
|
||||||
@ -1581,7 +1585,9 @@ impl<T> ops::Index<ops::RangeTo<usize>> for Vec<T> {
|
|||||||
Index::index(&**self, index)
|
Index::index(&**self, index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
||||||
impl<T> ops::Index<ops::RangeFrom<usize>> for Vec<T> {
|
impl<T> ops::Index<ops::RangeFrom<usize>> for Vec<T> {
|
||||||
type Output = [T];
|
type Output = [T];
|
||||||
|
|
||||||
@ -1590,7 +1596,9 @@ impl<T> ops::Index<ops::RangeFrom<usize>> for Vec<T> {
|
|||||||
Index::index(&**self, index)
|
Index::index(&**self, index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
||||||
impl<T> ops::Index<ops::RangeFull> for Vec<T> {
|
impl<T> ops::Index<ops::RangeFull> for Vec<T> {
|
||||||
type Output = [T];
|
type Output = [T];
|
||||||
|
|
||||||
@ -1599,7 +1607,9 @@ impl<T> ops::Index<ops::RangeFull> for Vec<T> {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[unstable(feature = "inclusive_range", reason = "recently added, follows RFC", issue = "28237")]
|
#[unstable(feature = "inclusive_range", reason = "recently added, follows RFC", issue = "28237")]
|
||||||
|
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
||||||
impl<T> ops::Index<ops::RangeInclusive<usize>> for Vec<T> {
|
impl<T> ops::Index<ops::RangeInclusive<usize>> for Vec<T> {
|
||||||
type Output = [T];
|
type Output = [T];
|
||||||
|
|
||||||
@ -1608,7 +1618,9 @@ impl<T> ops::Index<ops::RangeInclusive<usize>> for Vec<T> {
|
|||||||
Index::index(&**self, index)
|
Index::index(&**self, index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[unstable(feature = "inclusive_range", reason = "recently added, follows RFC", issue = "28237")]
|
#[unstable(feature = "inclusive_range", reason = "recently added, follows RFC", issue = "28237")]
|
||||||
|
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
||||||
impl<T> ops::Index<ops::RangeToInclusive<usize>> for Vec<T> {
|
impl<T> ops::Index<ops::RangeToInclusive<usize>> for Vec<T> {
|
||||||
type Output = [T];
|
type Output = [T];
|
||||||
|
|
||||||
@ -1619,41 +1631,52 @@ impl<T> ops::Index<ops::RangeToInclusive<usize>> for Vec<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
||||||
impl<T> ops::IndexMut<ops::Range<usize>> for Vec<T> {
|
impl<T> ops::IndexMut<ops::Range<usize>> for Vec<T> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn index_mut(&mut self, index: ops::Range<usize>) -> &mut [T] {
|
fn index_mut(&mut self, index: ops::Range<usize>) -> &mut [T] {
|
||||||
IndexMut::index_mut(&mut **self, index)
|
IndexMut::index_mut(&mut **self, index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
||||||
impl<T> ops::IndexMut<ops::RangeTo<usize>> for Vec<T> {
|
impl<T> ops::IndexMut<ops::RangeTo<usize>> for Vec<T> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn index_mut(&mut self, index: ops::RangeTo<usize>) -> &mut [T] {
|
fn index_mut(&mut self, index: ops::RangeTo<usize>) -> &mut [T] {
|
||||||
IndexMut::index_mut(&mut **self, index)
|
IndexMut::index_mut(&mut **self, index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
||||||
impl<T> ops::IndexMut<ops::RangeFrom<usize>> for Vec<T> {
|
impl<T> ops::IndexMut<ops::RangeFrom<usize>> for Vec<T> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn index_mut(&mut self, index: ops::RangeFrom<usize>) -> &mut [T] {
|
fn index_mut(&mut self, index: ops::RangeFrom<usize>) -> &mut [T] {
|
||||||
IndexMut::index_mut(&mut **self, index)
|
IndexMut::index_mut(&mut **self, index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
||||||
impl<T> ops::IndexMut<ops::RangeFull> for Vec<T> {
|
impl<T> ops::IndexMut<ops::RangeFull> for Vec<T> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn index_mut(&mut self, _index: ops::RangeFull) -> &mut [T] {
|
fn index_mut(&mut self, _index: ops::RangeFull) -> &mut [T] {
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[unstable(feature = "inclusive_range", reason = "recently added, follows RFC", issue = "28237")]
|
#[unstable(feature = "inclusive_range", reason = "recently added, follows RFC", issue = "28237")]
|
||||||
|
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
||||||
impl<T> ops::IndexMut<ops::RangeInclusive<usize>> for Vec<T> {
|
impl<T> ops::IndexMut<ops::RangeInclusive<usize>> for Vec<T> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn index_mut(&mut self, index: ops::RangeInclusive<usize>) -> &mut [T] {
|
fn index_mut(&mut self, index: ops::RangeInclusive<usize>) -> &mut [T] {
|
||||||
IndexMut::index_mut(&mut **self, index)
|
IndexMut::index_mut(&mut **self, index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[unstable(feature = "inclusive_range", reason = "recently added, follows RFC", issue = "28237")]
|
#[unstable(feature = "inclusive_range", reason = "recently added, follows RFC", issue = "28237")]
|
||||||
|
#[rustc_on_unimplemented = "vector indices are of type `usize` or ranges of `usize`"]
|
||||||
impl<T> ops::IndexMut<ops::RangeToInclusive<usize>> for Vec<T> {
|
impl<T> ops::IndexMut<ops::RangeToInclusive<usize>> for Vec<T> {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn index_mut(&mut self, index: ops::RangeToInclusive<usize>) -> &mut [T] {
|
fn index_mut(&mut self, index: ops::RangeToInclusive<usize>) -> &mut [T] {
|
||||||
|
15
src/test/compile-fail/index-help.rs
Normal file
15
src/test/compile-fail/index-help.rs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||||
|
// file at the top-level directory of this distribution and at
|
||||||
|
// http://rust-lang.org/COPYRIGHT.
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||||
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||||
|
// option. This file may not be copied, modified, or distributed
|
||||||
|
// except according to those terms.
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let x = vec![1];
|
||||||
|
x[0i32]; //~ ERROR E0277
|
||||||
|
//~| NOTE vector indices are of type `usize` or ranges of `usize`
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user