diff options
| author | Ariel Ben-Yehuda <ariel.byd@gmail.com> | 2014-10-25 20:33:54 +0300 |
|---|---|---|
| committer | Ariel Ben-Yehuda <ariel.byd@gmail.com> | 2014-11-03 22:07:43 +0200 |
| commit | fbb90c3458e1db30fc62c96195c9e71ba2111aa4 (patch) | |
| tree | 7e1faee56bce0a40c502b987cd1759be6b008777 /src/libsyntax/print | |
| parent | 2790505c19b158a5494139dba084b6af82810b96 (diff) | |
| download | rust-fbb90c3458e1db30fc62c96195c9e71ba2111aa4.tar.gz rust-fbb90c3458e1db30fc62c96195c9e71ba2111aa4.zip | |
Clean-up transmutes in libsyntax
Diffstat (limited to 'src/libsyntax/print')
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 386fd8ae5a6..4cfc95d4c3f 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -169,17 +169,14 @@ pub fn to_string(f: |&mut State| -> IoResult<()>) -> String { let mut s = rust_printer(box MemWriter::new()); f(&mut s).unwrap(); eof(&mut s.s).unwrap(); - unsafe { + let wr = unsafe { // FIXME(pcwalton): A nasty function to extract the string from an `io::Writer` // that we "know" to be a `MemWriter` that works around the lack of checked // downcasts. - let obj: TraitObject = mem::transmute_copy(&s.s.out); - let wr: Box<MemWriter> = mem::transmute(obj.data); - let result = - String::from_utf8(wr.get_ref().as_slice().to_vec()).unwrap(); - mem::forget(wr); - result.to_string() - } + let obj: &TraitObject = mem::transmute(&s.s.out); + mem::transmute::<*mut (), &MemWriter>(obj.data) + }; + String::from_utf8(wr.get_ref().to_vec()).unwrap() } pub fn binop_to_string(op: BinOpToken) -> &'static str { |
