#[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):
-
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
numberin 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.
- Only possible when the biggest integer you need to represent is small enough to be represented by a
-
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.
- This can be done using
-
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-tagsfor generating glue-code automatically.
-
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.
- Accept that large numbers may be deserialized differently and use
Implementations§
Trait Implementations§
Source§impl Error for Error
impl Error for Error
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
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
fn description(&self) -> &str
👎Deprecated since 1.42.0:
use the Display impl or to_string()
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> 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
Mutably borrows from an owned value. Read more