Skip to content

Commit 4d1c1a3

Browse files
authored
Merge pull request #956 from jkczyz/2021-06-validate-pub
Increase poll::Validate visibility to pub
2 parents 244ad83 + 7302c8c commit 4d1c1a3

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

lightning-block-sync/src/poll.rs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ pub enum ChainTip {
4444
}
4545

4646
/// The `Validate` trait defines behavior for validating chain data.
47-
pub(crate) trait Validate {
47+
///
48+
/// This trait is sealed and not meant to be implemented outside of this crate.
49+
pub trait Validate: sealed::Validate {
4850
/// The validated data wrapper which can be dereferenced to obtain the validated data.
4951
type T: std::ops::Deref<Target = Self>;
5052

@@ -156,16 +158,24 @@ impl std::ops::Deref for ValidatedBlock {
156158
}
157159
}
158160

161+
mod sealed {
162+
/// Used to prevent implementing [`super::Validate`] outside the crate but still allow its use.
163+
pub trait Validate {}
164+
165+
impl Validate for crate::BlockHeaderData {}
166+
impl Validate for bitcoin::blockdata::block::Block {}
167+
}
168+
159169
/// The canonical `Poll` implementation used for a single `BlockSource`.
160170
///
161-
/// Other `Poll` implementations must be built using `ChainPoller` as it provides the only means of
162-
/// validating chain data.
163-
pub struct ChainPoller<B: DerefMut<Target=T> + Sized , T: BlockSource> {
171+
/// Other `Poll` implementations should be built using `ChainPoller` as it provides the simplest way
172+
/// of validating chain data and checking consistency.
173+
pub struct ChainPoller<B: DerefMut<Target=T> + Sized, T: BlockSource> {
164174
block_source: B,
165175
network: Network,
166176
}
167177

168-
impl<B: DerefMut<Target=T> + Sized , T: BlockSource> ChainPoller<B, T> {
178+
impl<B: DerefMut<Target=T> + Sized, T: BlockSource> ChainPoller<B, T> {
169179
/// Creates a new poller for the given block source.
170180
///
171181
/// If the `network` parameter is mainnet, then the difficulty between blocks is checked for

0 commit comments

Comments
 (0)