aboutsummaryrefslogtreecommitdiff
path: root/mingling_core/src/renderer/structural/error.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-06-26 06:27:16 +0800
committer魏曹先生 <1992414357@qq.com>2026-06-26 06:41:01 +0800
commitd1a74ce57e5be72436376a829e9c7e1e7c1c561b (patch)
tree6ac923671fc09f1c47b613869d793ed3e04b91db /mingling_core/src/renderer/structural/error.rs
parente735671acb3a81e1b7e334e56b9ef3963ba0c2fc (diff)
refactor(general_renderer): rename to structural_renderer
Diffstat (limited to 'mingling_core/src/renderer/structural/error.rs')
-rw-r--r--mingling_core/src/renderer/structural/error.rs68
1 files changed, 68 insertions, 0 deletions
diff --git a/mingling_core/src/renderer/structural/error.rs b/mingling_core/src/renderer/structural/error.rs
new file mode 100644
index 0000000..a7fbc75
--- /dev/null
+++ b/mingling_core/src/renderer/structural/error.rs
@@ -0,0 +1,68 @@
+/// Represents an error that occurs during serialization of a structural renderer.
+///
+/// This error stores a human-readable message describing what went wrong
+/// during the serialization process.
+#[derive(Debug)]
+pub struct StructuralRendererSerializeError {
+ /// The underlying error message.
+ error: String,
+}
+
+impl StructuralRendererSerializeError {
+ #[must_use]
+ pub fn new(error: String) -> Self {
+ Self { error }
+ }
+}
+
+impl From<&str> for StructuralRendererSerializeError {
+ fn from(s: &str) -> Self {
+ Self::new(s.to_string())
+ }
+}
+
+impl std::ops::Deref for StructuralRendererSerializeError {
+ type Target = String;
+
+ fn deref(&self) -> &Self::Target {
+ &self.error
+ }
+}
+
+impl From<StructuralRendererSerializeError> for String {
+ fn from(val: StructuralRendererSerializeError) -> Self {
+ val.error
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn new_creates_error_with_message() {
+ let msg = "serialization failed".to_string();
+ let err = StructuralRendererSerializeError::new(msg.clone());
+ assert_eq!(err.error, msg);
+ }
+
+ #[test]
+ fn from_str_creates_error_from_string_slice() {
+ let err: StructuralRendererSerializeError = "oops".into();
+ assert_eq!(err.error, "oops");
+ }
+
+ #[test]
+ fn deref_accesses_inner_error_string() {
+ let err = StructuralRendererSerializeError::new("inner message".to_string());
+ let derefed: &String = &err;
+ assert_eq!(derefed, "inner message");
+ }
+
+ #[test]
+ fn into_string_extracts_message() {
+ let err = StructuralRendererSerializeError::new("extract me".to_string());
+ let s: String = err.into();
+ assert_eq!(s, "extract me");
+ }
+}