misty_vm/client/
traits.rs1use crate::{
2 client::{MistyClientHandle, MistyReadonlyClientHandle},
3 controllers::MistyControllerContext,
4};
5
6pub trait AsMistyClientHandle<'a>: Copy {
7 fn handle(self) -> MistyClientHandle<'a>;
8}
9
10impl<'a> AsMistyClientHandle<'a> for MistyClientHandle<'a> {
11 fn handle(self) -> MistyClientHandle<'a> {
12 self
13 }
14}
15
16impl<'a> AsMistyClientHandle<'a> for &'a MistyControllerContext<'a> {
17 fn handle(self) -> MistyClientHandle<'a> {
18 self.handle
19 }
20}
21
22pub trait AsReadonlyMistyClientHandle<'a>: Copy {
23 fn readonly_handle(self) -> MistyReadonlyClientHandle<'a>;
24}
25
26impl<'a, S> AsReadonlyMistyClientHandle<'a> for S
27where
28 S: AsMistyClientHandle<'a>,
29{
30 fn readonly_handle(self) -> MistyReadonlyClientHandle<'a> {
31 MistyReadonlyClientHandle {
32 inner: self.handle().inner,
33 }
34 }
35}
36
37impl<'a> AsReadonlyMistyClientHandle<'a> for MistyReadonlyClientHandle<'a> {
38 fn readonly_handle(self) -> MistyReadonlyClientHandle<'a> {
39 self
40 }
41}