pub struct CodeGraph { /* private fields */ }Expand description
Core graph with Arc-wrapped internals for O(1) CoW snapshots.
CodeGraph uses Arc for all internal components, enabling:
- O(1) snapshot creation via Arc cloning
- Copy-on-write semantics via
Arc::make_mut - Memory-efficient sharing between snapshots
§Design
The Arc wrapping enables the MVCC pattern:
- Readers see a consistent snapshot at the time they acquired access
- Writers use
Arc::make_mutto get exclusive copies only when mutating - Multiple snapshots can coexist without copying data
§Performance
- Snapshot creation: O(5) Arc clones ≈ <1μs
- Read access: Direct Arc dereference, no locking
- Write access:
Arc::make_mutclones only if refcount > 1
§Phase 2 binding-plane access
Use the two-line snapshot pattern to access BindingPlane:
let snapshot = graph.snapshot();
let plane = snapshot.binding_plane();
let resolution = plane.resolve(&query);The two-line form is intentional: BindingPlane<'g> borrows from
GraphSnapshot and the explicit snapshot handle makes the MVCC lifetime
visible at the call site. The full Phase 2 scope/alias/shadow and
witness-bearing resolution API is exposed through BindingPlane.
Implementations§
Source§impl CodeGraph
impl CodeGraph
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new empty CodeGraph.
§Example
use sqry_core::graph::unified::concurrent::CodeGraph;
let graph = CodeGraph::new();
assert_eq!(graph.epoch(), 0);Sourcepub fn from_components(
nodes: NodeArena,
edges: BidirectionalEdgeStore,
strings: StringInterner,
files: FileRegistry,
indices: AuxiliaryIndices,
macro_metadata: NodeMetadataStore,
) -> Self
pub fn from_components( nodes: NodeArena, edges: BidirectionalEdgeStore, strings: StringInterner, files: FileRegistry, indices: AuxiliaryIndices, macro_metadata: NodeMetadataStore, ) -> Self
Creates a CodeGraph from existing components.
This is useful when building a graph from external data or reconstructing from serialized state.
Sourcepub fn snapshot(&self) -> GraphSnapshot
pub fn snapshot(&self) -> GraphSnapshot
Creates a cheap snapshot of the graph.
This operation is O(5) Arc clones, which completes in <1μs. The snapshot is isolated from future mutations to the original graph.
§Example
use sqry_core::graph::unified::concurrent::CodeGraph;
let graph = CodeGraph::new();
let snapshot = graph.snapshot();
// snapshot is independent of future mutations to graphSourcepub fn edges(&self) -> &BidirectionalEdgeStore
pub fn edges(&self) -> &BidirectionalEdgeStore
Returns a reference to the bidirectional edge store.
Sourcepub fn strings(&self) -> &StringInterner
pub fn strings(&self) -> &StringInterner
Returns a reference to the string interner.
Sourcepub fn files(&self) -> &FileRegistry
pub fn files(&self) -> &FileRegistry
Returns a reference to the file registry.
Sourcepub fn indices(&self) -> &AuxiliaryIndices
pub fn indices(&self) -> &AuxiliaryIndices
Returns a reference to the auxiliary indices.
Sourcepub fn macro_metadata(&self) -> &NodeMetadataStore
pub fn macro_metadata(&self) -> &NodeMetadataStore
Returns a reference to the macro boundary metadata store.
Sourcepub fn fact_epoch(&self) -> u64
pub fn fact_epoch(&self) -> u64
Returns the monotonic fact-layer epoch stamped on the most recently
saved or loaded snapshot. Returns 0 for graphs that have not been
persisted yet or were loaded from V7 snapshots.
Sourcepub fn node_provenance(&self, id: NodeId) -> Option<&NodeProvenance>
pub fn node_provenance(&self, id: NodeId) -> Option<&NodeProvenance>
Looks up node provenance by NodeId.
Returns None if the NodeId is out of range, the slot is vacant,
or the stored generation does not match (stale handle).
Sourcepub fn edge_provenance(&self, id: EdgeId) -> Option<&EdgeProvenance>
pub fn edge_provenance(&self, id: EdgeId) -> Option<&EdgeProvenance>
Looks up edge provenance by EdgeId.
Returns None if the EdgeId is out of range, the slot is vacant,
or the edge is the invalid sentinel.
Sourcepub fn file_provenance(&self, id: FileId) -> Option<FileProvenanceView<'_>>
pub fn file_provenance(&self, id: FileId) -> Option<FileProvenanceView<'_>>
Returns a borrowed provenance view for a file.
Returns None for invalid/unregistered FileIds.
Sourcepub fn scope_arena(&self) -> &ScopeArena
pub fn scope_arena(&self) -> &ScopeArena
Returns a reference to the scope arena derived during Phase 4e.
The arena is empty on freshly-constructed CodeGraph instances and is
populated by calling phase4e_binding::derive_binding_plane.
Sourcepub fn alias_table(&self) -> &AliasTable
pub fn alias_table(&self) -> &AliasTable
Returns a reference to the alias table derived during Phase 4e.
The table is empty on freshly-constructed CodeGraph instances and is
populated by calling phase4e_binding::derive_binding_plane.
Sourcepub fn shadow_table(&self) -> &ShadowTable
pub fn shadow_table(&self) -> &ShadowTable
Returns a reference to the shadow table derived during Phase 4e.
The table is empty on freshly-constructed CodeGraph instances and is
populated by calling phase4e_binding::derive_binding_plane.
Sourcepub fn scope_provenance_store(&self) -> &ScopeProvenanceStore
pub fn scope_provenance_store(&self) -> &ScopeProvenanceStore
Returns a reference to the scope provenance store derived during Phase 4e.
The store is empty on freshly-constructed CodeGraph instances and is
populated by calling phase4e_binding::derive_binding_plane.
Sourcepub fn scope_provenance(&self, id: ScopeId) -> Option<&ScopeProvenance>
pub fn scope_provenance(&self, id: ScopeId) -> Option<&ScopeProvenance>
Looks up scope provenance by ScopeId.
Returns None if the slot is out of range, vacant, or the stored
generation does not match (stale handle).
Sourcepub fn scope_by_stable_id(&self, stable: ScopeStableId) -> Option<ScopeId>
pub fn scope_by_stable_id(&self, stable: ScopeStableId) -> Option<ScopeId>
Looks up the live ScopeId for a stable scope identity.
Returns None if no provenance record is registered for that stable id.
The reverse index is populated by insert during Phase 4e and must be
rebuilt after V9 deserialization.
Sourcepub fn file_segments(&self) -> &FileSegmentTable
pub fn file_segments(&self) -> &FileSegmentTable
Returns a reference to the file segment table.
Sourcepub fn nodes_mut(&mut self) -> &mut NodeArena
pub fn nodes_mut(&mut self) -> &mut NodeArena
Returns a mutable reference to the node arena.
Uses Arc::make_mut for copy-on-write semantics: if other
references exist (e.g., snapshots), the data is cloned.
Sourcepub fn edges_mut(&mut self) -> &mut BidirectionalEdgeStore
pub fn edges_mut(&mut self) -> &mut BidirectionalEdgeStore
Returns a mutable reference to the bidirectional edge store.
Uses Arc::make_mut for copy-on-write semantics.
Sourcepub fn strings_mut(&mut self) -> &mut StringInterner
pub fn strings_mut(&mut self) -> &mut StringInterner
Returns a mutable reference to the string interner.
Uses Arc::make_mut for copy-on-write semantics.
Sourcepub fn files_mut(&mut self) -> &mut FileRegistry
pub fn files_mut(&mut self) -> &mut FileRegistry
Returns a mutable reference to the file registry.
Uses Arc::make_mut for copy-on-write semantics.
Sourcepub fn indices_mut(&mut self) -> &mut AuxiliaryIndices
pub fn indices_mut(&mut self) -> &mut AuxiliaryIndices
Returns a mutable reference to the auxiliary indices.
Uses Arc::make_mut for copy-on-write semantics.
Sourcepub fn macro_metadata_mut(&mut self) -> &mut NodeMetadataStore
pub fn macro_metadata_mut(&mut self) -> &mut NodeMetadataStore
Returns a mutable reference to the macro boundary metadata store.
Uses Arc::make_mut for copy-on-write semantics.
Sourcepub fn nodes_and_strings_mut(&mut self) -> (&mut NodeArena, &mut StringInterner)
pub fn nodes_and_strings_mut(&mut self) -> (&mut NodeArena, &mut StringInterner)
Returns mutable references to both the node arena and the string interner.
This avoids the borrow-conflict that arises when calling nodes_mut() and
strings_mut() separately on &mut self.
Sourcepub fn rebuild_indices(&mut self)
pub fn rebuild_indices(&mut self)
Rebuilds auxiliary indices from the current node arena.
This avoids the borrow conflict that arises when calling nodes() and
indices_mut() separately on &mut self. Uses disjoint field borrowing
to access nodes (shared) and indices (mutable) simultaneously.
Internally calls AuxiliaryIndices::build_from_arena which clears
existing indices and rebuilds in a single pass without per-element
duplicate checking.
As of Task 4 Step 4 Phase 2 this inherent method delegates to the
generic
[crate::graph::unified::build::parallel_commit::rebuild_indices]
free function so the same implementation serves both the
full-build (CodeGraph) and incremental-rebuild (RebuildGraph)
pipelines. Call sites that hold a concrete CodeGraph can keep
using graph.rebuild_indices(); incremental rebuild call sites
should use the free function directly.
Sourcepub fn bump_epoch(&mut self) -> u64
pub fn bump_epoch(&mut self) -> u64
Increments the epoch counter and returns the new value.
Called automatically by ConcurrentCodeGraph::write().
Sourcepub fn set_epoch(&mut self, epoch: u64)
pub fn set_epoch(&mut self, epoch: u64)
Sets the epoch to a specific value.
This is primarily for testing or reconstruction from serialized state.
Sourcepub fn node_count(&self) -> usize
pub fn node_count(&self) -> usize
Returns the number of nodes in the graph.
This is a convenience method that delegates to nodes().len().
§Example
use sqry_core::graph::unified::concurrent::CodeGraph;
let graph = CodeGraph::new();
assert_eq!(graph.node_count(), 0);Sourcepub fn edge_count(&self) -> usize
pub fn edge_count(&self) -> usize
Returns the number of edges in the graph (forward direction).
This counts edges in the forward store, including both CSR and delta edges.
§Example
use sqry_core::graph::unified::concurrent::CodeGraph;
let graph = CodeGraph::new();
assert_eq!(graph.edge_count(), 0);Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Returns true if the graph contains no nodes.
This is a convenience method that delegates to nodes().is_empty().
§Example
use sqry_core::graph::unified::concurrent::CodeGraph;
let graph = CodeGraph::new();
assert!(graph.is_empty());Sourcepub fn indexed_files(&self) -> impl Iterator<Item = (FileId, &Path)>
pub fn indexed_files(&self) -> impl Iterator<Item = (FileId, &Path)>
Returns an iterator over all indexed file paths.
This is useful for enumerating all files that have been processed and added to the graph.
§Example
use sqry_core::graph::unified::concurrent::CodeGraph;
let graph = CodeGraph::new();
for (file_id, path) in graph.indexed_files() {
println!("File {}: {}", file_id.index(), path.display());
}Sourcepub fn reverse_import_index(&self, file_id: FileId) -> Vec<FileId>
pub fn reverse_import_index(&self, file_id: FileId) -> Vec<FileId>
Returns the set of files that import one or more symbols exported by
file_id, deduplicated and sorted ascending.
For every EdgeKind::Imports edge whose target node lives in
file_id, the source node’s FileId is added to the result. Files
are returned sorted by raw index so the result is deterministic across
runs. The caller’s own file is never included — an Imports edge
whose source and target both live in file_id is treated as a
self-import and elided. Edges whose source node is no longer resolvable
in the arena (tombstoned) are silently skipped.
This is the file-level view of Pass 4 cross-file Imports edges, used
by the incremental rebuild engine to compute reverse-dependency
closures: “if file X changes its exports, which files need to be
re-linked?”
§Complexity
O(|nodes_in_file_id| × avg_incoming_edges_per_node) amortized. Uses
AuxiliaryIndices::by_file for O(1)-amortized per-file node lookup
(HashMap-backed) and the bidirectional edge store’s reverse adjacency;
no full-graph scan. A final O(R log R) sort over the deduplicated
importer set (where R is the importer count) is negligible in
practice since R ≤ file_count.
Sourcepub fn reverse_dependency_index(&self, file_id: FileId) -> Vec<FileId>
pub fn reverse_dependency_index(&self, file_id: FileId) -> Vec<FileId>
Returns the set of files that hold at least one live inter-file edge
targeting a node in file_id, deduplicated and sorted ascending.
Unlike reverse_import_index — which
filters to EdgeKind::Imports only — this helper treats every
cross-file edge as a dependency signal: Calls, References,
TypeOf, Inherits, Implements, FfiCall, HttpRequest,
GrpcCall, WebAssemblyCall, DbQuery, TableRead, TableWrite,
TriggeredBy, MessageQueue, WebSocket, GraphQLOperation,
ProcessExec, FileIpc, ProtocolCall, and any future
cross-file-capable variant. This is the reverse-dependency surface the
incremental rebuild engine (Task 4 Step 4 Phase 3e) needs: when
file_id changes, every file whose committed edges point into
file_id’s nodes must re-enter the rebuild closure so its cross-file
references survive the target-side tombstone-and-reparse cycle.
The caller’s own file is never included — an edge whose source and
target both live in file_id is a self-reference and is elided.
Edges whose source node is no longer resolvable in the arena
(tombstoned) are silently skipped.
§When to use this vs reverse_import_index
reverse_import_indexremains the right surface for consumers that specifically need import relationships (export surface analysis, module-dependency graphs, etc.).reverse_dependency_indexis the right surface for incremental rebuild closure computation. Widening past imports is necessary because call sites, type references, trait implementations, FFI declarations, HTTP clients, and every other cross-file edge kind hold a committed edge into the target file that becomes stale the momentremove_file(target)tombstones its arena nodes. Leaving those files out of the closure leaves the committed edges pointing at the stale (pre-tombstone) node IDs — Phase 4c-prime only rewrites edges on re-parsed files’PendingEdgesets, never committed edges owned by files outside the reparse scope.
§Complexity
O(|nodes_in_file_id| × avg_incoming_edges_per_node) amortized —
same bound as reverse_import_index.
Uses AuxiliaryIndices::by_file for O(1)-amortized per-file node
lookup and the bidirectional edge store’s reverse adjacency; no
full-graph scan. Final O(R log R) sort over the deduplicated
dependent set is negligible since R ≤ file_count.
§Over-widening is expected and acceptable
The closure will include every file that references anything in
file_id, not just files whose exports change. In common codebases
this widens the reparse set modestly (a 10-file change may expand
to 20–30 dependent files in a medium crate). Correctness requires
the widening; minimality is a follow-up optimisation if profiling
demands it.
Sourcepub fn confidence(&self) -> &HashMap<String, ConfidenceMetadata>
pub fn confidence(&self) -> &HashMap<String, ConfidenceMetadata>
Returns the per-language confidence metadata.
This contains analysis confidence information collected during graph build, primarily used by language plugins (e.g., Rust) to track analysis quality.
Sourcepub fn merge_confidence(&mut self, language: &str, metadata: ConfidenceMetadata)
pub fn merge_confidence(&mut self, language: &str, metadata: ConfidenceMetadata)
Merges confidence metadata for a language.
If confidence already exists for the language, this merges the new metadata (taking the lower confidence level and combining limitations). Otherwise, it inserts the new confidence.
Sourcepub fn set_confidence(
&mut self,
confidence: HashMap<String, ConfidenceMetadata>,
)
pub fn set_confidence( &mut self, confidence: HashMap<String, ConfidenceMetadata>, )
Sets the confidence metadata map directly.
This is primarily used when loading a graph from serialized state.
Sourcepub fn assert_bucket_bijection(&self)
pub fn assert_bucket_bijection(&self)
Assert the bijective bucket-membership invariant (A2 §F.1).
Four conditions must hold simultaneously:
(a) every NodeId inside any per_file_nodes bucket maps to a
live arena slot;
(b) every NodeId appears in exactly one bucket (no duplicates
across buckets, no duplicates within a bucket);
(c) the bucket’s FileId matches the node’s own file field on
NodeEntry;
(d) when at least one bucket is populated, every live node in
the arena is accounted for by some bucket.
Condition (d) is guarded on !seen.is_empty() so an empty-graph
(no recorded buckets) publish boundary is vacuously consistent:
legacy V7 snapshots, fresh CodeGraph::new() instances, and
rebuilds on graphs that predate Gate 0c’s parallel-commit
bucketing must not panic. Once any bucket is populated, every
live arena slot must appear in a bucket.
Iter-2 B2 (verbatim): this check used to be documented as
“vacuous until future per_file_nodes work lands”. Pulling
base-plan Step 1 into Gate 0c retires that phrasing — the check
is non-vacuous the moment parallel-parse commits nodes, which
happens on every real build. The !seen.is_empty() guard now
exists solely for the empty-graph corner case, not as a phased-
delivery deferral.
The check is a no-op in release builds. Panics with a descriptive message on violation. This is intentional: publish- boundary violations are programmer errors that must surface loudly during CI / test runs.
Sourcepub fn assert_no_tombstone_residue_for(&self, dead: &HashSet<NodeId>)
pub fn assert_no_tombstone_residue_for(&self, dead: &HashSet<NodeId>)
Assert the pre-reuse tombstone-residue invariant (A2 §F.2).
Iterates every publish-visible NodeId-bearing structure on
self and panics if any contains a node in dead. Called from
RebuildGraph::finalize() step 14 against the set drained at
step 8 — exactly one site per the plan’s §F / §H agreement.
No-op when dead is empty or in release builds.
Source§impl CodeGraph
impl CodeGraph
Sourcepub fn clone_for_rebuild(&self) -> RebuildGraph
pub fn clone_for_rebuild(&self) -> RebuildGraph
Produce a fresh [RebuildGraph] from this graph’s current
committed state, deep-cloning every Arc-wrapped component so the
returned value is decoupled from future mutations to self.
The exhaustive destructure inside the @clone_inner arm of
sqry_graph_fields! guarantees that every field on
CodeGraph is mirrored into the returned [RebuildGraph].
Adding a field to CodeGraph without also adding it to the
field list inside sqry_graph_fields! is a hard E0027
compile error on the let CodeGraph { .. } = self; destructure.
§When to call this
Only the incremental-rebuild dispatcher (Task 4 Step 4) calls
clone_for_rebuild, on the rebuild task’s background tokio
context, against an Arc<CodeGraph> freshly obtained via
ArcSwap::load_full(). The Arc’s refcount is 1 in the common
case, so the underlying deep clones amount to Arc::get_mut-
equivalent cost on each component.
§Performance budget (A2 §H, line 734)
On a 384k-node / 1.3M-edge reference graph, this call must complete in < 50 ms. The daemon’s rebuild-latency benchmark tracks the budget; warning threshold 50 ms, hard record threshold 200 ms. Exceeding the warning logs but does not fail the rebuild.
Trait Implementations§
Source§impl GraphAccess for CodeGraph
impl GraphAccess for CodeGraph
Source§fn edges(&self) -> &BidirectionalEdgeStore
fn edges(&self) -> &BidirectionalEdgeStore
Source§fn strings(&self) -> &StringInterner
fn strings(&self) -> &StringInterner
Source§fn files(&self) -> &FileRegistry
fn files(&self) -> &FileRegistry
Source§fn indices(&self) -> &AuxiliaryIndices
fn indices(&self) -> &AuxiliaryIndices
Source§impl GraphMemorySize for CodeGraph
impl GraphMemorySize for CodeGraph
Source§fn heap_bytes(&self) -> usize
fn heap_bytes(&self) -> usize
Estimates the total heap bytes owned by this CodeGraph.
Sums heap usage across every component the graph owns: node arena,
bidirectional edge store (forward + reverse CSR + tombstones + delta
buffer), string interner, file registry, auxiliary indices, sparse
macro/classpath metadata, provenance stores, and the per-language
confidence map. Used by the sqryd daemon’s admission controller
and workspace retention reaper to enforce memory budgets.
Auto Trait Implementations§
impl Freeze for CodeGraph
impl !RefUnwindSafe for CodeGraph
impl Send for CodeGraph
impl Sync for CodeGraph
impl Unpin for CodeGraph
impl UnsafeUnpin for CodeGraph
impl !UnwindSafe for CodeGraph
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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§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 moreSource§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