tuwunel_database/map/
stream.rs1use std::sync::Arc;
2
3use futures::{Stream, StreamExt};
4use rocksdb::Direction;
5use serde::Deserialize;
6use tuwunel_core::{Result, implement};
7
8use super::seek::seek_stream;
9use crate::{keyval, keyval::KeyVal, stream};
10
11#[implement(super::Map)]
16pub fn stream<'a, K, V>(
17 self: &'a Arc<Self>,
18) -> impl Stream<Item = Result<KeyVal<'_, K, V>>> + Send
19where
20 K: Deserialize<'a> + Send,
21 V: Deserialize<'a> + Send,
22{
23 self.raw_stream()
24 .map(keyval::result_deserialize::<K, V>)
25}
26
27#[implement(super::Map)]
32#[tracing::instrument(skip(self), fields(%self), level = "trace")]
33pub fn raw_stream(self: &Arc<Self>) -> impl Stream<Item = Result<KeyVal<'_>>> + Send {
34 seek_stream::<stream::Items<'_>, _>(self, Direction::Forward, None)
35}