Skip to content

Commit 3bf4056

Browse files
committed
Fallout from mut slices
1 parent 4e2afb0 commit 3bf4056

27 files changed

+65
-66
lines changed

src/libcollections/slice.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ use core::iter::{range_step, MultiplicativeIterator};
9494
use core::kinds::Sized;
9595
use core::mem::size_of;
9696
use core::mem;
97-
use core::ops::FnMut;
97+
use core::ops::{FnMut,SliceMut};
9898
use core::prelude::{Clone, Greater, Iterator, IteratorExt, Less, None, Option};
9999
use core::prelude::{Ord, Ordering, RawPtr, Some, range};
100100
use core::ptr;
@@ -1110,7 +1110,7 @@ impl<T> SliceExt<T> for [T] {
11101110

11111111
#[inline]
11121112
fn move_from(&mut self, mut src: Vec<T>, start: uint, end: uint) -> uint {
1113-
for (a, b) in self.iter_mut().zip(src[mut start..end].iter_mut()) {
1113+
for (a, b) in self.iter_mut().zip(src.slice_mut(start, end).iter_mut()) {
11141114
mem::swap(a, b);
11151115
}
11161116
cmp::min(self.len(), end-start)
@@ -1326,7 +1326,7 @@ impl<T> BorrowFrom<Vec<T>> for [T] {
13261326

13271327
#[unstable = "trait is unstable"]
13281328
impl<T> BorrowFromMut<Vec<T>> for [T] {
1329-
fn borrow_from_mut(owned: &mut Vec<T>) -> &mut [T] { owned[mut] }
1329+
fn borrow_from_mut(owned: &mut Vec<T>) -> &mut [T] { owned.as_mut_slice_() }
13301330
}
13311331

13321332
#[unstable = "trait is unstable"]
@@ -2491,14 +2491,14 @@ mod tests {
24912491
assert!(a == [7i,2,3,4]);
24922492
let mut a = [1i,2,3,4,5];
24932493
let b = vec![5i,6,7,8,9,0];
2494-
assert_eq!(a[mut 2..4].move_from(b,1,6), 2);
2494+
assert_eq!(a.slice_mut(2, 4).move_from(b,1,6), 2);
24952495
assert!(a == [1i,2,6,7,5]);
24962496
}
24972497

24982498
#[test]
24992499
fn test_reverse_part() {
25002500
let mut values = [1i,2,3,4,5];
2501-
values[mut 1..4].reverse();
2501+
values.slice_mut(1, 4).reverse();
25022502
assert!(values == [1,4,3,2,5]);
25032503
}
25042504

@@ -2545,9 +2545,9 @@ mod tests {
25452545
fn test_bytes_set_memory() {
25462546
use slice::bytes::MutableByteVector;
25472547
let mut values = [1u8,2,3,4,5];
2548-
values[mut 0..5].set_memory(0xAB);
2548+
values.slice_mut(0, 5).set_memory(0xAB);
25492549
assert!(values == [0xAB, 0xAB, 0xAB, 0xAB, 0xAB]);
2550-
values[mut 2..4].set_memory(0xFF);
2550+
values.slice_mut(2, 4).set_memory(0xFF);
25512551
assert!(values == [0xAB, 0xAB, 0xFF, 0xFF, 0xAB]);
25522552
}
25532553

src/libcore/fmt/float.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ pub fn float_to_str_bytes_common<T: Float, U, F>(
179179
_ => ()
180180
}
181181

182-
buf[mut ..end].reverse();
182+
buf.slice_to_mut(end).reverse();
183183

184184
// Remember start of the fractional digits.
185185
// Points one beyond end of buf if none get generated,
@@ -316,7 +316,7 @@ pub fn float_to_str_bytes_common<T: Float, U, F>(
316316

317317
impl<'a> fmt::FormatWriter for Filler<'a> {
318318
fn write(&mut self, bytes: &[u8]) -> fmt::Result {
319-
slice::bytes::copy_memory(self.buf[mut *self.end..],
319+
slice::bytes::copy_memory(self.buf.slice_from_mut(*self.end),
320320
bytes);
321321
*self.end += bytes.len();
322322
Ok(())

src/libcore/slice.rs

+10-9
Original file line numberDiff line numberDiff line change
@@ -264,24 +264,26 @@ impl<T> SliceExt<T> for [T] {
264264
fn as_mut_slice(&mut self) -> &mut [T] { self }
265265

266266
fn slice_mut(&mut self, start: uint, end: uint) -> &mut [T] {
267-
self[mut start..end]
267+
ops::SliceMut::slice_or_fail_mut(self, &start, &end)
268268
}
269269

270270
#[inline]
271271
fn slice_from_mut(&mut self, start: uint) -> &mut [T] {
272-
self[mut start..]
272+
ops::SliceMut::slice_from_or_fail_mut(self, &start)
273273
}
274274

275275
#[inline]
276276
fn slice_to_mut(&mut self, end: uint) -> &mut [T] {
277-
self[mut ..end]
277+
ops::SliceMut::slice_to_or_fail_mut(self, &end)
278278
}
279279

280280
#[inline]
281281
fn split_at_mut(&mut self, mid: uint) -> (&mut [T], &mut [T]) {
282282
unsafe {
283283
let self2: &mut [T] = mem::transmute_copy(&self);
284-
(self[mut ..mid], self2[mut mid..])
284+
285+
(ops::SliceMut::slice_to_or_fail_mut(self, &mid),
286+
ops::SliceMut::slice_from_or_fail_mut(self2, &mid))
285287
}
286288
}
287289

@@ -315,14 +317,13 @@ impl<T> SliceExt<T> for [T] {
315317

316318
#[inline]
317319
fn tail_mut(&mut self) -> &mut [T] {
318-
let len = self.len();
319-
self[mut 1..len]
320+
self.slice_from_mut(1)
320321
}
321322

322323
#[inline]
323324
fn init_mut(&mut self) -> &mut [T] {
324325
let len = self.len();
325-
self[mut 0..len - 1]
326+
self.slice_to_mut(len-1)
326327
}
327328

328329
#[inline]
@@ -560,7 +561,7 @@ impl<T: Ord> OrdSliceExt<T> for [T] {
560561
self.swap(j, i-1);
561562

562563
// Step 4: Reverse the (previously) weakly decreasing part
563-
self[mut i..].reverse();
564+
self.slice_from_mut(i).reverse();
564565

565566
true
566567
}
@@ -582,7 +583,7 @@ impl<T: Ord> OrdSliceExt<T> for [T] {
582583
}
583584

584585
// Step 2: Reverse the weakly increasing part
585-
self[mut i..].reverse();
586+
self.slice_from_mut(i).reverse();
586587

587588
// Step 3: Find the rightmost element equal to or bigger than the pivot (i-1)
588589
let mut j = self.len() - 1;

src/libcore/str/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -897,6 +897,7 @@ impl<'a> Iterator<&'a str> for SplitStr<'a> {
897897
}
898898
}
899899

900+
900901
/*
901902
Section: Comparing strings
902903
*/

src/libcoretest/ops.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// except according to those terms.
1010

1111
use test::Bencher;
12-
use core::ops::{Range, FullRange, RangeFrom};
12+
use core::ops::{Range, FullRange, RangeFrom, RangeTo};
1313

1414
// Overhead of dtors
1515

src/librbml/io.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ impl Writer for SeekableMemWriter {
102102

103103
// Do the necessary writes
104104
if left.len() > 0 {
105-
slice::bytes::copy_memory(self.buf[mut self.pos..], left);
105+
slice::bytes::copy_memory(self.buf.slice_from_mut(self.pos), left);
106106
}
107107
if right.len() > 0 {
108108
self.buf.push_all(right);

src/librustc/middle/region.rs

+1
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,7 @@ fn resolve_expr(visitor: &mut RegionResolutionVisitor, expr: &ast::Expr) {
485485

486486
let prev_cx = visitor.cx;
487487
visitor.cx.parent = Some(expr.id);
488+
488489
{
489490
let region_maps = &mut visitor.region_maps;
490491
let terminating = |id| {

src/librustc_back/sha2.rs

+14-14
Original file line numberDiff line numberDiff line change
@@ -139,14 +139,14 @@ impl FixedBuffer for FixedBuffer64 {
139139
let buffer_remaining = size - self.buffer_idx;
140140
if input.len() >= buffer_remaining {
141141
copy_memory(
142-
self.buffer[mut self.buffer_idx..size],
142+
self.buffer.slice_mut(self.buffer_idx, size),
143143
input[..buffer_remaining]);
144144
self.buffer_idx = 0;
145145
func(&self.buffer);
146146
i += buffer_remaining;
147147
} else {
148148
copy_memory(
149-
self.buffer[mut self.buffer_idx..self.buffer_idx + input.len()],
149+
self.buffer.slice_mut(self.buffer_idx, self.buffer_idx + input.len()),
150150
input);
151151
self.buffer_idx += input.len();
152152
return;
@@ -165,7 +165,7 @@ impl FixedBuffer for FixedBuffer64 {
165165
// be empty.
166166
let input_remaining = input.len() - i;
167167
copy_memory(
168-
self.buffer[mut ..input_remaining],
168+
self.buffer.slice_to_mut(input_remaining),
169169
input[i..]);
170170
self.buffer_idx += input_remaining;
171171
}
@@ -176,13 +176,13 @@ impl FixedBuffer for FixedBuffer64 {
176176

177177
fn zero_until(&mut self, idx: uint) {
178178
assert!(idx >= self.buffer_idx);
179-
self.buffer[mut self.buffer_idx..idx].set_memory(0);
179+
self.buffer.slice_mut(self.buffer_idx, idx).set_memory(0);
180180
self.buffer_idx = idx;
181181
}
182182

183183
fn next<'s>(&'s mut self, len: uint) -> &'s mut [u8] {
184184
self.buffer_idx += len;
185-
return self.buffer[mut self.buffer_idx - len..self.buffer_idx];
185+
return self.buffer.slice_mut(self.buffer_idx - len, self.buffer_idx);
186186
}
187187

188188
fn full_buffer<'s>(&'s mut self) -> &'s [u8] {
@@ -362,7 +362,7 @@ impl Engine256State {
362362
)
363363
);
364364

365-
read_u32v_be(w[mut 0..16], data);
365+
read_u32v_be(w.slice_mut(0, 16), data);
366366

367367
// Putting the message schedule inside the same loop as the round calculations allows for
368368
// the compiler to generate better code.
@@ -498,14 +498,14 @@ impl Digest for Sha256 {
498498
fn result(&mut self, out: &mut [u8]) {
499499
self.engine.finish();
500500

501-
write_u32_be(out[mut 0..4], self.engine.state.h0);
502-
write_u32_be(out[mut 4..8], self.engine.state.h1);
503-
write_u32_be(out[mut 8..12], self.engine.state.h2);
504-
write_u32_be(out[mut 12..16], self.engine.state.h3);
505-
write_u32_be(out[mut 16..20], self.engine.state.h4);
506-
write_u32_be(out[mut 20..24], self.engine.state.h5);
507-
write_u32_be(out[mut 24..28], self.engine.state.h6);
508-
write_u32_be(out[mut 28..32], self.engine.state.h7);
501+
write_u32_be(out.slice_mut(0, 4), self.engine.state.h0);
502+
write_u32_be(out.slice_mut(4, 8), self.engine.state.h1);
503+
write_u32_be(out.slice_mut(8, 12), self.engine.state.h2);
504+
write_u32_be(out.slice_mut(12, 16), self.engine.state.h3);
505+
write_u32_be(out.slice_mut(16, 20), self.engine.state.h4);
506+
write_u32_be(out.slice_mut(20, 24), self.engine.state.h5);
507+
write_u32_be(out.slice_mut(24, 28), self.engine.state.h6);
508+
write_u32_be(out.slice_mut(28, 32), self.engine.state.h7);
509509
}
510510

511511
fn reset(&mut self) {

src/libstd/io/buffered.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ impl<R: Reader> BufferedReader<R> {
104104
impl<R: Reader> Buffer for BufferedReader<R> {
105105
fn fill_buf<'a>(&'a mut self) -> IoResult<&'a [u8]> {
106106
if self.pos == self.cap {
107-
self.cap = try!(self.inner.read(self.buf[mut]));
107+
self.cap = try!(self.inner.read(self.buf.as_mut_slice()));
108108
self.pos = 0;
109109
}
110110
Ok(self.buf[self.pos..self.cap])
@@ -219,7 +219,7 @@ impl<W: Writer> Writer for BufferedWriter<W> {
219219
if buf.len() > self.buf.len() {
220220
self.inner.as_mut().unwrap().write(buf)
221221
} else {
222-
let dst = self.buf[mut self.pos..];
222+
let dst = self.buf.slice_from_mut(self.pos);
223223
slice::bytes::copy_memory(dst, buf);
224224
self.pos += buf.len();
225225
Ok(())

src/libstd/io/comm_adapters.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ impl Reader for ChanReader {
8787
loop {
8888
let count = match self.fill_buf().ok() {
8989
Some(src) => {
90-
let dst = buf[mut num_read..];
90+
let dst = buf.slice_from_mut(num_read);
9191
let count = cmp::min(src.len(), dst.len());
9292
bytes::copy_memory(dst, src[..count]);
9393
count

src/libstd/io/fs.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -931,11 +931,11 @@ mod test {
931931
{
932932
let mut read_stream = File::open_mode(filename, Open, Read);
933933
{
934-
let read_buf = read_mem[mut 0..4];
934+
let read_buf = read_mem.slice_mut(0, 4);
935935
check!(read_stream.read(read_buf));
936936
}
937937
{
938-
let read_buf = read_mem[mut 4..8];
938+
let read_buf = read_mem.slice_mut(4, 8);
939939
check!(read_stream.read(read_buf));
940940
}
941941
}

src/libstd/io/mem.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ impl Reader for MemReader {
169169
let write_len = min(buf.len(), self.buf.len() - self.pos);
170170
{
171171
let input = self.buf[self.pos.. self.pos + write_len];
172-
let output = buf[mut ..write_len];
172+
let output = buf.slice_to_mut(write_len);
173173
assert_eq!(input.len(), output.len());
174174
slice::bytes::copy_memory(output, input);
175175
}
@@ -214,7 +214,7 @@ impl<'a> Reader for &'a [u8] {
214214
let write_len = min(buf.len(), self.len());
215215
{
216216
let input = self[..write_len];
217-
let output = buf[mut ..write_len];
217+
let output = buf.slice_to_mut(write_len);
218218
slice::bytes::copy_memory(output, input);
219219
}
220220

@@ -279,7 +279,7 @@ impl<'a> BufWriter<'a> {
279279
impl<'a> Writer for BufWriter<'a> {
280280
#[inline]
281281
fn write(&mut self, src: &[u8]) -> IoResult<()> {
282-
let dst = self.buf[mut self.pos..];
282+
let dst = self.buf.slice_from_mut(self.pos);
283283
let dst_len = dst.len();
284284

285285
if dst_len == 0 {
@@ -359,7 +359,7 @@ impl<'a> Reader for BufReader<'a> {
359359
let write_len = min(buf.len(), self.buf.len() - self.pos);
360360
{
361361
let input = self.buf[self.pos.. self.pos + write_len];
362-
let output = buf[mut ..write_len];
362+
let output = buf.slice_to_mut(write_len);
363363
assert_eq!(input.len(), output.len());
364364
slice::bytes::copy_memory(output, input);
365365
}
@@ -652,7 +652,7 @@ mod test {
652652
assert!(r.read_at_least(buf.len(), &mut buf).is_ok());
653653
let b: &[_] = &[1, 2, 3];
654654
assert_eq!(buf, b);
655-
assert!(r.read_at_least(0, buf[mut ..0]).is_ok());
655+
assert!(r.read_at_least(0, buf.slice_to_mut(0)).is_ok());
656656
assert_eq!(buf, b);
657657
assert!(r.read_at_least(buf.len(), &mut buf).is_ok());
658658
let b: &[_] = &[4, 5, 6];

src/libstd/io/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ pub trait Reader {
513513
while read < min {
514514
let mut zeroes = 0;
515515
loop {
516-
match self.read(buf[mut read..]) {
516+
match self.read(buf.slice_from_mut(read)) {
517517
Ok(0) => {
518518
zeroes += 1;
519519
if zeroes >= NO_PROGRESS_LIMIT {
@@ -1123,7 +1123,7 @@ pub trait Writer {
11231123
#[inline]
11241124
fn write_char(&mut self, c: char) -> IoResult<()> {
11251125
let mut buf = [0u8, ..4];
1126-
let n = c.encode_utf8(buf[mut]).unwrap_or(0);
1126+
let n = c.encode_utf8(buf.as_mut_slice()).unwrap_or(0);
11271127
self.write(buf[..n])
11281128
}
11291129

@@ -1555,7 +1555,7 @@ pub trait Buffer: Reader {
15551555
{
15561556
let mut start = 1;
15571557
while start < width {
1558-
match try!(self.read(buf[mut start..width])) {
1558+
match try!(self.read(buf.slice_mut(start, width))) {
15591559
n if n == width - start => break,
15601560
n if n < width - start => { start += n; }
15611561
_ => return Err(standard_error(InvalidInput)),

src/libstd/io/net/ip.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ impl<'a> Parser<'a> {
250250
assert!(head.len() + tail.len() <= 8);
251251
let mut gs = [0u16, ..8];
252252
gs.clone_from_slice(head);
253-
gs[mut 8 - tail.len() .. 8].clone_from_slice(tail);
253+
gs.slice_mut(8 - tail.len(), 8).clone_from_slice(tail);
254254
Ipv6Addr(gs[0], gs[1], gs[2], gs[3], gs[4], gs[5], gs[6], gs[7])
255255
}
256256

src/libstd/io/net/udp.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ use sys_common;
4949
/// match socket.recv_from(&mut buf) {
5050
/// Ok((amt, src)) => {
5151
/// // Send a reply to the socket we received data from
52-
/// let buf = buf[mut ..amt];
52+
/// let buf = buf.slice_to_mut(amt);
5353
/// buf.reverse();
5454
/// socket.send_to(buf, src);
5555
/// }

src/libstd/io/util.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ impl<R: Reader> Reader for LimitReader<R> {
5151
}
5252

5353
let len = cmp::min(self.limit, buf.len());
54-
let res = self.inner.read(buf[mut ..len]);
54+
let res = self.inner.read(buf.slice_to_mut(len));
5555
match res {
5656
Ok(len) => self.limit -= len,
5757
_ => {}

src/libstd/rand/os.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ mod imp {
5555
let mut read = 0;
5656
let len = v.len();
5757
while read < len {
58-
let result = getrandom(v[mut read..]);
58+
let result = getrandom(v.slice_from_mut(read));
5959
if result == -1 {
6060
let err = errno() as libc::c_int;
6161
if err == libc::EINTR {

0 commit comments

Comments
 (0)