Skip to main content

Error

Struct Error 

Source
#[non_exhaustive]
pub struct Error { /* private fields */ }
Expand description

The error type for the TypeScript exporter.

§BigInt Forbidden

Specta Typescript intentionally forbids exporting BigInt-style Rust integer types. This includes usize, isize, i64, u64, u128, i128 and f128.

This guard exists because JSON.parse will truncate large integers to fit into a JavaScript number type so we explicitly forbid exporting them.

If you encounter this error, there are a few common migration paths (in order of preference):

  1. Use a smaller integer types (any of u8/i8/u16/i16/u32/i32/f64).

    • Only possible when the biggest integer you need to represent is small enough to be represented by a number in JS.
    • This approach forces your application code to handle overflow/underflow values explicitly
    • Downside is that it can introduce annoying glue code and doesn’t actually work if your need large values.
  2. Serialize the value as a string

    • This can be done using #[specta(type = String)] combined with a Serde #[serde(with = "...")] attribute.
    • Downside is that it can introduce annoying glue code, both on in Rust and in JS as you will need to turn it back into a new BigInt(myString) in JS.
  3. Use a Specta-based framework

    • Frameworks like Tauri Specta and TauRPC take care of this for you.
    • They use special internals to preserve the values and make use of specta-tags for generating glue-code automatically.
  4. UNSAFE: Accept precision loss

    • Accept that large numbers may be deserialized differently and use #[specta(type = f64)] to bypass this warning on a per-field basis.
    • This can’t be set globally as it is designed intentionally to introduce friction, as you are accepting the risk of data loss which is not okay.

Implementations§

Source§

impl Error

Source

pub fn framework( message: impl Into<Cow<'static, str>>, source: impl Into<Box<dyn Error + Send + Sync>>, ) -> Self

Construct an error for framework-specific logic.

Trait Implementations§

Source§

impl Debug for Error

Source§

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

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

impl Display for Error

Source§

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

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

impl Error for Error

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<Error> for Error

Source§

fn from(error: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for Error

Source§

fn from(error: Error) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl Freeze for Error

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnsafeUnpin for Error

§

impl !UnwindSafe for Error

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.