about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMark Rousskov <mark.simulacrum@gmail.com>2022-02-22 18:05:51 -0500
committerMark Rousskov <mark.simulacrum@gmail.com>2022-02-22 18:05:51 -0500
commitda3b2ca95636eea18c62089bae5e7443ecf94c9a (patch)
tree60ca2ea3edb6c9ce602cd6a8ec721e1f96bc5e12
parent68369a041cea809a87e5bd80701da90e0e0a4799 (diff)
downloadrust-da3b2ca95636eea18c62089bae5e7443ecf94c9a.tar.gz
rust-da3b2ca95636eea18c62089bae5e7443ecf94c9a.zip
Provide raw &str access from Decoder
-rw-r--r--compiler/rustc_serialize/src/opaque.rs5
-rw-r--r--compiler/rustc_serialize/src/serialize.rs4
2 files changed, 4 insertions, 5 deletions
diff --git a/compiler/rustc_serialize/src/opaque.rs b/compiler/rustc_serialize/src/opaque.rs
index 7a05d2b762a..8e2c866cd38 100644
--- a/compiler/rustc_serialize/src/opaque.rs
+++ b/compiler/rustc_serialize/src/opaque.rs
@@ -1,6 +1,5 @@
 use crate::leb128::{self, max_leb128_len};
 use crate::serialize::{self, Encoder as _};
-use std::borrow::Cow;
 use std::convert::TryInto;
 use std::fs::File;
 use std::io::{self, Write};
@@ -663,7 +662,7 @@ impl<'a> serialize::Decoder for Decoder<'a> {
     }
 
     #[inline]
-    fn read_str(&mut self) -> Cow<'_, str> {
+    fn read_str(&mut self) -> &str {
         let len = self.read_usize();
         let sentinel = self.data[self.position + len];
         assert!(sentinel == STR_SENTINEL);
@@ -671,7 +670,7 @@ impl<'a> serialize::Decoder for Decoder<'a> {
             std::str::from_utf8_unchecked(&self.data[self.position..self.position + len])
         };
         self.position += len + 1;
-        Cow::Borrowed(s)
+        s
     }
 
     #[inline]
diff --git a/compiler/rustc_serialize/src/serialize.rs b/compiler/rustc_serialize/src/serialize.rs
index a012be2857e..fbbd13657ba 100644
--- a/compiler/rustc_serialize/src/serialize.rs
+++ b/compiler/rustc_serialize/src/serialize.rs
@@ -198,7 +198,7 @@ pub trait Decoder {
     fn read_f64(&mut self) -> f64;
     fn read_f32(&mut self) -> f32;
     fn read_char(&mut self) -> char;
-    fn read_str(&mut self) -> Cow<'_, str>;
+    fn read_str(&mut self) -> &str;
     fn read_raw_bytes_into(&mut self, s: &mut [u8]);
 }
 
@@ -313,7 +313,7 @@ impl<S: Encoder> Encodable<S> for String {
 
 impl<D: Decoder> Decodable<D> for String {
     fn decode(d: &mut D) -> String {
-        d.read_str().into_owned()
+        d.read_str().to_owned()
     }
 }