pub struct InMemStorage<D> { /* private fields */ }
Expand description
A dialogue storage based on std::collections::HashMap
.
§Note
All your dialogues will be lost after you restart your bot. If you need to
store them somewhere on a drive, you should use e.g.
super::SqliteStorage
or implement your own.
Implementations§
Source§impl<S> InMemStorage<S>
impl<S> InMemStorage<S>
Sourcepub fn new() -> Arc<Self> ⓘ
pub fn new() -> Arc<Self> ⓘ
Examples found in repository?
examples/purchase.rs (line 55)
48async fn main() {
49 pretty_env_logger::init();
50 log::info!("Starting purchase bot...");
51
52 let bot = Bot::from_env();
53
54 Dispatcher::builder(bot, schema())
55 .dependencies(dptree::deps![InMemStorage::<State>::new()])
56 .enable_ctrlc_handler()
57 .build()
58 .dispatch()
59 .await;
60}
More examples
examples/deep_linking.rs (line 58)
40async fn main() {
41 pretty_env_logger::init();
42 log::info!("Starting deep linking bot...");
43
44 let bot = Bot::from_env();
45
46 let handler = dialogue::enter::<Update, InMemStorage<State>, State, _>()
47 .branch(
48 Update::filter_message()
49 .filter_command::<StartCommand>()
50 .branch(case![StartCommand::Start(start)].endpoint(start)),
51 )
52 .branch(
53 Update::filter_message()
54 .branch(case![State::WriteToSomeone { id }].endpoint(send_message)),
55 );
56
57 Dispatcher::builder(bot, handler)
58 .dependencies(deps![InMemStorage::<State>::new()])
59 .enable_ctrlc_handler()
60 .build()
61 .dispatch()
62 .await;
63}
examples/dialogue.rs (line 53)
36async fn main() {
37 pretty_env_logger::init();
38 log::info!("Starting dialogue bot...");
39
40 let bot = Bot::from_env();
41
42 Dispatcher::builder(
43 bot,
44 Update::filter_message()
45 .enter_dialogue::<Message, InMemStorage<State>, State>()
46 .branch(dptree::case![State::Start].endpoint(start))
47 .branch(dptree::case![State::ReceiveFullName].endpoint(receive_full_name))
48 .branch(dptree::case![State::ReceiveAge { full_name }].endpoint(receive_age))
49 .branch(
50 dptree::case![State::ReceiveLocation { full_name, age }].endpoint(receive_location),
51 ),
52 )
53 .dependencies(dptree::deps![InMemStorage::<State>::new()])
54 .enable_ctrlc_handler()
55 .build()
56 .dispatch()
57 .await;
58}
Trait Implementations§
Source§impl<D: Debug> Debug for InMemStorage<D>
impl<D: Debug> Debug for InMemStorage<D>
Source§impl<D> Storage<D> for InMemStorage<D>
impl<D> Storage<D> for InMemStorage<D>
type Error = InMemStorageError
Source§fn remove_dialogue(
self: Arc<Self>,
chat_id: ChatId,
) -> BoxFuture<'static, Result<(), Self::Error>>where
D: Send + 'static,
fn remove_dialogue(
self: Arc<Self>,
chat_id: ChatId,
) -> BoxFuture<'static, Result<(), Self::Error>>where
D: Send + 'static,
Removes a dialogue indexed by
chat_id
. Read moreSource§fn update_dialogue(
self: Arc<Self>,
chat_id: ChatId,
dialogue: D,
) -> BoxFuture<'static, Result<(), Self::Error>>where
D: Send + 'static,
fn update_dialogue(
self: Arc<Self>,
chat_id: ChatId,
dialogue: D,
) -> BoxFuture<'static, Result<(), Self::Error>>where
D: Send + 'static,
Updates a dialogue indexed by
chat_id
with dialogue
.Auto Trait Implementations§
impl<D> !Freeze for InMemStorage<D>
impl<D> !RefUnwindSafe for InMemStorage<D>
impl<D> Send for InMemStorage<D>where
D: Send,
impl<D> Sync for InMemStorage<D>where
D: Send,
impl<D> Unpin for InMemStorage<D>where
D: Unpin,
impl<D> UnwindSafe for InMemStorage<D>where
D: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Erasable for T
impl<T> Erasable for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more