diff options
| author | mat <github@matdoes.dev> | 2022-04-22 04:33:58 +0000 |
|---|---|---|
| committer | mat <github@matdoes.dev> | 2022-04-22 04:33:58 +0000 |
| commit | 248f752748a0033db7f8242ee0ecd73ea8ce8ec9 (patch) | |
| tree | 5412418d61b91d5b4174685cdb544a561e22eae6 /azalea-nbt/src | |
| parent | 7cdd4171453ead8645b082f0cf5879f7d1a39660 (diff) | |
| download | azalea-drasl-248f752748a0033db7f8242ee0ecd73ea8ce8ec9.tar.xz | |
simplify error handling
Diffstat (limited to 'azalea-nbt/src')
| -rwxr-xr-x[-rw-r--r--] | azalea-nbt/src/decode.rs | 34 | ||||
| -rwxr-xr-x[-rw-r--r--] | azalea-nbt/src/encode.rs | 0 | ||||
| -rwxr-xr-x[-rw-r--r--] | azalea-nbt/src/error.rs | 11 | ||||
| -rwxr-xr-x[-rw-r--r--] | azalea-nbt/src/lib.rs | 0 | ||||
| -rwxr-xr-x[-rw-r--r--] | azalea-nbt/src/tag.rs | 0 |
5 files changed, 28 insertions, 17 deletions
diff --git a/azalea-nbt/src/decode.rs b/azalea-nbt/src/decode.rs index 41689a46..e4968811 100644..100755 --- a/azalea-nbt/src/decode.rs +++ b/azalea-nbt/src/decode.rs @@ -11,13 +11,13 @@ async fn read_string<R>(stream: &mut R) -> Result<String, Error> where R: AsyncRead + std::marker::Unpin, { - let length = stream.read_u16().await.map_err(|_| Error::InvalidTag)?; + let length = stream.read_u16().await?; let mut buf = Vec::with_capacity(length as usize); for _ in 0..length { - buf.push(stream.read_u8().await.map_err(|_| Error::InvalidTag)?); + buf.push(stream.read_u8().await?); } - String::from_utf8(buf).map_err(|_| Error::InvalidTag) + Ok(String::from_utf8(buf)?) } impl Tag { @@ -31,26 +31,26 @@ impl Tag { // a TAG_Compound, and is not named despite being in a TAG_Compound 0 => Tag::End, // A single signed byte - 1 => Tag::Byte(stream.read_i8().await.map_err(|_| Error::InvalidTag)?), + 1 => Tag::Byte(stream.read_i8().await?), // A single signed, big endian 16 bit integer - 2 => Tag::Short(stream.read_i16().await.map_err(|_| Error::InvalidTag)?), + 2 => Tag::Short(stream.read_i16().await?), // A single signed, big endian 32 bit integer - 3 => Tag::Int(stream.read_i32().await.map_err(|_| Error::InvalidTag)?), + 3 => Tag::Int(stream.read_i32().await?), // A single signed, big endian 64 bit integer - 4 => Tag::Long(stream.read_i64().await.map_err(|_| Error::InvalidTag)?), + 4 => Tag::Long(stream.read_i64().await?), // A single, big endian IEEE-754 single-precision floating point // number (NaN possible) - 5 => Tag::Float(stream.read_f32().await.map_err(|_| Error::InvalidTag)?), + 5 => Tag::Float(stream.read_f32().await?), // A single, big endian IEEE-754 double-precision floating point // number (NaN possible) - 6 => Tag::Double(stream.read_f64().await.map_err(|_| Error::InvalidTag)?), + 6 => Tag::Double(stream.read_f64().await?), // A length-prefixed array of signed bytes. The prefix is a signed // integer (thus 4 bytes) 7 => { - let length = stream.read_i32().await.map_err(|_| Error::InvalidTag)?; + let length = stream.read_i32().await?; let mut bytes = Vec::with_capacity(length as usize); for _ in 0..length { - bytes.push(stream.read_i8().await.map_err(|_| Error::InvalidTag)?); + bytes.push(stream.read_i8().await?); } Tag::ByteArray(bytes) } @@ -67,8 +67,8 @@ impl Tag { // another reference implementation by Mojang uses 1 instead; // parsers should accept any type if the length is <= 0). 9 => { - let type_id = stream.read_u8().await.map_err(|_| Error::InvalidTag)?; - let length = stream.read_i32().await.map_err(|_| Error::InvalidTag)?; + let type_id = stream.read_u8().await?; + let length = stream.read_i32().await?; let mut list = Vec::with_capacity(length as usize); for _ in 0..length { list.push(Tag::read_known(stream, type_id).await?); @@ -94,20 +94,20 @@ impl Tag { // signed integer (thus 4 bytes) and indicates the number of 4 byte // integers. 11 => { - let length = stream.read_i32().await.map_err(|_| Error::InvalidTag)?; + let length = stream.read_i32().await?; let mut ints = Vec::with_capacity(length as usize); for _ in 0..length { - ints.push(stream.read_i32().await.map_err(|_| Error::InvalidTag)?); + ints.push(stream.read_i32().await?); } Tag::IntArray(ints) } // A length-prefixed array of signed longs. The prefix is a signed // integer (thus 4 bytes) and indicates the number of 8 byte longs. 12 => { - let length = stream.read_i32().await.map_err(|_| Error::InvalidTag)?; + let length = stream.read_i32().await?; let mut longs = Vec::with_capacity(length as usize); for _ in 0..length { - longs.push(stream.read_i64().await.map_err(|_| Error::InvalidTag)?); + longs.push(stream.read_i64().await?); } Tag::LongArray(longs) } diff --git a/azalea-nbt/src/encode.rs b/azalea-nbt/src/encode.rs index 9ce4faf4..9ce4faf4 100644..100755 --- a/azalea-nbt/src/encode.rs +++ b/azalea-nbt/src/encode.rs diff --git a/azalea-nbt/src/error.rs b/azalea-nbt/src/error.rs index 05ff15e0..278d2770 100644..100755 --- a/azalea-nbt/src/error.rs +++ b/azalea-nbt/src/error.rs @@ -14,3 +14,14 @@ impl std::fmt::Display for Error { } } } + +impl From<std::io::Error> for Error { + fn from(err: std::io::Error) -> Self { + Error::WriteError + } +} +impl From<std::string::FromUtf8Error> for Error { + fn from(err: std::string::FromUtf8Error) -> Self { + Error::WriteError + } +}
\ No newline at end of file diff --git a/azalea-nbt/src/lib.rs b/azalea-nbt/src/lib.rs index d14fd929..d14fd929 100644..100755 --- a/azalea-nbt/src/lib.rs +++ b/azalea-nbt/src/lib.rs diff --git a/azalea-nbt/src/tag.rs b/azalea-nbt/src/tag.rs index f11b8889..f11b8889 100644..100755 --- a/azalea-nbt/src/tag.rs +++ b/azalea-nbt/src/tag.rs |
