Skip to main content

PreprocessorError

Enum PreprocessorError 

Source
pub enum PreprocessorError<'a> {
Show 25 variants Endif(Span<'a>), NoEndif(Token<'a>, Span<'a>), Elsif(Span<'a>), Else(Span<'a>), EndKeywords(Span<'a>), NoEndKeywords(Span<'a>), InvalidDefineParameter(SpannedToken<'a>), InvalidDefineArgument(SpannedToken<'a>), InvalidVersionSpecifier((Option<&'a str>, Span<'a>)), IncompleteDirective(Span<'a>), IncompleteDefine(SpannedToken<'a>), UndefinedMacro((&'a str, Span<'a>)), DuplicateMacroParameter((&'a str, &'a str, Span<'a>, Span<'a>)), NoDefaultAfterDefault((SpannedString<'a>, SpannedString<'a>)), NoMacroArguments((Span<'a>, (&'a str, Span<'a>))), TooManyMacroArguments((Span<'a>, (&'a str, usize, usize, Span<'a>))), MissingMacroArgument((Span<'a>, (&'a str, Span<'a>))), InvalidIdentifierFormation((&'a str, Span<'a>)), InvalidRelativeTimescales(Span<'a>), IncompleteMacroWithToken(SpannedToken<'a>), Include(Span<'a>, String, Error), IncludeDepth(Span<'a>, Vec<Span<'a>>), VerboseError(VerboseError<'a>), NewlineInDefine(Span<'a>), EndOfFunctionArgument(SpannedToken<'a>),
}
Expand description

An error encountered during preprocessing

As preprocessing can affect the interpretation of later source code, these errors are often irrecoverable

Errors marked with INTERNAL are meant for use inside the preprocessor for passing information, and should not be returned

Variants§

§

Endif(Span<'a>)

An `endif encountered outside a conditional preprocessor block

let source = "
`endif
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::Endif(_))));
§

NoEndif(Token<'a>, Span<'a>)

No terminating `endif for a conditional preprocessor block

let source = "
`ifdef TEST
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::NoEndif(Token::DirIfdef, _))));
§

Elsif(Span<'a>)

An `elsif encountered outside a conditional preprocessor block

let source = "
`elsif
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::Elsif(_))));
§

Else(Span<'a>)

An `else encountered outside a conditional preprocessor block

let source = "
`else
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::Else(_))));
§

EndKeywords(Span<'a>)

An `end_keywords encountered outside a `begin_keywords block

let source = "
`end_keywords
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::EndKeywords(_))));
§

NoEndKeywords(Span<'a>)

No terminating `end_keywords for a `begin_keywords block

let source = "
`begin_keywords \"1800-2009\"
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::NoEndKeywords(_))));
§

InvalidDefineParameter(SpannedToken<'a>)

A missing parameter in a `define function declaration where one is expected

let source = "
`define TEST()
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::InvalidDefineParameter(_))));
§

InvalidDefineArgument(SpannedToken<'a>)

A missing or invalid argument specification in a `define function

let source = "
`define TEST(a, b c)
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::InvalidDefineArgument(_))));
§

InvalidVersionSpecifier((Option<&'a str>, Span<'a>))

An invalid version specifier for a `begin_keywords directive

let source = "
`begin_keywords \"MyVersion\"
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::InvalidVersionSpecifier(_))));
§

IncompleteDirective(Span<'a>)

A directive that doesn’t have all of the required components

In general, PreprocessorError::VerboseError is preferred, but may not be suitable due to a lack of subsequent tokens

let source = "`line";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::IncompleteDirective(_))));
§

IncompleteDefine(SpannedToken<'a>)

An incomplete preprocessor definition, specifically with function macro arguments

let source = "
`define TEST(
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::IncompleteDefine(_))));
§

UndefinedMacro((&'a str, Span<'a>))

Use of a text macro that wasn’t previously defined

let source = "
`TEST
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::UndefinedMacro(_))));
§

DuplicateMacroParameter((&'a str, &'a str, Span<'a>, Span<'a>))

Specifying a macro parameter that was already specified

let source = "
`define TEST(a, b, a) a + b
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::DuplicateMacroParameter(_))));
§

NoDefaultAfterDefault((SpannedString<'a>, SpannedString<'a>))

Attempting to have a macro parameter with no default value after one that does

let source = "
`define TEST(a = 1, b) a + b
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::NoDefaultAfterDefault(_))));
§

NoMacroArguments((Span<'a>, (&'a str, Span<'a>)))

Specifying no arguments for a macro function that takes arguments

let source = "
`define TEST(a, b) a + b
`TEST
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::NoMacroArguments(_))));
§

TooManyMacroArguments((Span<'a>, (&'a str, usize, usize, Span<'a>)))

Specifying too many arguments for a macro function

let source = "
`define TEST(a, b) a + b
`TEST(1, 2, 3)
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::TooManyMacroArguments(_))));
§

MissingMacroArgument((Span<'a>, (&'a str, Span<'a>)))

Missing an argument in a macro function use

let source = "
`define TEST(a, b) a + b
`TEST(1)
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::MissingMacroArgument(_))));
§

InvalidIdentifierFormation((&'a str, Span<'a>))

An invalid preprocessor identifier specification

let source = "
`define TEST(a, b) a``_with_``b
`TEST(\"one\", \"two\")
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::InvalidIdentifierFormation(_))));
§

InvalidRelativeTimescales(Span<'a>)

A precision that is less precise than the unit in a `timescale directive

let source = "
`timescale 100 fs / 1 s
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::InvalidRelativeTimescales(_))));
§

IncompleteMacroWithToken(SpannedToken<'a>)

An incomplete macro due to mismatching grouping tokens ([], (), or {})

let source = "
`define TEST(a, b) a + b
`TEST(a = 1, b = 2])
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::IncompleteMacroWithToken(_))));
§

Include(Span<'a>, String, Error)

An error reading a file specified by an `include macro

let source = "
`include \"other.v\"
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::Include(_, _, _))));
§

IncludeDepth(Span<'a>, Vec<Span<'a>>)

The maximum include depth was hit, likely as a result of a self-referential `include sequence

let source = "
`include \"test.v\"
";
state.retain_file(
    "test.v".to_string(),
    source.to_string(),
    &cache,
);
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
assert!(matches!(preprocess_result, Err(PreprocessorError::IncludeDepth(_, _))));
§

VerboseError(VerboseError<'a>)

A VerboseError detailing the expected and found tokens, for a case not covered above

This is most commonly used when we can provide the user with a bit more context

let source = "
`line
";
let input = lex(source, "test.v").tokens();
let preprocess_result = preprocess(
    &mut TokenIterator::new(input.into_iter()),
    &mut state,
    &cache,
);
// Expects a line number
assert!(matches!(preprocess_result, Err(PreprocessorError::VerboseError(_))));
§

NewlineInDefine(Span<'a>)

INTERNAL: A newline encountered in a `define directive

§

EndOfFunctionArgument(SpannedToken<'a>)

INTERNAL: The end of a function argument was encountered

Trait Implementations§

Source§

impl<'a> Debug for PreprocessorError<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'s> From<&PreprocessorError<'s>> for Report<'s, (String, Range<usize>)>

Source§

fn from(s: &PreprocessorError<'s>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<'a> !RefUnwindSafe for PreprocessorError<'a>

§

impl<'a> !UnwindSafe for PreprocessorError<'a>

§

impl<'a> Freeze for PreprocessorError<'a>

§

impl<'a> Send for PreprocessorError<'a>

§

impl<'a> Sync for PreprocessorError<'a>

§

impl<'a> Unpin for PreprocessorError<'a>

§

impl<'a> UnsafeUnpin for PreprocessorError<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Paint for T
where T: ?Sized,

Source§

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 primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

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>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

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 bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

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 mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
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.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

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);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.