From 3c62e22269a4f97d866b7de1abe37e42998014f0 Mon Sep 17 00:00:00 2001 From: Simon Heath Date: Tue, 20 Sep 2016 15:12:31 -0400 Subject: [PATCH] Added a from_read() method to RWops The ownership is a little squirrelly but this seems the best way. --- src/sdl2/rwops.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/sdl2/rwops.rs b/src/sdl2/rwops.rs index f54063a1..b69768f2 100644 --- a/src/sdl2/rwops.rs +++ b/src/sdl2/rwops.rs @@ -59,6 +59,21 @@ impl<'a> RWops<'a> { } } + /// Reads a `Read` object into a buffer and then passes it to `RWops.from_bytes`. + /// + /// The buffer must be provided to this function and must live as long as the + /// `RWops`, but the `RWops` does not take ownership of it. + pub fn from_read(r: &mut T, buffer: &'a mut Vec) -> Result, String> + where T: io::Read + Sized { + match r.read_to_end(buffer) { + Ok(_size) => RWops::from_bytes(buffer), + Err(ioerror) => { + let msg = format!("IO error: {}", ioerror); + Err(msg) + } + } + } + /// Prepares a read-write memory buffer for use with `RWops`. /// /// This method can only fail if the buffer size is zero.