reach_core/storage/
traits.rs

1// SPDX-FileCopyrightText: 2023 eaon <eaon@posteo.net>
2// SPDX-License-Identifier: EUPL-1.2
3
4use std::path::PathBuf;
5
6use super::*;
7
8pub trait Storable {
9    fn store(&self, path: &PathBuf) -> Result<(), error::StorageError>
10    where
11        Self: ProstEncode,
12    {
13        Ok(fs::write(path, self.encode_to_vec())?)
14    }
15
16    fn load(path: &PathBuf) -> Result<Self, error::StorageError>
17    where
18        Self: ProstDecode,
19    {
20        Ok(Self::decode(fs::read(path)?)?)
21    }
22}