dope_manifold/client/session/policy/
end.rs1use dope_core::driver::route::{Identity, KeyTag};
2use dope_net::wire::{self, failure, terminal};
3use o3::base::cell::region;
4
5use crate::client::conn;
6
7pub trait Sink<
9 'w,
10 'd,
11 W: wire::Spec<TerminalFailure = M> + 'w,
12 ID: Identity = KeyTag<0>,
13 M = <W as wire::Spec>::TerminalFailure,
14>
15{
16 fn fail(
17 &self,
18 conn: conn::Id<'d, ID>,
19 cause: terminal::Error<'w, W>,
20 region: &mut region::Token<region::Identity<'d>>,
21 );
22}
23
24impl<'w, 'd, W, P: ?Sized, ID: Identity> Sink<'w, 'd, W, ID, failure::Never> for P
25where
26 W: wire::Spec<TerminalFailure = failure::Never> + 'w,
27{
28 fn fail(
29 &self,
30 _: conn::Id<'d, ID>,
31 cause: terminal::Error<'w, W>,
32 _: &mut region::Token<region::Identity<'d>>,
33 ) {
34 cause.eliminate()
35 }
36}