Skip to content

Commit e4779b5

Browse files
committed
auto merge of #13165 : sfackler/rust/io-vec, r=alexcrichton
`Reader`, `Writer`, `MemReader`, `MemWriter`, and `MultiWriter` now work with `Vec<u8>` instead of `~[u8]`. This does introduce some extra copies since `from_utf8_owned` isn't usable anymore, but I think that can't be helped until `~str`'s representation changes.
2 parents 31e8f24 + fcf9b30 commit e4779b5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+187
-177
lines changed

src/compiletest/procsrv.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,8 @@ pub fn run(lib_path: &str,
8484

8585
Some(Result {
8686
status: status,
87-
out: str::from_utf8_owned(output).unwrap(),
88-
err: str::from_utf8_owned(error).unwrap()
87+
out: str::from_utf8(output.as_slice()).unwrap().to_owned(),
88+
err: str::from_utf8(error.as_slice()).unwrap().to_owned()
8989
})
9090
},
9191
Err(..) => None

src/compiletest/runtest.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ fn run_pretty_test(config: &config, props: &TestProps, testfile: &Path) {
153153
match props.pp_exact { Some(_) => 1, None => 2 };
154154

155155
let src = File::open(testfile).read_to_end().unwrap();
156-
let src = str::from_utf8_owned(src).unwrap();
156+
let src = str::from_utf8(src.as_slice()).unwrap().to_owned();
157157
let mut srcs = vec!(src);
158158

159159
let mut round = 0;
@@ -177,7 +177,7 @@ fn run_pretty_test(config: &config, props: &TestProps, testfile: &Path) {
177177
Some(ref file) => {
178178
let filepath = testfile.dir_path().join(file);
179179
let s = File::open(&filepath).read_to_end().unwrap();
180-
str::from_utf8_owned(s).unwrap()
180+
str::from_utf8(s.as_slice()).unwrap().to_owned()
181181
}
182182
None => { (*srcs.get(srcs.len() - 2u)).clone() }
183183
};
@@ -1163,7 +1163,7 @@ fn disassemble_extract(config: &config, _props: &TestProps,
11631163
11641164
fn count_extracted_lines(p: &Path) -> uint {
11651165
let x = File::open(&p.with_extension("ll")).read_to_end().unwrap();
1166-
let x = str::from_utf8_owned(x).unwrap();
1166+
let x = str::from_utf8(x.as_slice()).unwrap();
11671167
x.lines().len()
11681168
}
11691169

src/doc/complement-cheatsheet.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ Use the [`lines`](http://static.rust-lang.org/doc/master/std/io/trait.Buffer.htm
9696
use std::io::BufferedReader;
9797
# use std::io::MemReader;
9898
99-
# let reader = MemReader::new(~[]);
99+
# let reader = MemReader::new(vec!());
100100
101101
let mut reader = BufferedReader::new(reader);
102102
for line in reader.lines() {

src/librand/reader.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use Rng;
2323
/// use rand::{reader, Rng};
2424
/// use std::io::MemReader;
2525
///
26-
/// let mut rng = reader::ReaderRng::new(MemReader::new(~[1,2,3,4,5,6,7,8]));
26+
/// let mut rng = reader::ReaderRng::new(MemReader::new(vec!(1,2,3,4,5,6,7,8)));
2727
/// println!("{:x}", rng.gen::<uint>());
2828
/// ```
2929
pub struct ReaderRng<R> {
@@ -80,7 +80,7 @@ mod test {
8080
// transmute from the target to avoid endianness concerns.
8181
let v = ~[1u64, 2u64, 3u64];
8282
let bytes: ~[u8] = unsafe {cast::transmute(v)};
83-
let mut rng = ReaderRng::new(MemReader::new(bytes));
83+
let mut rng = ReaderRng::new(MemReader::new(bytes.move_iter().collect()));
8484

8585
assert_eq!(rng.next_u64(), 1);
8686
assert_eq!(rng.next_u64(), 2);
@@ -91,7 +91,7 @@ mod test {
9191
// transmute from the target to avoid endianness concerns.
9292
let v = ~[1u32, 2u32, 3u32];
9393
let bytes: ~[u8] = unsafe {cast::transmute(v)};
94-
let mut rng = ReaderRng::new(MemReader::new(bytes));
94+
let mut rng = ReaderRng::new(MemReader::new(bytes.move_iter().collect()));
9595

9696
assert_eq!(rng.next_u32(), 1);
9797
assert_eq!(rng.next_u32(), 2);
@@ -102,7 +102,7 @@ mod test {
102102
let v = [1u8, 2, 3, 4, 5, 6, 7, 8];
103103
let mut w = [0u8, .. 8];
104104

105-
let mut rng = ReaderRng::new(MemReader::new(v.to_owned()));
105+
let mut rng = ReaderRng::new(MemReader::new(Vec::from_slice(v)));
106106
rng.fill_bytes(w);
107107

108108
assert!(v == w);
@@ -111,7 +111,7 @@ mod test {
111111
#[test]
112112
#[should_fail]
113113
fn test_reader_rng_insufficient_bytes() {
114-
let mut rng = ReaderRng::new(MemReader::new(~[]));
114+
let mut rng = ReaderRng::new(MemReader::new(vec!()));
115115
let mut v = [0u8, .. 3];
116116
rng.fill_bytes(v);
117117
}

src/librustc/back/archive.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,10 @@ fn run_ar(sess: &Session, args: &str, cwd: Option<&Path>,
5959
if !o.status.success() {
6060
sess.err(format!("{} {} failed with: {}", ar, args.connect(" "),
6161
o.status));
62-
sess.note(format!("stdout ---\n{}", str::from_utf8(o.output).unwrap()));
63-
sess.note(format!("stderr ---\n{}", str::from_utf8(o.error).unwrap()));
62+
sess.note(format!("stdout ---\n{}",
63+
str::from_utf8(o.output.as_slice()).unwrap()));
64+
sess.note(format!("stderr ---\n{}",
65+
str::from_utf8(o.error.as_slice()).unwrap()));
6466
sess.abort_if_errors();
6567
}
6668
o
@@ -129,7 +131,7 @@ impl<'a> Archive<'a> {
129131
/// Lists all files in an archive
130132
pub fn files(&self) -> Vec<~str> {
131133
let output = run_ar(self.sess, "t", None, [&self.dst]);
132-
let output = str::from_utf8(output.output).unwrap();
134+
let output = str::from_utf8(output.output.as_slice()).unwrap();
133135
// use lines_any because windows delimits output with `\r\n` instead of
134136
// just `\n`
135137
output.lines_any().map(|s| s.to_owned()).collect()

src/librustc/back/link.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,9 @@ pub mod write {
350350
if !prog.status.success() {
351351
sess.err(format!("linking with `{}` failed: {}", cc, prog.status));
352352
sess.note(format!("{} arguments: '{}'", cc, args.connect("' '")));
353-
sess.note(str::from_utf8_owned(prog.error + prog.output).unwrap());
353+
let mut note = prog.error.clone();
354+
note.push_all(prog.output.as_slice());
355+
sess.note(str::from_utf8(note.as_slice()).unwrap().to_owned());
354356
sess.abort_if_errors();
355357
}
356358
},
@@ -942,7 +944,8 @@ fn link_rlib<'a>(sess: &'a Session,
942944
let bc = obj_filename.with_extension("bc");
943945
let bc_deflated = obj_filename.with_extension("bc.deflate");
944946
match fs::File::open(&bc).read_to_end().and_then(|data| {
945-
fs::File::create(&bc_deflated).write(flate::deflate_bytes(data).as_slice())
947+
fs::File::create(&bc_deflated)
948+
.write(flate::deflate_bytes(data.as_slice()).as_slice())
946949
}) {
947950
Ok(()) => {}
948951
Err(e) => {
@@ -1038,7 +1041,9 @@ fn link_natively(sess: &Session, dylib: bool, obj_filename: &Path,
10381041
if !prog.status.success() {
10391042
sess.err(format!("linking with `{}` failed: {}", cc_prog, prog.status));
10401043
sess.note(format!("{} arguments: '{}'", cc_prog, cc_args.connect("' '")));
1041-
sess.note(str::from_utf8_owned(prog.error + prog.output).unwrap());
1044+
let mut output = prog.error.clone();
1045+
output.push_all(prog.output.as_slice());
1046+
sess.note(str::from_utf8(output.as_slice()).unwrap().to_owned());
10421047
sess.abort_if_errors();
10431048
}
10441049
},

src/librustc/driver/driver.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -681,7 +681,7 @@ pub fn pretty_print_input(sess: Session,
681681
};
682682

683683
let src_name = source_name(input);
684-
let src = sess.codemap().get_filemap(src_name).src.as_bytes().to_owned();
684+
let src = Vec::from_slice(sess.codemap().get_filemap(src_name).src.as_bytes());
685685
let mut rdr = MemReader::new(src);
686686

687687
match ppm {

src/librustc/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ pub fn run_compiler(args: &[~str]) {
274274
let ifile = matches.free.get(0).as_slice();
275275
if ifile == "-" {
276276
let contents = io::stdin().read_to_end().unwrap();
277-
let src = str::from_utf8_owned(contents).unwrap();
277+
let src = str::from_utf8(contents.as_slice()).unwrap().to_owned();
278278
(d::StrInput(src), None)
279279
} else {
280280
(d::FileInput(Path::new(ifile)), Some(Path::new(ifile)))

src/librustc/middle/liveness.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -741,7 +741,7 @@ impl<'a> Liveness<'a> {
741741
self.write_vars(wr, ln, |idx| self.users.get(idx).writer);
742742
write!(wr, " precedes {}]", self.successors.get(ln.get()).to_str());
743743
}
744-
str::from_utf8_owned(wr.unwrap()).unwrap()
744+
str::from_utf8(wr.unwrap().as_slice()).unwrap().to_owned()
745745
}
746746

747747
fn init_empty(&mut self, ln: LiveNode, succ_ln: LiveNode) {

src/librustdoc/html/highlight.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ pub fn highlight(src: &str, class: Option<&str>) -> ~str {
3434
lexer::new_string_reader(&sess.span_diagnostic, fm),
3535
class,
3636
&mut out).unwrap();
37-
str::from_utf8_lossy(out.unwrap()).into_owned()
37+
str::from_utf8_lossy(out.unwrap().as_slice()).into_owned()
3838
}
3939
4040
/// Exhausts the `lexer` writing the output into `out`.

0 commit comments

Comments
 (0)