pub enum Token<'a> {
Show 397 variants
Error,
Always,
And,
Assign,
Begin,
Buf,
Bufif0,
Bufif1,
Case,
Casex,
Casez,
Cmos,
Deassign,
Default,
Defparam,
Disable,
Edge,
Else,
End,
Endcase,
Endfunction,
Endmodule,
Endprimitive,
Endspecify,
Endtable,
Endtask,
Event,
For,
Force,
Forever,
Fork,
Function,
Highz0,
Highz1,
If,
Ifnone,
Initial,
Inout,
Input,
Integer,
Join,
Large,
Macromodule,
Medium,
Module,
Nand,
Negedge,
Nmos,
Nor,
Not,
Notif0,
Notif1,
Or,
Output,
Parameter,
Pmos,
Posedge,
Primitive,
Pull0,
Pull1,
Pulldown,
Pullup,
Rcmos,
Real,
Realtime,
Reg,
Release,
Repeat,
Rnmos,
Rpmos,
Rtran,
Rtranif0,
Rtranif1,
Scalared,
Small,
Specify,
Specparam,
Strong0,
Strong1,
Supply0,
Supply1,
Table,
Task,
Time,
Tran,
Tranif0,
Tranif1,
Tri,
Tri0,
Tri1,
Triand,
Trior,
Trireg,
Vectored,
Wait,
Wand,
Weak0,
Weak1,
While,
Wire,
Wor,
Xnor,
Xor,
Automatic,
Cell,
Config,
Design,
Endconfig,
Endgenerate,
Generate,
Genvar,
Incdir,
Include,
Instance,
Liblist,
Library,
Localparam,
Noshowcancelled,
PulsestyleOndetect,
PulsestyleOnevent,
Showcancelled,
Signed,
Unsigned,
Use,
Uwire,
Alias,
AlwaysComb,
AlwaysFf,
AlwaysLatch,
Assert,
Assume,
Before,
Bind,
Bins,
Binsof,
Bit,
Break,
Byte,
Chandle,
Class,
Clocking,
Const,
Constraint,
Context,
Continue,
Cover,
Covergroup,
Coverpoint,
Cross,
Dist,
Do,
Endclass,
Endclocking,
Endgroup,
Endinterface,
Endpackage,
Endprogram,
Endproperty,
Endsequence,
Enum,
Expect,
Export,
Extends,
Extern,
Final,
FirstMatch,
Foreach,
Forkjoin,
Iff,
IgnoreBins,
IllegalBins,
Import,
Inside,
Int,
Interface,
Intersect,
JoinAny,
JoinNone,
Local,
Logic,
Longint,
Matches,
Modport,
New,
Null,
Package,
Packed,
Priority,
Program,
Property,
Protected,
Pure,
Rand,
Randc,
Randcase,
Randsequence,
Ref,
Return,
Sequence,
Shortint,
Shortreal,
Solve,
Static,
String,
Struct,
Super,
Tagged,
This,
Throughout,
Timeprecision,
Timeunit,
Type,
Typedef,
Union,
Unique,
Var,
Virtual,
Void,
WaitOrder,
Wildcard,
With,
Within,
AcceptOn,
Checker,
Endchecker,
Eventually,
Global,
Implies,
Let,
Nexttime,
RejectOn,
Restrict,
SAlways,
SEventually,
SNexttime,
SUntil,
SUntilWith,
Strong,
SyncAcceptOn,
SyncRejectOn,
Unique0,
Until,
UntilWith,
Untyped,
Weak,
Implements,
Interconnect,
Nettype,
Soft,
DirUnderscoreFile,
DirUnderscoreLine,
DirBeginKeywords,
DirCelldefine,
DirDefaultNettype,
DirDefine,
DirElse,
DirElsif,
DirEndKeywords,
DirEndcelldefine,
DirEndif,
DirIfdef,
DirIfndef,
DirInclude,
DirLine,
DirNounconnectedDrive,
DirPragma,
DirResetall,
DirTimescale,
DirUnconnectedDrive,
DirUndef,
DirUndefineall,
Plus,
Minus,
Exclamation,
Quest,
Tilde,
Amp,
TildeAmp,
Pipe,
TildePipe,
Caret,
TildeCaret,
CaretTilde,
Star,
Slash,
Percent,
EqEq,
ExclEq,
PlusEq,
MinusEq,
StarEq,
SlashEq,
PercentEq,
AmpEq,
PipeEq,
CaretEq,
EqEqEq,
ExclEqEq,
EqEqQuest,
ExclEqQuest,
AmpAmp,
AmpAmpAmp,
PipePipe,
StarStar,
Lt,
LtEq,
Gt,
GtEq,
GtGt,
LtLt,
GtGtEq,
LtLtEq,
GtGtGt,
LtLtLt,
GtGtGtEq,
LtLtLtEq,
MinusGt,
MinusGtGt,
LtMinusGt,
PlusPlus,
MinusMinus,
PlusColon,
MinusColon,
PlusSlashMinus,
PlusPercentMinus,
Paren,
EParen,
Bracket,
EBracket,
Brace,
EBrace,
Colon,
SColon,
Apost,
Comma,
Period,
Pound,
Dollar,
At,
AtAt,
Eq,
ColonColon,
ColonEq,
ColonSlash,
PoundPound,
PoundMinusPound,
PoundEqPound,
EqGt,
StarGt,
PipeMinusGt,
PipeEqGt,
Bslash,
Std,
PathpulseDollar,
Option,
TypeOption,
Randomize,
Sample,
OneStep,
DollarSetup,
DollarHold,
DollarSetuphold,
DollarRecovery,
DollarRemoval,
DollarRecrem,
DollarSkew,
DollarTimeskew,
DollarFullskew,
DollarPeriod,
DollarWidth,
DollarNochange,
DollarRoot,
DollarUnit,
DollarFatal,
DollarError,
DollarWarning,
DollarInfo,
OnelineComment(&'a str),
BlockComment(&'a str),
UnsignedNumber(&'a str),
FixedPointNumber(&'a str),
BinaryNumber(&'a str),
OctalNumber(&'a str),
DecimalNumber(&'a str),
HexNumber(&'a str),
ScientificNumber(&'a str),
UnbasedUnsizedLiteral(&'a str),
SystemTfIdentifier(&'a str),
SimpleIdentifier(&'a str),
EscapedIdentifier(&'a str),
PreprocessorIdentifier(&'a str),
TextMacro(&'a str),
StringLiteral(&'a str),
PreprocessorStringLiteral(&'a str),
TripleQuoteStringLiteral(&'a str),
PreprocessorTripleQuoteStringLiteral(&'a str),
Newline,
}Expand description
A single syntactic token for a SystemVerilog source file
Variants§
Error
A lexer error
Always
And
Assign
Begin
Buf
Bufif0
Bufif1
Case
Casex
Casez
Cmos
Deassign
Default
Defparam
Disable
Edge
Else
End
Endcase
Endfunction
Endmodule
Endprimitive
Endspecify
Endtable
Endtask
Event
For
Force
Forever
Fork
Function
Highz0
Highz1
If
Ifnone
Initial
Inout
Input
Integer
Join
Large
Macromodule
Medium
Module
Nand
Negedge
Nmos
Nor
Not
Notif0
Notif1
Or
Output
Parameter
Pmos
Posedge
Primitive
Pull0
Pull1
Pulldown
Pullup
Rcmos
Real
Realtime
Reg
Release
Repeat
Rnmos
Rpmos
Rtran
Rtranif0
Rtranif1
Scalared
Small
Specify
Specparam
Strong0
Strong1
Supply0
Supply1
Table
Task
Time
Tran
Tranif0
Tranif1
Tri
Tri0
Tri1
Triand
Trior
Trireg
Vectored
Wait
Wand
Weak0
Weak1
While
Wire
Wor
Xnor
Xor
Automatic
Cell
Config
Design
Endconfig
Endgenerate
Generate
Genvar
Incdir
Include
Instance
Liblist
Library
Localparam
Noshowcancelled
PulsestyleOndetect
PulsestyleOnevent
Showcancelled
Signed
Unsigned
Use
Uwire
Alias
AlwaysComb
AlwaysFf
AlwaysLatch
Assert
Assume
Before
Bind
Bins
Binsof
Bit
Break
Byte
Chandle
Class
Clocking
Const
Constraint
Context
Continue
Cover
Covergroup
Coverpoint
Cross
Dist
Do
Endclass
Endclocking
Endgroup
Endinterface
Endpackage
Endprogram
Endproperty
Endsequence
Enum
Expect
Export
Extends
Extern
Final
FirstMatch
Foreach
Forkjoin
Iff
IgnoreBins
IllegalBins
Import
Inside
Int
Interface
Intersect
JoinAny
JoinNone
Local
Logic
Longint
Matches
Modport
New
Null
Package
Packed
Priority
Program
Property
Protected
Pure
Rand
Randc
Randcase
Randsequence
Ref
Return
Sequence
Shortint
Shortreal
Solve
Static
String
Struct
Super
Tagged
This
Throughout
Timeprecision
Timeunit
Type
Typedef
Union
Unique
Var
Virtual
Void
WaitOrder
Wildcard
With
Within
AcceptOn
Checker
Endchecker
Eventually
Global
Implies
Let
Nexttime
RejectOn
Restrict
SAlways
SEventually
SNexttime
SUntil
SUntilWith
Strong
SyncAcceptOn
SyncRejectOn
Unique0
Until
UntilWith
Untyped
Weak
Implements
Interconnect
Nettype
Soft
DirUnderscoreFile
DirUnderscoreLine
DirBeginKeywords
DirCelldefine
DirDefaultNettype
DirDefine
DirElse
DirElsif
DirEndKeywords
DirEndcelldefine
DirEndif
DirIfdef
DirIfndef
DirInclude
DirLine
DirNounconnectedDrive
DirPragma
DirResetall
DirTimescale
DirUnconnectedDrive
DirUndef
DirUndefineall
Plus
Minus
Exclamation
Quest
Tilde
Amp
TildeAmp
Pipe
TildePipe
Caret
TildeCaret
CaretTilde
Star
Slash
Percent
EqEq
ExclEq
PlusEq
MinusEq
StarEq
SlashEq
PercentEq
AmpEq
PipeEq
CaretEq
EqEqEq
ExclEqEq
EqEqQuest
ExclEqQuest
AmpAmp
AmpAmpAmp
PipePipe
StarStar
Lt
LtEq
Gt
GtEq
GtGt
LtLt
GtGtEq
LtLtEq
GtGtGt
LtLtLt
GtGtGtEq
LtLtLtEq
MinusGt
MinusGtGt
LtMinusGt
PlusPlus
MinusMinus
PlusColon
MinusColon
PlusSlashMinus
PlusPercentMinus
Paren
EParen
Bracket
EBracket
Brace
EBrace
Colon
SColon
Apost
Comma
Period
Pound
Dollar
At
AtAt
Eq
ColonColon
ColonEq
ColonSlash
PoundPound
PoundMinusPound
PoundEqPound
EqGt
StarGt
PipeMinusGt
PipeEqGt
Bslash
Std
PathpulseDollar
Option
TypeOption
Randomize
Sample
OneStep
DollarSetup
DollarHold
DollarSetuphold
DollarRecovery
DollarRemoval
DollarRecrem
DollarSkew
DollarTimeskew
DollarFullskew
DollarPeriod
DollarWidth
DollarNochange
DollarRoot
DollarUnit
DollarFatal
DollarError
DollarWarning
DollarInfo
OnelineComment(&'a str)
BlockComment(&'a str)
UnsignedNumber(&'a str)
FixedPointNumber(&'a str)
BinaryNumber(&'a str)
OctalNumber(&'a str)
DecimalNumber(&'a str)
HexNumber(&'a str)
ScientificNumber(&'a str)
UnbasedUnsizedLiteral(&'a str)
SystemTfIdentifier(&'a str)
SimpleIdentifier(&'a str)
EscapedIdentifier(&'a str)
PreprocessorIdentifier(&'a str)
TextMacro(&'a str)
StringLiteral(&'a str)
PreprocessorStringLiteral(&'a str)
TripleQuoteStringLiteral(&'a str)
PreprocessorTripleQuoteStringLiteral(&'a str)
Newline
Implementations§
Trait Implementations§
Source§impl<'s> AddContext<Stateful<TokenSlice<'s, SpannedToken<'s>>, Option<VerboseError<'s>>>, Token<'s>> for VerboseError<'s>
impl<'s> AddContext<Stateful<TokenSlice<'s, SpannedToken<'s>>, Option<VerboseError<'s>>>, Token<'s>> for VerboseError<'s>
Source§fn add_context(
self,
_input: &Tokens<'s>,
_token_start: &<Tokens<'s> as Stream>::Checkpoint,
_context: Token<'s>,
) -> Self
fn add_context( self, _input: &Tokens<'s>, _token_start: &<Tokens<'s> as Stream>::Checkpoint, _context: Token<'s>, ) -> Self
impl<'a> Copy for Token<'a>
impl<'a> Eq for Token<'a>
Source§impl<'s> Logos<'s> for Token<'s>
impl<'s> Logos<'s> for Token<'s>
Source§type Error = String
type Error = String
#[logos(error = MyError)]. Defaults to () if not set.Source§type Extras = ()
type Extras = ()
Extras for the particular lexer. This can be set using
#[logos(extras = MyExtras)] and accessed inside callbacks.Source§type Source = str
type Source = str
str,
unless one of the defined patterns explicitly uses non-unicode byte values
or byte slices, in which case that implementation will use [u8].Source§fn lex(
lex: &mut Lexer<'s, Self>,
) -> Option<Result<Self, <Self as Logos<'s>>::Error>>
fn lex( lex: &mut Lexer<'s, Self>, ) -> Option<Result<Self, <Self as Logos<'s>>::Error>>
Lexer. The implementation for this function
is generated by the logos-derive crate.Source§impl<'s> Parser<Stateful<TokenSlice<'s, SpannedToken<'s>>, Option<VerboseError<'s>>>, &'s SpannedToken<'s>, ErrMode<VerboseError<'s>>> for Token<'s>
impl<'s> Parser<Stateful<TokenSlice<'s, SpannedToken<'s>>, Option<VerboseError<'s>>>, &'s SpannedToken<'s>, ErrMode<VerboseError<'s>>> for Token<'s>
Source§fn parse_next(
&mut self,
input: &mut Tokens<'s>,
) -> ModalResult<&'s SpannedToken<'s>, VerboseError<'s>>
fn parse_next( &mut self, input: &mut Tokens<'s>, ) -> ModalResult<&'s SpannedToken<'s>, VerboseError<'s>>
Source§fn parse(
&mut self,
input: I,
) -> Result<O, ParseError<I, <E as ParserError<I>>::Inner>>where
Self: Sized,
I: Stream + StreamIsPartial,
E: ParserError<I>,
<E as ParserError<I>>::Inner: ParserError<I>,
fn parse(
&mut self,
input: I,
) -> Result<O, ParseError<I, <E as ParserError<I>>::Inner>>where
Self: Sized,
I: Stream + StreamIsPartial,
E: ParserError<I>,
<E as ParserError<I>>::Inner: ParserError<I>,
Source§fn parse_peek(&mut self, input: I) -> Result<(I, O), E>
fn parse_peek(&mut self, input: I) -> Result<(I, O), E>
Source§fn by_ref(&mut self) -> ByRef<'_, Self, I, O, E>where
Self: Sized,
fn by_ref(&mut self) -> ByRef<'_, Self, I, O, E>where
Self: Sized,
&mut Self as a parser Read moreSource§fn default_value<O2>(self) -> DefaultValue<Self, I, O, O2, E>
fn default_value<O2>(self) -> DefaultValue<Self, I, O, O2, E>
Source§fn void(self) -> Void<Self, I, O, E>where
Self: Sized,
fn void(self) -> Void<Self, I, O, E>where
Self: Sized,
Parser Read moreSource§fn output_into<O2>(self) -> OutputInto<Self, I, O, O2, E>
fn output_into<O2>(self) -> OutputInto<Self, I, O, O2, E>
std::convert::From Read moreSource§fn with_taken(self) -> WithTaken<Self, I, O, E>
fn with_taken(self) -> WithTaken<Self, I, O, E>
Source§fn span(self) -> Span<Self, I, O, E>
fn span(self) -> Span<Self, I, O, E>
Source§fn with_span(self) -> WithSpan<Self, I, O, E>
fn with_span(self) -> WithSpan<Self, I, O, E>
Source§fn map<G, O2>(self, map: G) -> Map<Self, G, I, O, O2, E>
fn map<G, O2>(self, map: G) -> Map<Self, G, I, O, O2, E>
Source§fn try_map<G, O2, E2>(self, map: G) -> TryMap<Self, G, I, O, O2, E, E2>where
Self: Sized,
G: FnMut(O) -> Result<O2, E2>,
I: Stream,
E: FromExternalError<I, E2> + ParserError<I>,
fn try_map<G, O2, E2>(self, map: G) -> TryMap<Self, G, I, O, O2, E, E2>where
Self: Sized,
G: FnMut(O) -> Result<O2, E2>,
I: Stream,
E: FromExternalError<I, E2> + ParserError<I>,
Result over the output of a parser. Read moreSource§fn verify_map<G, O2>(self, map: G) -> VerifyMap<Self, G, I, O, O2, E>
fn verify_map<G, O2>(self, map: G) -> VerifyMap<Self, G, I, O, O2, E>
Source§fn flat_map<G, H, O2>(self, map: G) -> FlatMap<Self, G, H, I, O, O2, E>
fn flat_map<G, H, O2>(self, map: G) -> FlatMap<Self, G, H, I, O, O2, E>
Source§fn parse_to<O2>(self) -> ParseTo<Self, I, O, O2, E>
fn parse_to<O2>(self) -> ParseTo<Self, I, O, O2, E>
std::str::FromStr to the output of the parser Read moreSource§fn verify<G, O2>(self, filter: G) -> Verify<Self, G, I, O, O2, E>
fn verify<G, O2>(self, filter: G) -> Verify<Self, G, I, O, O2, E>
Source§fn context<C>(self, context: C) -> Context<Self, I, O, E, C>
fn context<C>(self, context: C) -> Context<Self, I, O, E, C>
Source§fn context_with<F, C, FI>(
self,
context: F,
) -> ContextWith<Self, I, O, E, F, C, FI>where
Self: Sized,
I: Stream,
E: AddContext<I, C> + ParserError<I>,
F: Fn() -> FI + Clone,
C: Debug,
FI: Iterator<Item = C>,
fn context_with<F, C, FI>(
self,
context: F,
) -> ContextWith<Self, I, O, E, F, C, FI>where
Self: Sized,
I: Stream,
E: AddContext<I, C> + ParserError<I>,
F: Fn() -> FI + Clone,
C: Debug,
FI: Iterator<Item = C>,
Source§fn map_err<G, E2>(self, map: G) -> MapErr<Self, G, I, O, E, E2>
fn map_err<G, E2>(self, map: G) -> MapErr<Self, G, I, O, E, E2>
Source§fn complete_err(self) -> CompleteErr<Self, I, O, E>where
Self: Sized,
fn complete_err(self) -> CompleteErr<Self, I, O, E>where
Self: Sized,
Source§impl<'s> PartialEq<Token<'s>> for SpannedToken<'s>
impl<'s> PartialEq<Token<'s>> for SpannedToken<'s>
impl<'a> StructuralPartialEq for Token<'a>
Auto Trait Implementations§
impl<'a> Freeze for Token<'a>
impl<'a> RefUnwindSafe for Token<'a>
impl<'a> Send for Token<'a>
impl<'a> Sync for Token<'a>
impl<'a> Unpin for Token<'a>
impl<'a> UnsafeUnpin for Token<'a>
impl<'a> UnwindSafe for Token<'a>
Blanket Implementations§
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<I, O, E, P> ModalParser<I, O, E> for P
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);