Trait Reflect

Source
pub trait Reflect {
    // Required methods
    fn input() -> CastInfo;
    fn output() -> CastInfo;
    fn castable(value: &Value) -> bool;

    // Provided method
    fn error(found: &Value) -> HintedString { ... }
}
Expand description

Determine details of a type.

Type casting works as follows:

  • Reflect for T describes the possible Typst values for T (for documentation and autocomplete).
  • IntoValue for T is for conversion from T -> Value (infallible)
  • FromValue for T is for conversion from Value -> T (fallible).

We can’t use TryFrom<Value> due to conflicting impls. We could use From<T> for Value, but that inverses the impl and leads to tons of .into() all over the place that become hard to decipher.

Required Methods§

Source

fn input() -> CastInfo

Describe what can be cast into this value.

Source

fn output() -> CastInfo

Describe what this value can be cast into.

Source

fn castable(value: &Value) -> bool

Whether the given value can be converted to T.

This exists for performance. The check could also be done through the CastInfo, but it would be much more expensive (heap allocation + dynamic checks instead of optimized machine code for each type).

Provided Methods§

Source

fn error(found: &Value) -> HintedString

Produce an error message for an unacceptable value type.

assert_eq!(
  <i64 as Reflect>::error(&Value::None),
  "expected integer, found none",
);

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Reflect for Month

Source§

impl Reflect for MathClass

Source§

impl Reflect for bool

Source§

impl Reflect for char

Source§

impl Reflect for f64

Source§

impl Reflect for i8

Source§

impl Reflect for i16

Source§

impl Reflect for i32

Source§

impl Reflect for i64

Source§

impl Reflect for isize

Source§

impl Reflect for u8

Source§

impl Reflect for u16

Source§

impl Reflect for u32

Source§

impl Reflect for u64

Source§

impl Reflect for ()

Source§

impl Reflect for usize

Source§

impl Reflect for String

Source§

impl Reflect for NonZero<i64>

Source§

impl Reflect for NonZero<isize>

Source§

impl Reflect for NonZero<u64>

Source§

impl Reflect for NonZero<usize>

Source§

impl<T> Reflect for Option<T>
where T: Reflect,

Source§

impl<T> Reflect for Result<T, HintedString>
where T: Reflect,

Source§

impl<T> Reflect for Result<T, EcoString>
where T: Reflect,

Source§

impl<T> Reflect for Result<T, EcoVec<SourceDiagnostic>>
where T: Reflect,

Source§

impl<T> Reflect for &T
where T: Reflect,

Source§

impl<T> Reflect for &mut T
where T: Reflect,

Source§

impl<T> Reflect for Arc<T>
where T: Reflect,

Source§

impl<T> Reflect for Vec<T>

Source§

impl<T> Reflect for Spanned<T>
where T: Reflect,

Source§

impl<T, const N: usize> Reflect for SmallVec<[T; N]>
where T: Reflect,

Implementors§

Source§

impl Reflect for Datetime

Source§

impl Reflect for AngleLike

Source§

impl Reflect for DecNum

Source§

impl Reflect for Num

Source§

impl Reflect for ArgumentKey

Source§

impl Reflect for Endianness

Source§

impl Reflect for Never

Source§

impl Reflect for Replacement

Source§

impl Reflect for Selector

Source§

impl Reflect for StrPattern

Source§

impl Reflect for StrSide

Source§

impl Reflect for Target

Source§

impl Reflect for ToDecimal

Source§

impl Reflect for ToStr

Source§

impl Reflect for Transformation

Source§

impl Reflect for Value

Source§

impl Reflect for VersionComponents

Source§

impl Reflect for CounterKey

Source§

impl Reflect for CounterUpdate

Source§

impl Reflect for StateUpdate

Source§

impl Reflect for Alignment

Source§

impl Reflect for HAlignment

Source§

impl Reflect for OuterHAlignment

Source§

impl Reflect for OuterVAlignment

Source§

impl Reflect for VAlignment

Source§

impl Reflect for Axis

Source§

impl Reflect for BlockBody

Source§

impl Reflect for Sizing

Source§

impl Reflect for Dir

Source§

impl Reflect for GridChild

Source§

impl Reflect for GridItem

Source§

impl Reflect for Binding

Source§

impl Reflect for Marginal

Source§

impl Reflect for Parity

Source§

impl Reflect for PlacementScope

Source§

impl Reflect for Side

Source§

impl Reflect for Spacing

Source§

impl Reflect for StackChild

Source§

impl Reflect for ScaleAmount

Source§

impl Reflect for RowType

Source§

impl Reflect for DataSource

Source§

impl Reflect for Readable

Source§

impl Reflect for Encoding

Source§

impl Reflect for CancelAngle

Source§

impl Reflect for MathSize

Source§

impl Reflect for MathVariant

Source§

impl Reflect for CslSource

Source§

impl Reflect for CitationForm

Source§

impl Reflect for FigureKind

Source§

impl Reflect for FootnoteBody

Source§

impl Reflect for Destination

Source§

impl Reflect for LinkTarget

Source§

impl Reflect for ListMarker

Source§

impl Reflect for Numbering

Source§

impl Reflect for OutlineIndent

Source§

impl Reflect for LineNumberingScope

Source§

impl Reflect for Linebreaks

Source§

impl Reflect for Attribution

Source§

impl Reflect for RefForm

Source§

impl Reflect for Supplement

Source§

impl Reflect for TableChild

Source§

impl Reflect for TableItem

Source§

impl Reflect for EmbeddedFileRelationship

Source§

impl Reflect for EvalMode

Source§

impl Reflect for Case

Source§

impl Reflect for Caseable

Source§

impl Reflect for BottomEdge

Source§

impl Reflect for BottomEdgeMetric

Source§

impl Reflect for Covers

Source§

impl Reflect for NumberType

Source§

impl Reflect for NumberWidth

Source§

impl Reflect for TopEdge

Source§

impl Reflect for TopEdgeMetric

Source§

impl Reflect for VerticalFontMetric

Source§

impl Reflect for FontStyle

Source§

impl Reflect for RawContent

Source§

impl Reflect for Color

Source§

impl Reflect for ColorSpace

Source§

impl Reflect for CloseMode

Source§

impl Reflect for CurveComponent

Source§

impl Reflect for Gradient

Source§

impl Reflect for RatioOrAngle

Source§

impl Reflect for RelativeTo

Source§

impl Reflect for ImageFit

Source§

impl Reflect for ImageFormat

Source§

impl Reflect for ImageScaling

Source§

impl Reflect for VectorFormat

Source§

impl Reflect for ExchangeFormat

Source§

impl Reflect for PixelEncoding

Source§

impl Reflect for RasterFormat

Source§

impl Reflect for Paint

Source§

impl Reflect for PathVertex

Source§

impl Reflect for FillRule

Source§

impl Reflect for DashLength

Source§

impl Reflect for LineCap

Source§

impl Reflect for LineJoin

Source§

impl Reflect for Position

Source§

impl Reflect for EcoString

Source§

impl Reflect for Bytes

Source§

impl Reflect for Dict

Source§

impl Reflect for ToAbs

Source§

impl Reflect for HtmlAttr

Source§

impl Reflect for HtmlAttrs

Source§

impl Reflect for HtmlTag

Source§

impl Reflect for Counter

Source§

impl Reflect for CounterState

Source§

impl Reflect for Location

Source§

impl Reflect for State

Source§

impl Reflect for Angle

Source§

impl Reflect for Axes<Length>

Source§

impl Reflect for Axes<Ratio>

Source§

impl Reflect for Axes<Rel>

Source§

impl Reflect for Fr

Source§

impl Reflect for GridCell

Source§

impl Reflect for TrackSizings

Source§

impl Reflect for Length

Source§

impl Reflect for Margin

Source§

impl Reflect for Paper

Source§

impl Reflect for Ratio

Source§

impl Reflect for Rel

Source§

impl Reflect for VElem

Source§

impl Reflect for typst_library::loading::csv_::Delimiter

Source§

impl Reflect for Accent

Source§

impl Reflect for Augment

Source§

impl Reflect for AugmentOffsets

Source§

impl Reflect for typst_library::math::matrix::Delimiter

Source§

impl Reflect for DelimiterPair

Source§

impl Reflect for CiteElem

Source§

impl Reflect for Author

Source§

impl Reflect for Keywords

Source§

impl Reflect for EnumItem

Source§

impl Reflect for FigureCaption

Source§

impl Reflect for FootnoteElem

Source§

impl Reflect for Url

Source§

impl Reflect for ListItem

Source§

impl Reflect for NumberingPattern

Source§

impl Reflect for OutlineEntry

Source§

impl Reflect for FirstLineIndent

Source§

impl Reflect for TableCell

Source§

impl Reflect for TermItem

Source§

impl Reflect for FontStretch

Source§

impl Reflect for FontWeight

Source§

impl Reflect for Lang

Source§

impl Reflect for Region

Source§

impl Reflect for WritingScript

Source§

impl Reflect for SmartQuoteDict

Source§

impl Reflect for SmartQuoteSet

Source§

impl Reflect for Costs

Source§

impl Reflect for FontFamily

Source§

impl Reflect for FontFeatures

Source§

impl Reflect for FontList

Source§

impl Reflect for StylisticSets

Source§

impl Reflect for TextDir

Source§

impl Reflect for TextSize

Source§

impl Reflect for ChromaComponent

Source§

impl Reflect for Component

Source§

impl Reflect for RatioComponent

Source§

impl Reflect for WeightedColor

Source§

impl Reflect for GradientStop

Source§

impl Reflect for PixelFormat

Source§

impl Reflect for DashPattern

Source§

impl Reflect for Stroke

Source§

impl Reflect for Tiling

Source§

impl Reflect for Args

Source§

impl Reflect for Array

Source§

impl Reflect for AutoValue

Source§

impl Reflect for Content

Source§

impl Reflect for Decimal

Source§

impl Reflect for DisplayPattern

Source§

impl Reflect for Duration

Source§

impl Reflect for Element

Source§

impl Reflect for Func

Source§

impl Reflect for Label

Source§

impl Reflect for LocatableSelector

Source§

impl Reflect for Module

Source§

impl Reflect for NoneValue

Source§

impl Reflect for PluginFunc

Source§

impl Reflect for Regex

Source§

impl Reflect for ShowableSelector

Source§

impl Reflect for Str

Source§

impl Reflect for Styles

Source§

impl Reflect for Symbol

Source§

impl Reflect for SymbolVariant

Source§

impl Reflect for ToArray

Source§

impl Reflect for ToBytes

Source§

impl Reflect for ToDict

Source§

impl Reflect for ToFloat

Source§

impl Reflect for ToInt

Source§

impl Reflect for Type

Source§

impl Reflect for Version

Source§

impl<H, V> Reflect for SpecificAlignment<H, V>
where H: Reflect, V: Reflect,

Source§

impl<S, D> Reflect for Derived<S, D>
where S: Reflect,

Source§

impl<T> Reflect for Smart<T>
where T: Reflect,

Source§

impl<T> Reflect for Celled<T>
where T: Reflect,

Source§

impl<T> Reflect for Corners<Option<T>>
where T: Reflect,

Source§

impl<T> Reflect for Sides<Option<T>>
where T: Reflect,

Source§

impl<T> Reflect for OneOrMultiple<T>
where T: Reflect,

Source§

impl<T> Reflect for Packed<T>