Skip to main content

ExtensionError

Struct ExtensionError 

Source
pub struct ExtensionError { /* private fields */ }
Expand description

An error that can occur during DuckDB extension initialization or registration.

This type is designed for use with the ? operator inside the extension entry point. It can be reported back to DuckDB via access.set_error.

§Construction

use quack_rs::error::ExtensionError;

// From a string literal
let e = ExtensionError::from("something went wrong");

// From a String
let msg = format!("failed: {}", 42);
let e = ExtensionError::from(msg);

// Wrapping another error
let parse_err: Result<i32, _> = "not a number".parse();
let e = parse_err.map_err(ExtensionError::from_error);

Implementations§

Source§

impl ExtensionError

Source

pub fn new(message: impl Into<String>) -> Self

Creates a new ExtensionError with the given message.

§Example
use quack_rs::error::ExtensionError;

let err = ExtensionError::new("registration failed");
assert_eq!(err.to_string(), "registration failed");
Source

pub fn from_error<E: Error>(e: E) -> Self

Wraps any std::error::Error into an ExtensionError.

§Example
use quack_rs::error::ExtensionError;

let result: Result<i32, _> = "abc".parse::<i32>();
let err = result.map_err(ExtensionError::from_error);
assert!(err.is_err());
Source

pub fn to_c_string(&self) -> CString

Converts this error into a CString suitable for passing to set_error.

If the message contains a null byte (which is valid in a Rust String but not in a C string), the message is truncated at the first null byte.

§Example
use quack_rs::error::ExtensionError;

let err = ExtensionError::new("oops");
let cstr = err.to_c_string();
assert_eq!(cstr.to_str().unwrap(), "oops");
Source

pub fn as_str(&self) -> &str

Returns the error message as a string slice.

§Example
use quack_rs::error::ExtensionError;

let err = ExtensionError::new("bad input");
assert_eq!(err.as_str(), "bad input");

Trait Implementations§

Source§

impl Clone for ExtensionError

Source§

fn clone(&self) -> ExtensionError

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ExtensionError

Source§

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

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

impl Display for ExtensionError

Source§

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

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

impl Error for ExtensionError

1.30.0 · 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<&str> for ExtensionError

Source§

fn from(s: &str) -> Self

Converts to this type from the input type.
Source§

impl From<Box<dyn Error>> for ExtensionError

Source§

fn from(e: Box<dyn Error>) -> Self

Converts to this type from the input type.
Source§

impl From<Box<dyn Error + Send + Sync>> for ExtensionError

Source§

fn from(e: Box<dyn Error + Send + Sync>) -> Self

Converts to this type from the input type.
Source§

impl From<String> for ExtensionError

Source§

fn from(s: String) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for ExtensionError

Source§

fn eq(&self, other: &ExtensionError) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for ExtensionError

Source§

impl StructuralPartialEq for ExtensionError

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.