]>
Witch of Git - jade-rose/blob - toolchain/src/lib.rs
2 #[cfg(target_arch = "wasm32")]
7 use std
::io
::{self, Read
};
10 Io
{ position
: usize, error
: io
::Error
},
13 pub fn disassemble(reader
: &mut impl io
::Read
) -> Result
<Vec
<Inst
>, Error
> {
14 let mut results
= Vec
::new();
15 let mut reader
= PositionedRead
::new(reader
);
17 match Inst
::decode(&mut reader
) {
18 Ok(inst
) => results
.push(inst
),
19 Err(err
) if err
.kind() == io
::ErrorKind
::UnexpectedEof
=> break,
21 return Err(Error
::Io
{
22 position
: reader
.position
,
31 struct PositionedRead
<'a
, R
> {
36 impl<'a
, R
> PositionedRead
<'a
, R
> {
37 pub fn new(inner
: &'a
mut R
) -> Self {
38 PositionedRead
{ inner
, position
: 0 }
42 impl<'a
, R
: Read
> Read
for PositionedRead
<'a
, R
> {
43 fn read(&mut self, buf
: &mut [u8]) -> io
::Result
<usize> {
44 let read
= self.inner
.read(buf
)?
;
45 self.position
+= read
;