pub struct Component<T: ?Sized> {
pub origin: ComponentOrigin,
pub node: Node<T>,
}
Expand description
A component of a type or schema
, for example a field of an object type.
Wraps a Node<T>
and additionally tracks its origin
:
either a “main” definition like schema
or type ExampleObj
,
or an extension like extend schema
or extend type ExampleObj
.
Implements Deref
and DerefMut
so that methods and fields of Node<T>
and T
can be accessed directly.
Fields§
§origin: ComponentOrigin
§node: Node<T>
Implementations§
Methods from Deref<Target = Node<T>>§
Sourcepub fn location(&self) -> Option<SourceSpan>
pub fn location(&self) -> Option<SourceSpan>
If this node was parsed from a source file, returns the file ID and source span (start and end byte offsets) within that file.
Sourcepub fn is_built_in(&self) -> bool
pub fn is_built_in(&self) -> bool
Whether this node is located in FileId::BUILT_IN
,
which defines built-in directives, built-in scalars, and introspection types.
Sourcepub fn line_column_range(
&self,
sources: &SourceMap,
) -> Option<Range<LineColumn>>
pub fn line_column_range( &self, sources: &SourceMap, ) -> Option<Range<LineColumn>>
If this node contains a location, convert it to the line and column numbers.
Sourcepub fn same_location<U>(&self, node: U) -> Node<U>
pub fn same_location<U>(&self, node: U) -> Node<U>
Returns the given node
at the same location as self
(e.g. for a type conversion).
pub fn to_component(&self, origin: ComponentOrigin) -> Component<T>
Sourcepub fn ptr_eq(&self, other: &Self) -> bool
pub fn ptr_eq(&self, other: &Self) -> bool
Returns whether two Node
s point to the same memory allocation
Sourcepub fn make_mut(&mut self) -> &mut Twhere
T: Clone,
pub fn make_mut(&mut self) -> &mut Twhere
T: Clone,
Returns a mutable reference to T
, cloning it if necessary
This is functionally equivalent to Arc::make_mut
from the standard library.
If this Node
is uniquely owned, make_mut()
will provide a mutable
reference to the contents. If not, make_mut()
will create a new Node
with a clone of the contents, update self
to point to it, and provide
a mutable reference to its contents.
This is useful for implementing copy-on-write schemes where you wish to
avoid copying things if your Node
is not shared.
Trait Implementations§
Source§impl<'schema> From<&'schema Component<EnumValueDefinition>> for SchemaCoordinateLookup<'schema>
impl<'schema> From<&'schema Component<EnumValueDefinition>> for SchemaCoordinateLookup<'schema>
Source§fn from(inner: &'schema Component<EnumValueDefinition>) -> Self
fn from(inner: &'schema Component<EnumValueDefinition>) -> Self
Source§impl<'schema> From<&'schema Component<FieldDefinition>> for SchemaCoordinateLookup<'schema>
impl<'schema> From<&'schema Component<FieldDefinition>> for SchemaCoordinateLookup<'schema>
Source§fn from(inner: &'schema Component<FieldDefinition>) -> Self
fn from(inner: &'schema Component<FieldDefinition>) -> Self
Source§impl<'schema> From<&'schema Component<InputValueDefinition>> for SchemaCoordinateLookup<'schema>
impl<'schema> From<&'schema Component<InputValueDefinition>> for SchemaCoordinateLookup<'schema>
Source§fn from(inner: &'schema Component<InputValueDefinition>) -> Self
fn from(inner: &'schema Component<InputValueDefinition>) -> Self
impl<T: ?Sized + Eq> Eq for Component<T>
Auto Trait Implementations§
impl<T> Freeze for Component<T>where
T: ?Sized,
impl<T> RefUnwindSafe for Component<T>where
T: RefUnwindSafe + ?Sized,
impl<T> Send for Component<T>
impl<T> Sync for Component<T>
impl<T> Unpin for Component<T>
impl<T> UnwindSafe for Component<T>
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.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>
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);