Skip to content

Commit baee2d5

Browse files
committed
Introduce AnOffersMessageFlow
- This commit introduces a new struct, `AnOffersMessageFlow`, which generically implements `OffersMessageFlow`. - In subsequent commits, this struct will be utilized for documentation purposes.
1 parent fde5b13 commit baee2d5

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

lightning/src/offers/flow.rs

+54
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,60 @@ use crate::sign::{EntropySource, NodeSigner};
3636
use crate::sync::Mutex;
3737
use crate::util::logger::{Logger, WithContext};
3838

39+
/// A trivial trait which describes any [`OffersMessageFlow`].
40+
///
41+
/// This is not exported to bindings users as general cover traits aren't useful in other
42+
/// languages.
43+
pub trait AnOffersMessageFlow {
44+
/// A type implementing [`EntropySource`].
45+
type EntropySource: EntropySource + ?Sized;
46+
/// A type that may be dereferenced to [`Self::EntropySource`].
47+
type ES: Deref<Target = Self::EntropySource>;
48+
49+
/// A type implementing [`OffersMessageCommons`].
50+
type OffersMessageCommons: OffersMessageCommons + ?Sized;
51+
/// A type that may be dereferenced to [`Self::OffersMessageCommons`].
52+
type OMC: Deref<Target = Self::OffersMessageCommons>;
53+
54+
/// A type implementing [`NodeSigner`].
55+
type NodeSigner: NodeSigner + ?Sized;
56+
/// A type that may be dereferenced to [`Self::NodeSigner`].
57+
type NS: Deref<Target = Self::NodeSigner>;
58+
59+
/// A type implementing [`Logger`].
60+
type Logger: Logger + ?Sized;
61+
/// A type that may be dereferenced to [`Self::Logger`].
62+
type L: Deref<Target = Self::Logger>;
63+
64+
/// Returns a reference to the actual [`OffersMessageFlow`] object.
65+
fn get_omf(&self) -> &OffersMessageFlow<Self::ES, Self::OMC, Self::NS, Self::L>;
66+
}
67+
68+
impl<ES: Deref, OMC: Deref, NS: Deref, L: Deref> AnOffersMessageFlow
69+
for OffersMessageFlow<ES, OMC, NS, L>
70+
where
71+
ES::Target: EntropySource,
72+
OMC::Target: OffersMessageCommons,
73+
NS::Target: NodeSigner,
74+
L::Target: Logger,
75+
{
76+
type EntropySource = ES::Target;
77+
type ES = ES;
78+
79+
type OffersMessageCommons = OMC::Target;
80+
type OMC = OMC;
81+
82+
type NodeSigner = NS::Target;
83+
type NS = NS;
84+
85+
type Logger = L::Target;
86+
type L = L;
87+
88+
fn get_omf(&self) -> &OffersMessageFlow<ES, OMC, NS, L> {
89+
self
90+
}
91+
}
92+
3993
/// TODO
4094
pub struct OffersMessageFlow<ES: Deref, OMC: Deref, NS: Deref, L: Deref>
4195
where

0 commit comments

Comments
 (0)