diff options
| author | Simon Sapin <simon.sapin@exyr.org> | 2013-12-23 17:30:49 +0100 | 
|---|---|---|
| committer | Simon Sapin <simon.sapin@exyr.org> | 2014-01-21 15:48:48 -0800 | 
| commit | b8c41492939c77b7139e46ee67375b47041f6692 (patch) | |
| tree | cff3b09dceb4ee8ee9384a88f66b9a55505e9deb /src | |
| parent | 46b01647ba14f1d66d5af2cd70bea400d3ca4df3 (diff) | |
| download | rust-b8c41492939c77b7139e46ee67375b47041f6692.tar.gz rust-b8c41492939c77b7139e46ee67375b47041f6692.zip  | |
[std::str] Rename from_utf8_opt() to from_utf8(), drop the old from_utf8() behavior
Diffstat (limited to 'src')
| -rw-r--r-- | src/compiletest/runtest.rs | 2 | ||||
| -rw-r--r-- | src/libextra/ebml.rs | 2 | ||||
| -rw-r--r-- | src/libextra/test.rs | 2 | ||||
| -rw-r--r-- | src/librustc/back/archive.rs | 6 | ||||
| -rw-r--r-- | src/librustc/metadata/tydecode.rs | 4 | ||||
| -rw-r--r-- | src/librustc/metadata/tyencode.rs | 2 | ||||
| -rw-r--r-- | src/librustdoc/html/markdown.rs | 6 | ||||
| -rw-r--r-- | src/librustpkg/lib.rs | 2 | ||||
| -rw-r--r-- | src/librustpkg/tests.rs | 30 | ||||
| -rw-r--r-- | src/librustpkg/version.rs | 8 | ||||
| -rw-r--r-- | src/librustuv/file.rs | 2 | ||||
| -rw-r--r-- | src/libstd/c_str.rs | 2 | ||||
| -rw-r--r-- | src/libstd/fmt/mod.rs | 2 | ||||
| -rw-r--r-- | src/libstd/io/fs.rs | 14 | ||||
| -rw-r--r-- | src/libstd/io/mod.rs | 2 | ||||
| -rw-r--r-- | src/libstd/io/process.rs | 2 | ||||
| -rw-r--r-- | src/libstd/path/mod.rs | 12 | ||||
| -rw-r--r-- | src/libstd/path/posix.rs | 6 | ||||
| -rw-r--r-- | src/libstd/str.rs | 35 | ||||
| -rw-r--r-- | src/test/run-pass/hashmap-memory.rs | 2 | 
20 files changed, 59 insertions, 84 deletions
diff --git a/src/compiletest/runtest.rs b/src/compiletest/runtest.rs index bbfba84cc9e..7fede7f855d 100644 --- a/src/compiletest/runtest.rs +++ b/src/compiletest/runtest.rs @@ -308,7 +308,7 @@ fn run_debuginfo_test(config: &config, props: &TestProps, testfile: &Path) { let adb_arg = format!("export LD_LIBRARY_PATH={}; gdbserver :5039 {}/{}", config.adb_test_dir.clone(), config.adb_test_dir.clone(), - str::from_utf8(exe_file.filename().unwrap())); + str::from_utf8(exe_file.filename().unwrap()).unwrap()); let mut process = procsrv::run_background("", config.adb_path, [~"shell",adb_arg.clone()], diff --git a/src/libextra/ebml.rs b/src/libextra/ebml.rs index 8cce47b03f8..aac8253b842 100644 --- a/src/libextra/ebml.rs +++ b/src/libextra/ebml.rs @@ -30,7 +30,7 @@ impl<'doc> Doc<'doc> { } pub fn as_str_slice<'a>(&'a self) -> &'a str { - str::from_utf8(self.data.slice(self.start, self.end)) + str::from_utf8(self.data.slice(self.start, self.end)).unwrap() } pub fn as_str(&self) -> ~str { diff --git a/src/libextra/test.rs b/src/libextra/test.rs index 5f0270beb80..1b98a9af548 100644 --- a/src/libextra/test.rs +++ b/src/libextra/test.rs @@ -704,7 +704,7 @@ fn should_sort_failures_before_printing_them() { st.write_failures(); let s = match st.out { - Raw(ref m) => str::from_utf8(m.get_ref()), + Raw(ref m) => str::from_utf8(m.get_ref()).unwrap(), Pretty(_) => unreachable!() }; diff --git a/src/librustc/back/archive.rs b/src/librustc/back/archive.rs index 5f1542f7501..661ae5b7297 100644 --- a/src/librustc/back/archive.rs +++ b/src/librustc/back/archive.rs @@ -57,8 +57,8 @@ fn run_ar(sess: Session, args: &str, cwd: Option<&Path>, if !o.status.success() { sess.err(format!("{} {} failed with: {}", ar, args.connect(" "), o.status)); - sess.note(format!("stdout ---\n{}", str::from_utf8(o.output))); - sess.note(format!("stderr ---\n{}", str::from_utf8(o.error))); + sess.note(format!("stdout ---\n{}", str::from_utf8(o.output).unwrap())); + sess.note(format!("stderr ---\n{}", str::from_utf8(o.error).unwrap())); sess.abort_if_errors(); } o @@ -141,7 +141,7 @@ impl Archive { /// Lists all files in an archive pub fn files(&self) -> ~[~str] { let output = run_ar(self.sess, "t", None, [&self.dst]); - str::from_utf8(output.output).lines().map(|s| s.to_owned()).collect() + str::from_utf8(output.output).unwrap().lines().map(|s| s.to_owned()).collect() } fn add_archive(&mut self, archive: &Path, name: &str, skip: &[&str]) { diff --git a/src/librustc/metadata/tydecode.rs b/src/librustc/metadata/tydecode.rs index 1f33ef2f41b..4f19d461c85 100644 --- a/src/librustc/metadata/tydecode.rs +++ b/src/librustc/metadata/tydecode.rs @@ -97,7 +97,7 @@ pub fn parse_ident(st: &mut PState, last: char) -> ast::Ident { fn parse_ident_(st: &mut PState, is_last: |char| -> bool) -> ast::Ident { scan(st, is_last, |bytes| { - st.tcx.sess.ident_of(str::from_utf8(bytes)) + st.tcx.sess.ident_of(str::from_utf8(bytes).unwrap()) }) } @@ -476,7 +476,7 @@ fn parse_abi_set(st: &mut PState) -> AbiSet { let mut abis = AbiSet::empty(); while peek(st) != ']' { scan(st, |c| c == ',', |bytes| { - let abi_str = str::from_utf8(bytes).to_owned(); + let abi_str = str::from_utf8(bytes).unwrap().to_owned(); let abi = abi::lookup(abi_str).expect(abi_str); abis.add(abi); }); diff --git a/src/librustc/metadata/tyencode.rs b/src/librustc/metadata/tyencode.rs index 657522b836b..965aab31f14 100644 --- a/src/librustc/metadata/tyencode.rs +++ b/src/librustc/metadata/tyencode.rs @@ -72,7 +72,7 @@ pub fn enc_ty(w: &mut MemWriter, cx: @ctxt, t: ty::t) { None => { let wr = &mut MemWriter::new(); enc_sty(wr, cx, &ty::get(t).sty); - let s = str::from_utf8(wr.get_ref()).to_managed(); + let s = str::from_utf8(wr.get_ref()).unwrap().to_managed(); let mut short_names_cache = cx.tcx .short_names_cache .borrow_mut(); diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs index 8fa8b573bca..5d0728c8cdf 100644 --- a/src/librustdoc/html/markdown.rs +++ b/src/librustdoc/html/markdown.rs @@ -112,7 +112,7 @@ pub fn render(w: &mut io::Writer, s: &str) { unsafe { let my_opaque: &my_opaque = cast::transmute(opaque); vec::raw::buf_as_slice((*text).data, (*text).size as uint, |text| { - let text = str::from_utf8(text); + let text = str::from_utf8(text).unwrap(); let mut lines = text.lines().filter(|l| stripped_filtered_line(*l).is_none()); let text = lines.to_owned_vec().connect("\n"); @@ -172,14 +172,14 @@ pub fn find_testable_code(doc: &str, tests: &mut ::test::Collector) { let (test, shouldfail, ignore) = vec::raw::buf_as_slice((*lang).data, (*lang).size as uint, |lang| { - let s = str::from_utf8(lang); + let s = str::from_utf8(lang).unwrap(); (s.contains("rust"), s.contains("should_fail"), s.contains("ignore")) }); if !test { return } vec::raw::buf_as_slice((*text).data, (*text).size as uint, |text| { let tests: &mut ::test::Collector = intrinsics::transmute(opaque); - let text = str::from_utf8(text); + let text = str::from_utf8(text).unwrap(); let mut lines = text.lines().map(|l| stripped_filtered_line(l).unwrap_or(l)); let text = lines.to_owned_vec().connect("\n"); tests.add_test(text, ignore, shouldfail); diff --git a/src/librustpkg/lib.rs b/src/librustpkg/lib.rs index ac94c477e78..c9db8af0b8a 100644 --- a/src/librustpkg/lib.rs +++ b/src/librustpkg/lib.rs @@ -193,7 +193,7 @@ impl<'a> PkgScript<'a> { Some(output) => { debug!("run_custom: second pkg command did {:?}", output.status); // Run the configs() function to get the configs - let cfgs = str::from_utf8(output.output).words() + let cfgs = str::from_utf8(output.output).unwrap().words() .map(|w| w.to_owned()).collect(); Some((cfgs, output.status)) }, diff --git a/src/librustpkg/tests.rs b/src/librustpkg/tests.rs index 0e78e907de0..b2cc568ee5e 100644 --- a/src/librustpkg/tests.rs +++ b/src/librustpkg/tests.rs @@ -143,7 +143,7 @@ fn run_git(args: &[~str], env: Option<~[(~str, ~str)]>, cwd: &Path, err_msg: &st let rslt = prog.finish_with_output(); if !rslt.status.success() { fail!("{} [git returned {:?}, output = {}, error = {}]", err_msg, - rslt.status, str::from_utf8(rslt.output), str::from_utf8(rslt.error)); + rslt.status, str::from_utf8(rslt.output).unwrap(), str::from_utf8(rslt.error).unwrap()); } } @@ -279,13 +279,13 @@ fn command_line_test_with_env(args: &[~str], cwd: &Path, env: Option<~[(~str, ~s }).expect(format!("failed to exec `{}`", cmd)); let output = prog.finish_with_output(); debug!("Output from command {} with args {:?} was {} \\{{}\\}[{:?}]", - cmd, args, str::from_utf8(output.output), - str::from_utf8(output.error), + cmd, args, str::from_utf8(output.output).unwrap(), + str::from_utf8(output.error).unwrap(), output.status); if !output.status.success() { debug!("Command {} {:?} failed with exit code {:?}; its output was --- {} {} ---", cmd, args, output.status, - str::from_utf8(output.output), str::from_utf8(output.error)); + str::from_utf8(output.output).unwrap(), str::from_utf8(output.error).unwrap()); Fail(output) } else { @@ -445,7 +445,7 @@ fn built_library_exists(repo: &Path, short_name: &str) -> bool { fn command_line_test_output(args: &[~str]) -> ~[~str] { let mut result = ~[]; let p_output = command_line_test(args, &os::getcwd()); - let test_output = str::from_utf8(p_output.output); + let test_output = str::from_utf8(p_output.output).unwrap(); for s in test_output.split('\n') { result.push(s.to_owned()); } @@ -459,7 +459,7 @@ fn command_line_test_output_with_env(args: &[~str], env: ~[(~str, ~str)]) -> ~[~ Fail(_) => fail!("Command-line test failed"), Success(r) => r }; - let test_output = str::from_utf8(p_output.output); + let test_output = str::from_utf8(p_output.output).unwrap(); for s in test_output.split('\n') { result.push(s.to_owned()); } @@ -1199,7 +1199,7 @@ fn test_uninstall() { let workspace = create_local_package(&CrateId::new("foo")); command_line_test([~"uninstall", ~"foo"], workspace.path()); let output = command_line_test([~"list"], workspace.path()); - assert!(!str::from_utf8(output.output).contains("foo")); + assert!(!str::from_utf8(output.output).unwrap().contains("foo")); } #[test] @@ -1269,8 +1269,8 @@ fn test_extern_mod() { let outp = prog.finish_with_output(); if !outp.status.success() { fail!("output was {}, error was {}", - str::from_utf8(outp.output), - str::from_utf8(outp.error)); + str::from_utf8(outp.output).unwrap(), + str::from_utf8(outp.error).unwrap()); } assert!(exec_file.exists() && is_executable(&exec_file)); } @@ -1324,8 +1324,8 @@ fn test_extern_mod_simpler() { let outp = prog.finish_with_output(); if !outp.status.success() { fail!("output was {}, error was {}", - str::from_utf8(outp.output), - str::from_utf8(outp.error)); + str::from_utf8(outp.output).unwrap(), + str::from_utf8(outp.error).unwrap()); } assert!(exec_file.exists() && is_executable(&exec_file)); } @@ -2092,7 +2092,7 @@ fn test_rustpkg_test_creates_exec() { fn test_rustpkg_test_output() { let workspace = create_local_package_with_test(&CrateId::new("foo")); let output = command_line_test([~"test", ~"foo"], workspace.path()); - let output_str = str::from_utf8(output.output); + let output_str = str::from_utf8(output.output).unwrap(); // The first two assertions are separate because test output may // contain color codes, which could appear between "test f" and "ok". assert!(output_str.contains("test f")); @@ -2123,7 +2123,7 @@ fn test_rustpkg_test_cfg() { "#[test] #[cfg(not(foobar))] fn f() { assert!('a' != 'a'); }"); let output = command_line_test([~"test", ~"--cfg", ~"foobar", ~"foo"], foo_workspace); - let output_str = str::from_utf8(output.output); + let output_str = str::from_utf8(output.output).unwrap(); assert!(output_str.contains("0 passed; 0 failed; 0 ignored; 0 measured")); } @@ -2424,8 +2424,8 @@ fn correct_error_dependency() { Fail(ProcessOutput{ error: error, output: output, .. }) => { assert!(str::is_utf8(error)); assert!(str::is_utf8(output)); - let error_str = str::from_utf8(error); - let out_str = str::from_utf8(output); + let error_str = str::from_utf8(error).unwrap(); + let out_str = str::from_utf8(output).unwrap(); debug!("ss = {}", error_str); debug!("out_str = {}", out_str); if out_str.contains("Package badpkg depends on some_package_that_doesnt_exist") && diff --git a/src/librustpkg/version.rs b/src/librustpkg/version.rs index e9ccfccb126..77dbb335518 100644 --- a/src/librustpkg/version.rs +++ b/src/librustpkg/version.rs @@ -115,7 +115,7 @@ pub fn try_getting_local_version(local_path: &Path) -> Option<Version> { } let mut output = None; - let output_text = str::from_utf8(outp.output); + let output_text = str::from_utf8(outp.output).unwrap(); for l in output_text.lines() { if !l.is_whitespace() { output = Some(l); @@ -147,8 +147,8 @@ pub fn try_getting_version(remote_path: &Path) -> Option<Version> { let outp = opt_outp.expect("Failed to exec `git`"); if outp.status.success() { debug!("Cloned it... ( {}, {} )", - str::from_utf8(outp.output), - str::from_utf8(outp.error)); + str::from_utf8(outp.output).unwrap(), + str::from_utf8(outp.error).unwrap()); let mut output = None; let git_dir = tmp_dir.join(".git"); debug!("(getting version, now getting tags) executing \\{git --git-dir={} tag -l\\}", @@ -158,7 +158,7 @@ pub fn try_getting_version(remote_path: &Path) -> Option<Version> { ["--git-dir=" + git_dir.as_str().unwrap(), ~"tag", ~"-l"]); let outp = opt_outp.expect("Failed to exec `git`"); - let output_text = str::from_utf8(outp.output); + let output_text = str::from_utf8(outp.output).unwrap(); debug!("Full output: ( {} ) [{:?}]", output_text, outp.status); for l in output_text.lines() { debug!("A line of output: {}", l); diff --git a/src/librustuv/file.rs b/src/librustuv/file.rs index 82d0fd823a3..8f7ced93fb0 100644 --- a/src/librustuv/file.rs +++ b/src/librustuv/file.rs @@ -488,7 +488,7 @@ mod test { let nread = result.unwrap(); assert!(nread > 0); - let read_str = str::from_utf8(read_mem.slice_to(nread as uint)); + let read_str = str::from_utf8(read_mem.slice_to(nread as uint)).unwrap(); assert_eq!(read_str, "hello"); } // unlink diff --git a/src/libstd/c_str.rs b/src/libstd/c_str.rs index 301df329f49..c735e325068 100644 --- a/src/libstd/c_str.rs +++ b/src/libstd/c_str.rs @@ -167,7 +167,7 @@ impl CString { if self.buf.is_null() { return None; } let buf = self.as_bytes(); let buf = buf.slice_to(buf.len()-1); // chop off the trailing NUL - str::from_utf8_opt(buf) + str::from_utf8(buf) } /// Return a CString iterator. diff --git a/src/libstd/fmt/mod.rs b/src/libstd/fmt/mod.rs index 8a945d09bfc..4bee1f42b86 100644 --- a/src/libstd/fmt/mod.rs +++ b/src/libstd/fmt/mod.rs @@ -812,7 +812,7 @@ impl<'a> Formatter<'a> { fn runplural(&mut self, value: uint, pieces: &[rt::Piece]) { ::uint::to_str_bytes(value, 10, |buf| { - let valuestr = str::from_utf8(buf); + let valuestr = str::from_utf8(buf).unwrap(); for piece in pieces.iter() { self.run(piece, Some(valuestr)); } diff --git a/src/libstd/io/fs.rs b/src/libstd/io/fs.rs index 80dbaebe01c..0564311ad22 100644 --- a/src/libstd/io/fs.rs +++ b/src/libstd/io/fs.rs @@ -805,7 +805,7 @@ mod test { } } unlink(filename); - let read_str = str::from_utf8(read_mem); + let read_str = str::from_utf8(read_mem).unwrap(); assert_eq!(read_str, message); }) @@ -829,7 +829,7 @@ mod test { tell_pos_post_read = read_stream.tell(); } unlink(filename); - let read_str = str::from_utf8(read_mem); + let read_str = str::from_utf8(read_mem).unwrap(); assert_eq!(read_str, message.slice(4, 8)); assert_eq!(tell_pos_pre_read, set_cursor); assert_eq!(tell_pos_post_read, message.len() as u64); @@ -854,7 +854,7 @@ mod test { read_stream.read(read_mem); } unlink(filename); - let read_str = str::from_utf8(read_mem); + let read_str = str::from_utf8(read_mem).unwrap(); assert!(read_str == final_msg.to_owned()); }) @@ -876,15 +876,15 @@ mod test { read_stream.seek(-4, SeekEnd); read_stream.read(read_mem); - assert_eq!(str::from_utf8(read_mem), chunk_three); + assert_eq!(str::from_utf8(read_mem).unwrap(), chunk_three); read_stream.seek(-9, SeekCur); read_stream.read(read_mem); - assert_eq!(str::from_utf8(read_mem), chunk_two); + assert_eq!(str::from_utf8(read_mem).unwrap(), chunk_two); read_stream.seek(0, SeekSet); read_stream.read(read_mem); - assert_eq!(str::from_utf8(read_mem), chunk_one); + assert_eq!(str::from_utf8(read_mem).unwrap(), chunk_one); } unlink(filename); }) @@ -958,7 +958,7 @@ mod test { { let n = f.filestem_str(); File::open(f).read(mem); - let read_str = str::from_utf8(mem); + let read_str = str::from_utf8(mem).unwrap(); let expected = match n { None|Some("") => fail!("really shouldn't happen.."), Some(n) => prefix+n diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index 87180980541..b12adbf230f 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -1202,7 +1202,7 @@ pub trait Buffer: Reader { } } } - match str::from_utf8_opt(buf.slice_to(width)) { + match str::from_utf8(buf.slice_to(width)) { Some(s) => Some(s.char_at(0)), None => None } diff --git a/src/libstd/io/process.rs b/src/libstd/io/process.rs index a0c451647d3..c3fb3e97edf 100644 --- a/src/libstd/io/process.rs +++ b/src/libstd/io/process.rs @@ -254,7 +254,7 @@ mod tests { loop { match input.read(buf) { None => { break } - Some(n) => { ret.push_str(str::from_utf8(buf.slice_to(n))); } + Some(n) => { ret.push_str(str::from_utf8(buf.slice_to(n)).unwrap()); } } } return ret; diff --git a/src/libstd/path/mod.rs b/src/libstd/path/mod.rs index b2de3cd9178..6464d6021ee 100644 --- a/src/libstd/path/mod.rs +++ b/src/libstd/path/mod.rs @@ -189,7 +189,7 @@ pub trait GenericPath: Clone + GenericPathUnsafe { /// If the path is not representable in utf-8, this returns None. #[inline] fn as_str<'a>(&'a self) -> Option<&'a str> { - str::from_utf8_opt(self.as_vec()) + str::from_utf8(self.as_vec()) } /// Returns the path as a byte vector @@ -220,7 +220,7 @@ pub trait GenericPath: Clone + GenericPathUnsafe { /// See `dirname` for details. #[inline] fn dirname_str<'a>(&'a self) -> Option<&'a str> { - str::from_utf8_opt(self.dirname()) + str::from_utf8(self.dirname()) } /// Returns the file component of `self`, as a byte vector. /// If `self` represents the root of the file hierarchy, returns None. @@ -230,7 +230,7 @@ pub trait GenericPath: Clone + GenericPathUnsafe { /// See `filename` for details. #[inline] fn filename_str<'a>(&'a self) -> Option<&'a str> { - self.filename().and_then(str::from_utf8_opt) + self.filename().and_then(str::from_utf8) } /// Returns the stem of the filename of `self`, as a byte vector. /// The stem is the portion of the filename just before the last '.'. @@ -252,7 +252,7 @@ pub trait GenericPath: Clone + GenericPathUnsafe { /// See `filestem` for details. #[inline] fn filestem_str<'a>(&'a self) -> Option<&'a str> { - self.filestem().and_then(str::from_utf8_opt) + self.filestem().and_then(str::from_utf8) } /// Returns the extension of the filename of `self`, as an optional byte vector. /// The extension is the portion of the filename just after the last '.'. @@ -275,7 +275,7 @@ pub trait GenericPath: Clone + GenericPathUnsafe { /// See `extension` for details. #[inline] fn extension_str<'a>(&'a self) -> Option<&'a str> { - self.extension().and_then(str::from_utf8_opt) + self.extension().and_then(str::from_utf8) } /// Replaces the filename portion of the path with the given byte vector or string. @@ -502,7 +502,7 @@ pub trait BytesContainer { /// Returns the receiver interpreted as a utf-8 string, if possible #[inline] fn container_as_str<'a>(&'a self) -> Option<&'a str> { - str::from_utf8_opt(self.container_as_bytes()) + str::from_utf8(self.container_as_bytes()) } /// Returns whether .container_as_str() is guaranteed to not fail // FIXME (#8888): Remove unused arg once ::<for T> works diff --git a/src/libstd/path/posix.rs b/src/libstd/path/posix.rs index dc547d702ba..e95bd2d8ca2 100644 --- a/src/libstd/path/posix.rs +++ b/src/libstd/path/posix.rs @@ -402,13 +402,13 @@ impl Path { /// Returns an iterator that yields each component of the path as Option<&str>. /// See components() for details. pub fn str_components<'a>(&'a self) -> StrComponents<'a> { - self.components().map(str::from_utf8_opt) + self.components().map(str::from_utf8) } /// Returns an iterator that yields each component of the path in reverse as Option<&str>. /// See components() for details. pub fn rev_str_components<'a>(&'a self) -> RevStrComponents<'a> { - self.rev_components().map(str::from_utf8_opt) + self.rev_components().map(str::from_utf8) } } @@ -691,7 +691,7 @@ mod tests { (s: $path:expr, $op:ident, $exp:expr, opt) => ( { let path = Path::new($path); - let left = path.$op().map(|x| str::from_utf8(x)); + let left = path.$op().map(|x| str::from_utf8(x).unwrap()); assert_eq!(left, $exp); } ); diff --git a/src/libstd/str.rs b/src/libstd/str.rs index f59cd855c32..c266ddfea4b 100644 --- a/src/libstd/str.rs +++ b/src/libstd/str.rs @@ -161,17 +161,8 @@ pub fn from_utf8_owned_opt(vv: ~[u8]) -> Option<~str> { /// Once the slice has been validated as utf-8, it is transmuted in-place and /// returned as a '&str' instead of a '&[u8]' /// -/// # Failure -/// -/// Fails if invalid UTF-8 -pub fn from_utf8<'a>(v: &'a [u8]) -> &'a str { - from_utf8_opt(v).expect("from_utf8: not utf-8") -} - -/// Converts a vector to a string slice without performing any allocations. -/// /// Returns None if the slice is not utf-8. -pub fn from_utf8_opt<'a>(v: &'a [u8]) -> Option<&'a str> { +pub fn from_utf8<'a>(v: &'a [u8]) -> Option<&'a str> { if is_utf8(v) { Some(unsafe { raw::from_utf8(v) }) } else { None } @@ -3436,7 +3427,7 @@ mod tests { let s1: ~str = ~"All mimsy were the borogoves"; let v: ~[u8] = s1.as_bytes().to_owned(); - let s2: ~str = from_utf8(v).to_owned(); + let s2: ~str = from_utf8(v).unwrap().to_owned(); let mut i: uint = 0u; let n1: uint = s1.len(); let n2: uint = v.len(); @@ -3961,29 +3952,13 @@ mod tests { #[test] fn test_str_from_utf8() { let xs = bytes!("hello"); - assert_eq!(from_utf8(xs), "hello"); - - let xs = bytes!("ศไทย中华Việt Nam"); - assert_eq!(from_utf8(xs), "ศไทย中华Việt Nam"); - } - - #[test] - #[should_fail] - fn test_str_from_utf8_invalid() { - let xs = bytes!("hello", 0xff); - let _ = from_utf8(xs); - } - - #[test] - fn test_str_from_utf8_opt() { - let xs = bytes!("hello"); - assert_eq!(from_utf8_opt(xs), Some("hello")); + assert_eq!(from_utf8(xs), Some("hello")); let xs = bytes!("ศไทย中华Việt Nam"); - assert_eq!(from_utf8_opt(xs), Some("ศไทย中华Việt Nam")); + assert_eq!(from_utf8(xs), Some("ศไทย中华Việt Nam")); let xs = bytes!("hello", 0xff); - assert_eq!(from_utf8_opt(xs), None); + assert_eq!(from_utf8(xs), None); } #[test] diff --git a/src/test/run-pass/hashmap-memory.rs b/src/test/run-pass/hashmap-memory.rs index 905fa42635b..96a6e1c4f60 100644 --- a/src/test/run-pass/hashmap-memory.rs +++ b/src/test/run-pass/hashmap-memory.rs @@ -81,7 +81,7 @@ mod map_reduce { mapper_done => { num_mappers -= 1; } find_reducer(k, cc) => { let mut c; - match reducers.find(&str::from_utf8(k).to_owned()) { + match reducers.find(&str::from_utf8(k).unwrap().to_owned()) { Some(&_c) => { c = _c; } None => { c = 0; } }  | 
