linera_persistent/
memory.rs

1// Copyright (c) Zefchain Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4use super::Persist;
5
6pub type Error = std::convert::Infallible;
7
8/// A dummy [`Persist`] implementation that doesn't persist anything, but holds the value
9/// in memory.
10#[derive(Default, derive_more::Deref)]
11pub struct Memory<T> {
12    #[deref]
13    value: T,
14}
15
16impl<T> Memory<T> {
17    pub fn new(value: T) -> Self {
18        Self { value }
19    }
20}
21
22impl<T: Send> Persist for Memory<T> {
23    type Error = Error;
24
25    fn as_mut(&mut self) -> &mut T {
26        &mut self.value
27    }
28
29    fn into_value(self) -> T {
30        self.value
31    }
32
33    async fn persist(&mut self) -> Result<(), Error> {
34        Ok(())
35    }
36}