Struct hotshot_types::consensus::Consensus
source · pub struct Consensus<TYPES: NodeType> {
validated_state_map: BTreeMap<TYPES::Time, View<TYPES>>,
vid_shares: VidShares<TYPES>,
saved_da_certs: HashMap<TYPES::Time, DaCertificate<TYPES>>,
cur_view: TYPES::Time,
last_proposals: BTreeMap<TYPES::Time, Proposal<TYPES, QuorumProposal<TYPES>>>,
last_decided_view: TYPES::Time,
locked_view: TYPES::Time,
saved_leaves: CommitmentMap<Leaf<TYPES>>,
last_actions: HotShotActionViews<TYPES::Time>,
saved_payloads: BTreeMap<TYPES::Time, Arc<[u8]>>,
high_qc: QuorumCertificate<TYPES>,
pub metrics: Arc<ConsensusMetricsValue>,
}
Expand description
A reference to the consensus algorithm
This will contain the state of all rounds.
Fields§
§validated_state_map: BTreeMap<TYPES::Time, View<TYPES>>
The validated states that are currently loaded in memory.
All the VID shares we’ve received for current and future views.
saved_da_certs: HashMap<TYPES::Time, DaCertificate<TYPES>>
All the DA certs we’ve received for current and future views. view -> DA cert
cur_view: TYPES::Time
View number that is currently on.
last_proposals: BTreeMap<TYPES::Time, Proposal<TYPES, QuorumProposal<TYPES>>>
Last proposals we sent out, None if we haven’t proposed yet. Prevents duplicate proposals, and can be served to those trying to catchup
last_decided_view: TYPES::Time
last view had a successful decide event
locked_view: TYPES::Time
The locked_qc
view number
saved_leaves: CommitmentMap<Leaf<TYPES>>
Map of leaf hash -> leaf
- contains undecided leaves
- includes the MOST RECENT decided leaf
last_actions: HotShotActionViews<TYPES::Time>
Bundle of views which we performed the most recent action visibible to the network. Actions are votes and proposals for DA and Quorum
saved_payloads: BTreeMap<TYPES::Time, Arc<[u8]>>
Saved payloads.
Encoded transactions for every view if we got a payload for that view.
high_qc: QuorumCertificate<TYPES>
the highqc per spec
metrics: Arc<ConsensusMetricsValue>
A reference to the metrics trait
Implementations§
source§impl<TYPES: NodeType> Consensus<TYPES>
impl<TYPES: NodeType> Consensus<TYPES>
sourcepub fn new(
validated_state_map: BTreeMap<TYPES::Time, View<TYPES>>,
cur_view: TYPES::Time,
locked_view: TYPES::Time,
last_decided_view: TYPES::Time,
last_actioned_view: TYPES::Time,
last_proposals: BTreeMap<TYPES::Time, Proposal<TYPES, QuorumProposal<TYPES>>>,
saved_leaves: CommitmentMap<Leaf<TYPES>>,
saved_payloads: BTreeMap<TYPES::Time, Arc<[u8]>>,
high_qc: QuorumCertificate<TYPES>,
metrics: Arc<ConsensusMetricsValue>
) -> Self
pub fn new( validated_state_map: BTreeMap<TYPES::Time, View<TYPES>>, cur_view: TYPES::Time, locked_view: TYPES::Time, last_decided_view: TYPES::Time, last_actioned_view: TYPES::Time, last_proposals: BTreeMap<TYPES::Time, Proposal<TYPES, QuorumProposal<TYPES>>>, saved_leaves: CommitmentMap<Leaf<TYPES>>, saved_payloads: BTreeMap<TYPES::Time, Arc<[u8]>>, high_qc: QuorumCertificate<TYPES>, metrics: Arc<ConsensusMetricsValue> ) -> Self
Constructor.
sourcepub fn last_decided_view(&self) -> TYPES::Time
pub fn last_decided_view(&self) -> TYPES::Time
Get the last decided view.
sourcepub fn locked_view(&self) -> TYPES::Time
pub fn locked_view(&self) -> TYPES::Time
Get the locked view.
sourcepub fn high_qc(&self) -> &QuorumCertificate<TYPES>
pub fn high_qc(&self) -> &QuorumCertificate<TYPES>
Get the high QC.
sourcepub fn validated_state_map(&self) -> &BTreeMap<TYPES::Time, View<TYPES>>
pub fn validated_state_map(&self) -> &BTreeMap<TYPES::Time, View<TYPES>>
Get the validated state map.
sourcepub fn saved_leaves(&self) -> &CommitmentMap<Leaf<TYPES>>
pub fn saved_leaves(&self) -> &CommitmentMap<Leaf<TYPES>>
Get the saved leaves.
Get the vid shares.
sourcepub fn saved_da_certs(&self) -> &HashMap<TYPES::Time, DaCertificate<TYPES>>
pub fn saved_da_certs(&self) -> &HashMap<TYPES::Time, DaCertificate<TYPES>>
Get the saved DA certs.
sourcepub fn last_proposals(
&self
) -> &BTreeMap<TYPES::Time, Proposal<TYPES, QuorumProposal<TYPES>>>
pub fn last_proposals( &self ) -> &BTreeMap<TYPES::Time, Proposal<TYPES, QuorumProposal<TYPES>>>
Get the map of our recent proposals
sourcepub fn update_view(&mut self, view_number: TYPES::Time) -> Result<()>
pub fn update_view(&mut self, view_number: TYPES::Time) -> Result<()>
Update the current view.
§Errors
Can return an error when the new view_number is not higher than the existing view number.
sourcepub fn update_action(
&mut self,
action: HotShotAction,
view: TYPES::Time
) -> bool
pub fn update_action( &mut self, action: HotShotAction, view: TYPES::Time ) -> bool
Update the last actioned view internally for votes and proposals
Returns true if the action is for a newer view than the last action of that type
sourcepub fn reset_actions(&mut self)
pub fn reset_actions(&mut self)
reset last actions to genesis so we can resend events in tests
sourcepub fn update_proposed_view(
&mut self,
proposal: Proposal<TYPES, QuorumProposal<TYPES>>
) -> Result<()>
pub fn update_proposed_view( &mut self, proposal: Proposal<TYPES, QuorumProposal<TYPES>> ) -> Result<()>
Update the last proposal.
§Errors
Can return an error when the new view_number is not higher than the existing proposed view number.
sourcepub fn update_last_decided_view(
&mut self,
view_number: TYPES::Time
) -> Result<()>
pub fn update_last_decided_view( &mut self, view_number: TYPES::Time ) -> Result<()>
Update the last decided view.
§Errors
Can return an error when the new view_number is not higher than the existing decided view number.
sourcepub fn update_locked_view(&mut self, view_number: TYPES::Time) -> Result<()>
pub fn update_locked_view(&mut self, view_number: TYPES::Time) -> Result<()>
Update the locked view.
§Errors
Can return an error when the new view_number is not higher than the existing locked view number.
sourcepub fn update_validated_state_map(
&mut self,
view_number: TYPES::Time,
view: View<TYPES>
) -> Result<()>
pub fn update_validated_state_map( &mut self, view_number: TYPES::Time, view: View<TYPES> ) -> Result<()>
Update the validated state map with a new view_number/view combo.
§Errors
Can return an error when the new view contains less information than the exisiting view with the same view number.
sourcepub fn update_saved_leaves(&mut self, leaf: Leaf<TYPES>)
pub fn update_saved_leaves(&mut self, leaf: Leaf<TYPES>)
Update the saved leaves with a new leaf.
sourcepub fn update_saved_payloads(
&mut self,
view_number: TYPES::Time,
encoded_transaction: Arc<[u8]>
) -> Result<()>
pub fn update_saved_payloads( &mut self, view_number: TYPES::Time, encoded_transaction: Arc<[u8]> ) -> Result<()>
Update the saved payloads with a new encoded transaction.
§Errors
Can return an error when there’s an existing payload corresponding to the same view number.
sourcepub fn update_high_qc(
&mut self,
high_qc: QuorumCertificate<TYPES>
) -> Result<()>
pub fn update_high_qc( &mut self, high_qc: QuorumCertificate<TYPES> ) -> Result<()>
Update the high QC if given a newer one.
§Errors
Can return an error when the provided high_qc is not newer than the existing entry.
Add a new entry to the vid_shares map.
sourcepub fn update_saved_da_certs(
&mut self,
view_number: TYPES::Time,
cert: DaCertificate<TYPES>
)
pub fn update_saved_da_certs( &mut self, view_number: TYPES::Time, cert: DaCertificate<TYPES> )
Add a new entry to the da_certs map.
sourcepub fn visit_leaf_ancestors<F>(
&self,
start_from: TYPES::Time,
terminator: Terminator<TYPES::Time>,
ok_when_finished: bool,
f: F
) -> Result<(), HotShotError<TYPES>>where
F: FnMut(&Leaf<TYPES>, Arc<<TYPES as NodeType>::ValidatedState>, Option<Arc<<<TYPES as NodeType>::ValidatedState as ValidatedState<TYPES>>::Delta>>) -> bool,
pub fn visit_leaf_ancestors<F>(
&self,
start_from: TYPES::Time,
terminator: Terminator<TYPES::Time>,
ok_when_finished: bool,
f: F
) -> Result<(), HotShotError<TYPES>>where
F: FnMut(&Leaf<TYPES>, Arc<<TYPES as NodeType>::ValidatedState>, Option<Arc<<<TYPES as NodeType>::ValidatedState as ValidatedState<TYPES>>::Delta>>) -> bool,
gather information from the parent chain of leaves
§Errors
If the leaf or its ancestors are not found in storage
sourcepub fn collect_garbage(
&mut self,
old_anchor_view: TYPES::Time,
new_anchor_view: TYPES::Time
)
pub fn collect_garbage( &mut self, old_anchor_view: TYPES::Time, new_anchor_view: TYPES::Time )
Garbage collects based on state change right now, this removes from both the
saved_payloads
and validated_state_map
fields of Consensus
.
§Panics
On inconsistent stored entries
sourcepub fn decided_leaf(&self) -> Leaf<TYPES>
pub fn decided_leaf(&self) -> Leaf<TYPES>
Gets the last decided leaf.
§Panics
if the last decided view’s leaf does not exist in the state map or saved leaves, which should never happen.
sourcepub fn state(
&self,
view_number: TYPES::Time
) -> Option<&Arc<TYPES::ValidatedState>>
pub fn state( &self, view_number: TYPES::Time ) -> Option<&Arc<TYPES::ValidatedState>>
Gets the validated state with the given view number, if in the state map.
sourcepub fn state_and_delta(&self, view_number: TYPES::Time) -> StateAndDelta<TYPES>
pub fn state_and_delta(&self, view_number: TYPES::Time) -> StateAndDelta<TYPES>
Gets the validated state and state delta with the given view number, if in the state map.
sourcepub fn decided_state(&self) -> Arc<TYPES::ValidatedState>
pub fn decided_state(&self) -> Arc<TYPES::ValidatedState>
Gets the last decided validated state.
§Panics
If the last decided view’s state does not exist in the state map, which should never happen.
sourcepub async fn calculate_and_update_vid(
consensus: OuterConsensus<TYPES>,
view: <TYPES as NodeType>::Time,
membership: Arc<TYPES::Membership>,
private_key: &<TYPES::SignatureKey as SignatureKey>::PrivateKey
) -> Option<()>
pub async fn calculate_and_update_vid( consensus: OuterConsensus<TYPES>, view: <TYPES as NodeType>::Time, membership: Arc<TYPES::Membership>, private_key: &<TYPES::SignatureKey as SignatureKey>::PrivateKey ) -> Option<()>
Associated helper function:
Takes LockedConsensusState
which will be updated; locks it for read and write accordingly.
Calculates VidDisperse
based on the view, the txns and the membership,
and updates vid_shares
map with the signed VidDisperseShare
proposals.
Returned Option
indicates whether the update has actually happened or not.
Trait Implementations§
source§impl<TYPES: NodeType> Debug for Consensus<TYPES>where
BTreeMap<TYPES::Time, View<TYPES>>: Debug,
VidShares<TYPES>: Debug,
HashMap<TYPES::Time, DaCertificate<TYPES>>: Debug,
TYPES::Time: Debug,
BTreeMap<TYPES::Time, Proposal<TYPES, QuorumProposal<TYPES>>>: Debug,
CommitmentMap<Leaf<TYPES>>: Debug,
HotShotActionViews<TYPES::Time>: Debug,
BTreeMap<TYPES::Time, Arc<[u8]>>: Debug,
QuorumCertificate<TYPES>: Debug,
impl<TYPES: NodeType> Debug for Consensus<TYPES>where
BTreeMap<TYPES::Time, View<TYPES>>: Debug,
VidShares<TYPES>: Debug,
HashMap<TYPES::Time, DaCertificate<TYPES>>: Debug,
TYPES::Time: Debug,
BTreeMap<TYPES::Time, Proposal<TYPES, QuorumProposal<TYPES>>>: Debug,
CommitmentMap<Leaf<TYPES>>: Debug,
HotShotActionViews<TYPES::Time>: Debug,
BTreeMap<TYPES::Time, Arc<[u8]>>: Debug,
QuorumCertificate<TYPES>: Debug,
Auto Trait Implementations§
impl<TYPES> Freeze for Consensus<TYPES>where
<<TYPES as NodeType>::SignatureKey as SignatureKey>::QcType: Freeze,
<TYPES as NodeType>::Time: Freeze,
impl<TYPES> !RefUnwindSafe for Consensus<TYPES>
impl<TYPES> Send for Consensus<TYPES>
impl<TYPES> Sync for Consensus<TYPES>
impl<TYPES> Unpin for Consensus<TYPES>where
TYPES: Unpin,
<TYPES as NodeType>::BlockHeader: Unpin,
<TYPES as NodeType>::BlockPayload: Unpin,
<<TYPES as NodeType>::SignatureKey as SignatureKey>::QcType: Unpin,
<TYPES as NodeType>::Time: Unpin,
impl<TYPES> !UnwindSafe for Consensus<TYPES>
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata ) -> <T as Pointee>::Metadata
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
§impl<T> Conv for T
impl<T> Conv for T
§impl<F, W, T, D> Deserialize<With<T, W>, D> for F
impl<F, W, T, D> Deserialize<With<T, W>, D> for F
§fn deserialize(
&self,
deserializer: &mut D
) -> Result<With<T, W>, <D as Fallible>::Error>
fn deserialize( &self, deserializer: &mut D ) -> Result<With<T, W>, <D as Fallible>::Error>
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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>
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>
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§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
§impl<D> OwoColorize for D
impl<D> OwoColorize for D
§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
§fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>
fn on_yellow<'a>(&'a self) -> BgColorDisplay<'a, Yellow, Self>
§fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
fn magenta<'a>(&'a self) -> FgColorDisplay<'a, Magenta, Self>
§fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
fn on_magenta<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
§fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
fn on_purple<'a>(&'a self) -> BgColorDisplay<'a, Magenta, Self>
§fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>
fn default_color<'a>(&'a self) -> FgColorDisplay<'a, Default, Self>
§fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>
fn on_default_color<'a>(&'a self) -> BgColorDisplay<'a, Default, Self>
§fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>
fn bright_black<'a>(&'a self) -> FgColorDisplay<'a, BrightBlack, Self>
§fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>
fn on_bright_black<'a>(&'a self) -> BgColorDisplay<'a, BrightBlack, Self>
§fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>
fn bright_red<'a>(&'a self) -> FgColorDisplay<'a, BrightRed, Self>
§fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>
fn on_bright_red<'a>(&'a self) -> BgColorDisplay<'a, BrightRed, Self>
§fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>
fn bright_green<'a>(&'a self) -> FgColorDisplay<'a, BrightGreen, Self>
§fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>
fn on_bright_green<'a>(&'a self) -> BgColorDisplay<'a, BrightGreen, Self>
§fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>
fn bright_yellow<'a>(&'a self) -> FgColorDisplay<'a, BrightYellow, Self>
§fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>
fn on_bright_yellow<'a>(&'a self) -> BgColorDisplay<'a, BrightYellow, Self>
§fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>
fn bright_blue<'a>(&'a self) -> FgColorDisplay<'a, BrightBlue, Self>
§fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>
fn on_bright_blue<'a>(&'a self) -> BgColorDisplay<'a, BrightBlue, Self>
§fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
fn bright_magenta<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
§fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
fn on_bright_magenta<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
§fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
fn bright_purple<'a>(&'a self) -> FgColorDisplay<'a, BrightMagenta, Self>
§fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
fn on_bright_purple<'a>(&'a self) -> BgColorDisplay<'a, BrightMagenta, Self>
§fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>
fn bright_cyan<'a>(&'a self) -> FgColorDisplay<'a, BrightCyan, Self>
§fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>
fn on_bright_cyan<'a>(&'a self) -> BgColorDisplay<'a, BrightCyan, Self>
§fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>
fn bright_white<'a>(&'a self) -> FgColorDisplay<'a, BrightWhite, Self>
§fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>
fn on_bright_white<'a>(&'a self) -> BgColorDisplay<'a, BrightWhite, Self>
§fn blink_fast<'a>(&'a self) -> BlinkFastDisplay<'a, Self>
fn blink_fast<'a>(&'a self) -> BlinkFastDisplay<'a, Self>
§fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>
fn strikethrough<'a>(&'a self) -> StrikeThroughDisplay<'a, Self>
§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg
or
a color-specific method, such as OwoColorize::green
, Read more§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg
or
a color-specific method, such as OwoColorize::on_yellow
, Read more§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.