aboutsummaryrefslogtreecommitdiffstats
path: root/src/error.rs
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2024-11-28 18:00:30 +0000
committerLibravatar cel 🌸 <cel@bunny.garden>2024-11-28 18:00:30 +0000
commitaa940a8eac74aca8cd3c202a05092538d1140dda (patch)
treed14997232d48ca723dc2486f0a6346421c9af163 /src/error.rs
parent381af38a0910ca42ccb36568ebbcd147cfbd237b (diff)
downloadpeanuts-aa940a8eac74aca8cd3c202a05092538d1140dda.tar.gz
peanuts-aa940a8eac74aca8cd3c202a05092538d1140dda.tar.bz2
peanuts-aa940a8eac74aca8cd3c202a05092538d1140dda.zip
create element builder and refactor api
Diffstat (limited to 'src/error.rs')
-rw-r--r--src/error.rs26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/error.rs b/src/error.rs
index 85b5d70..dd8ea17 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -1,4 +1,8 @@
-use std::{num::ParseIntError, str::Utf8Error};
+use std::{
+ collections::{HashMap, VecDeque},
+ num::ParseIntError,
+ str::{FromStr, Utf8Error},
+};
use crate::{
element::{Content, Name, NamespaceDeclaration},
@@ -6,6 +10,19 @@ use crate::{
};
#[derive(Debug)]
+pub enum DeserializeError {
+ FromStr(String),
+ UnexpectedAttributes(HashMap<Name, String>),
+ UnexpectedContent(VecDeque<Content>),
+ MissingAttribute(Name),
+ IncorrectName(String),
+ IncorrectNamespace(String),
+ Unqualified,
+ MissingChild,
+ MissingValue,
+}
+
+#[derive(Debug)]
pub enum Error {
ReadError(std::io::Error),
Utf8Error(Utf8Error),
@@ -26,6 +43,13 @@ pub enum Error {
UnexpectedNumberOfContents(usize),
UnexpectedContent(Content),
UnexpectedElement(Name),
+ Deserialize(DeserializeError),
+}
+
+impl From<DeserializeError> for Error {
+ fn from(e: DeserializeError) -> Self {
+ Self::Deserialize(e)
+ }
}
impl From<std::io::Error> for Error {