aboutsummaryrefslogtreecommitdiff
path: root/azalea-nbt/src
diff options
context:
space:
mode:
authormat <github@matdoes.dev>2022-04-22 04:33:58 +0000
committermat <github@matdoes.dev>2022-04-22 04:33:58 +0000
commit248f752748a0033db7f8242ee0ecd73ea8ce8ec9 (patch)
tree5412418d61b91d5b4174685cdb544a561e22eae6 /azalea-nbt/src
parent7cdd4171453ead8645b082f0cf5879f7d1a39660 (diff)
downloadazalea-drasl-248f752748a0033db7f8242ee0ecd73ea8ce8ec9.tar.xz
simplify error handling
Diffstat (limited to 'azalea-nbt/src')
-rwxr-xr-x[-rw-r--r--]azalea-nbt/src/decode.rs34
-rwxr-xr-x[-rw-r--r--]azalea-nbt/src/encode.rs0
-rwxr-xr-x[-rw-r--r--]azalea-nbt/src/error.rs11
-rwxr-xr-x[-rw-r--r--]azalea-nbt/src/lib.rs0
-rwxr-xr-x[-rw-r--r--]azalea-nbt/src/tag.rs0
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