aboutsummaryrefslogtreecommitdiff
path: root/apps/koffice/libko/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'apps/koffice/libko/src/lib.rs')
-rw-r--r--apps/koffice/libko/src/lib.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/apps/koffice/libko/src/lib.rs b/apps/koffice/libko/src/lib.rs
new file mode 100644
index 000000000000..33d6b38ae1b1
--- /dev/null
+++ b/apps/koffice/libko/src/lib.rs
@@ -0,0 +1,35 @@
+//! A library that provides basic building blocks of k-office tools
+
+pub mod cass;
+
+mod client;
+pub use client::*;
+
+mod invoice;
+pub use invoice::*;
+
+mod proj;
+pub use proj::*;
+
+mod store;
+pub use store::*;
+
+use serde::{de::DeserializeOwned, Serialize};
+
+pub trait Io {
+ fn to_yaml(&self) -> String;
+ fn from_yaml(s: impl Into<String>) -> Self;
+}
+
+impl<T> Io for T
+where
+ T: Serialize + DeserializeOwned,
+{
+ fn to_yaml(&self) -> String {
+ serde_yaml::to_string(self).unwrap()
+ }
+
+ fn from_yaml(s: impl Into<String>) -> Self {
+ serde_yaml::from_str(s.into().as_str()).unwrap()
+ }
+}