diff options
author | 2025-05-30 13:29:02 +0100 | |
---|---|---|
committer | 2025-05-30 13:29:02 +0100 | |
commit | 6d1f28eb79c6c70b058fcbae5047dbd744764149 (patch) | |
tree | 0dd308a59df464d7c4156a459b56c205c9deb81f /src/error.rs | |
parent | 826a17e34c167b53bd63544c5825b689a3a8fca7 (diff) | |
download | peanuts-6d1f28eb79c6c70b058fcbae5047dbd744764149.tar.gz peanuts-6d1f28eb79c6c70b058fcbae5047dbd744764149.tar.bz2 peanuts-6d1f28eb79c6c70b058fcbae5047dbd744764149.zip |
doc: everything
Diffstat (limited to 'src/error.rs')
-rw-r--r-- | src/error.rs | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/error.rs b/src/error.rs index 41c3bfe..26b7766 100644 --- a/src/error.rs +++ b/src/error.rs @@ -1,6 +1,5 @@ use std::{ collections::{HashMap, VecDeque}, - fmt, num::ParseIntError, str::Utf8Error, sync::Arc, @@ -15,35 +14,49 @@ use crate::{ Element, }; +/// Error type for the `FromElement` trait. Used when deserialising from an `Element`. #[derive(Error, Debug, Clone)] pub enum DeserializeError { + /// Could not parse string. #[error("could not parse string {0:?} to requested value")] FromStr(String), + /// Unexpected attributes. #[error("unexpected attributes {0:?}")] UnexpectedAttributes(HashMap<Name, String>), + /// Unexpected element content. #[error("unexpected element content: {0:?}")] UnexpectedContent(VecDeque<Content>), + /// Missing attribute. #[error("attribute `{0:?}` missing")] MissingAttribute(Name), + /// Incorrect localname encountered. #[error("incorrect localname: expected `{expected:?}`, found `{found:?}`")] IncorrectName { expected: String, found: String }, + /// Incorrect namespace encountered. #[error("incorrect namespace: expected `{expected:?}`, found `{found:?}`")] IncorrectNamespace { expected: String, found: String }, + /// Unqualified namespace when expecting qualified namespace. #[error("unqualified namespace: expected `{expected:?}`")] Unqualified { expected: String }, + /// Element missing expected child. #[error("element missing expected child")] MissingChild, + /// Element missing expected text value. #[error("element missing expected text value")] MissingValue, // not used by crate (yet), but may be used by consumers implementing FromElement + /// Unexpected element. #[error("unexpected element: {0:?}")] UnexpectedElement(Element), + /// Attribute is an empty string. #[error("attribute `{0}` is an empty string")] AttributeEmptyString(String), + /// Empty string. #[error("empty string")] EmptyString, } +/// General error type for functions in the crate. // TODO: add error context (usually the stanza) #[derive(Error, Debug, Clone)] pub enum Error { @@ -82,22 +95,27 @@ pub enum Error { Websocket(#[from] WebsocketError), } +/// Websocket-related errors. #[cfg(target_arch = "wasm32")] #[derive(Error, Debug, Clone)] pub enum WebsocketError { + /// Websocket write error. #[error("write")] Write, + /// Invalid encoding. #[error("invalid encoding")] InvalidEncoding, + /// Can't decode blob. #[error("can't decode blob")] CantDecodeBlob, + /// Unknown data type. #[error("unknown data type")] UnknownDataType, } #[cfg(target_arch = "wasm32")] impl From<JsValue> for Error { - fn from(e: JsValue) -> Self { + fn from(_e: JsValue) -> Self { Self::Websocket(WebsocketError::Write) } } @@ -108,12 +126,16 @@ impl From<std::io::Error> for Error { } } +/// Character reference decode error. #[derive(Error, Debug, Clone)] pub enum CharRefError { + /// Int parsing. #[error("int parsing: {0}")] ParseInt(#[from] ParseIntError), + /// Integer is not a valid char. #[error("u32 `{0}` does not represent a valid char")] IntegerNotAChar(u32), + /// Character is an invalid XML char. #[error("`{0}` is not a valid xml char")] InvalidXMLChar(char), } |