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}