Implement some persistency features
This commit is contained in:
@ -1,20 +1,29 @@
|
||||
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
|
||||
#[derive(Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
|
||||
#[derive(Clone, Debug, Deserialize, Serialize, Eq, Hash, PartialEq)]
|
||||
pub struct Sha256(#[serde(serialize_with = "as_hex", deserialize_with = "from_hex")] pub [u8; 32]);
|
||||
|
||||
fn hash_to_hex_string(hash: &[u8; 32]) -> String {
|
||||
use std::fmt::*;
|
||||
|
||||
let mut hex_string = String::with_capacity(64);
|
||||
for digit in hash.iter() {
|
||||
write!(hex_string, "{:02X}", digit).unwrap();
|
||||
}
|
||||
hex_string
|
||||
}
|
||||
|
||||
impl Sha256 {
|
||||
pub fn create_hex_string(&self) -> String {
|
||||
hash_to_hex_string(&self.0)
|
||||
}
|
||||
}
|
||||
|
||||
fn as_hex<S>(hash: &[u8; 32], serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
use std::fmt::*;
|
||||
|
||||
let mut hex_string = String::new();
|
||||
for digit in hash {
|
||||
write!(hex_string, "{:02X}", digit).unwrap();
|
||||
}
|
||||
|
||||
serializer.serialize_str(&hex_string)
|
||||
serializer.serialize_str(&hash_to_hex_string(hash))
|
||||
}
|
||||
|
||||
fn from_hex<'de, D>(deserializer: D) -> Result<[u8; 32], D::Error>
|
||||
|
@ -1,6 +1,6 @@
|
||||
use serde::{Deserialize, Deserializer, Serialize, Serializer};
|
||||
|
||||
#[derive(Clone, Debug, Deserialize, Serialize, Eq, PartialEq)]
|
||||
#[derive(Clone, Debug, Deserialize, Serialize, Eq, Hash, PartialEq)]
|
||||
pub enum TextureFormat {
|
||||
#[serde(rename = "png")]
|
||||
PNG,
|
||||
|
Reference in New Issue
Block a user