changeset 1: |
e4f8df713d55 |
parent: |
eb8ed24e8a76
|
child: |
8f59e2f1b8c4 |
author: |
ellis <ellis@rwest.io> |
date: |
Sun, 30 Apr 2023 22:24:18 -0400 |
permissions: |
-rw-r--r-- |
description: |
scaffolding from lives past |
1 //! obj/src/lib.rs --- Objective type library 3 pub use err::{Error,Result}; 7 use ron::extensions::Extensions; 8 use serde::{de::DeserializeOwned, Deserialize, Serialize}; 11 /// common trait for all config modules. This trait provides functions 12 /// for de/serializing to/from RON, updating fields, and formatting. 13 pub trait Configure: Objective { 14 fn update(&self) -> Result<()> { 20 /// Define Object behaviors, implemented by Objects 22 fn encode(&self) -> Result<Vec<u8>> 26 Ok(bincode::serialize(self)?) 29 fn encode_into<W>(&self, writer: W) -> Result<()> 34 Ok(bincode::serialize_into(writer, self)?) 37 fn decode<'a>(&self, bytes: &'a [u8]) -> Result<Self> 39 Self: Deserialize<'a>, 41 Ok(bincode::deserialize(bytes)?) 44 fn decode_from<R>(&self, rdr: R) -> Result<Self> 47 Self: DeserializeOwned, 49 Ok(bincode::deserialize_from(rdr)?) 52 fn to_ron_writer<W>(&self, writer: W) -> Result<()> 57 Ok(ron::ser::to_writer_pretty( 60 ron::ser::PrettyConfig::new() 61 .indentor(" ".to_owned()) 62 .extensions(Extensions::all()), 66 fn to_ron_string(&self) -> Result<String> 70 Ok(ron::ser::to_string_pretty( 72 ron::ser::PrettyConfig::new().indentor(" ".to_owned()), 76 fn from_ron_reader<R>(&self, mut rdr: R) -> Result<Self> 79 Self: DeserializeOwned, 81 let mut bytes = Vec::new(); 82 rdr.read_to_end(&mut bytes)?; 83 Ok(ron::de::from_bytes(&bytes)?) 86 fn from_ron_str<'a>(s: &'a str) -> Result<Self> 88 Self: Deserialize<'a>, 90 Ok(ron::de::from_bytes(s.as_bytes())?) 93 fn to_json_writer<W>(&self, writer: W) -> Result<()> 98 // let formatter = serde_json::ser::PrettyFormatter::with_indent(b" "); 99 Ok(serde_json::ser::to_writer_pretty(writer, &self)?) 102 fn to_json_string(&self) -> Result<String> 106 Ok(serde_json::ser::to_string_pretty(&self)?) 109 fn from_json_reader<R>(&self, mut rdr: R) -> Result<Self> 112 Self: DeserializeOwned, 114 let mut bytes = Vec::new(); 115 rdr.read_to_end(&mut bytes)?; 116 Ok(serde_json::de::from_slice(&bytes)?) 119 fn from_json_str<'a>(s: &'a str) -> Result<Self> 121 Self: Deserialize<'a>, 123 Ok(serde_json::de::from_slice(s.as_bytes())?)