IbuError

Enum IbuError 

Source
pub enum IbuError {
    Io(Error),
    Niffler(Error),
    InvalidMagicNumber {
        expected: u32,
        actual: u32,
    },
    TruncatedRecord {
        pos: usize,
    },
    InvalidVersion {
        expected: u32,
        actual: u32,
    },
    InvalidBarcodeLength(u32),
    InvalidUmiLength(u32),
    InvalidMapSize,
    InvalidIndex {
        idx: usize,
        max: usize,
    },
    Process(Box<dyn StdError + Send + Sync>),
}
Expand description

Error types for IBU operations.

This enum covers all possible error conditions that can occur when reading, writing, or processing IBU files. Each variant provides specific context about what went wrong to help with debugging and error handling.

§Examples

use ibu::{IbuError, Reader};
use std::io::Cursor;

// Handle specific error types
let invalid_data = vec![0u8; 32];
let cursor = Cursor::new(invalid_data);

match Reader::new(cursor) {
    Err(IbuError::InvalidMagicNumber { expected, actual }) => {
        println!("Wrong file type: expected {:#x}, got {:#x}", expected, actual);
    },
    Err(IbuError::Io(io_err)) => {
        println!("I/O error: {}", io_err);
    },
    Err(e) => {
        println!("Other error: {}", e);
    },
    Ok(_) => unreachable!(),
}

Variants§

§

Io(Error)

I/O error from the underlying reader or writer.

This wraps standard I/O errors that can occur when reading from or writing to files, network streams, or other I/O sources.

§

Niffler(Error)

Compression/decompression error from niffler.

This occurs when there are problems with compressed file formats like gzip or zstd when the niffler feature is enabled.

§

InvalidMagicNumber

Invalid magic number in file header.

The file doesn’t start with the expected IBU magic number (0x21554249). This usually indicates the file is not an IBU file or is corrupted.

Fields

§expected: u32
§actual: u32
§

TruncatedRecord

Incomplete record data at the specified file position.

This occurs when the file ends in the middle of a record, indicating the file was truncated or corrupted during writing.

Fields

§pos: usize
§

InvalidVersion

Unsupported file format version.

The file was created with a different version of the IBU format that is not supported by this library version.

Fields

§expected: u32
§actual: u32
§

InvalidBarcodeLength(u32)

Barcode length is outside the valid range (1-32).

Barcode lengths must be between 1 and 32 bases due to the 2-bit encoding scheme used in the format.

§

InvalidUmiLength(u32)

UMI length is outside the valid range (1-32).

UMI lengths must be between 1 and 32 bases due to the 2-bit encoding scheme used in the format.

§

InvalidMapSize

File data size is not a multiple of the record size.

This indicates the file is corrupted or was not written properly, as all IBU files should contain complete 24-byte records after the header.

§

InvalidIndex

Array index is out of bounds.

This occurs when trying to access records beyond the end of the file or with invalid slice bounds in memory-mapped operations.

Fields

§idx: usize
§max: usize
§

Process(Box<dyn StdError + Send + Sync>)

Error occurred during parallel processing.

This wraps errors that occur in user-defined parallel processors, allowing custom error types to be propagated through the parallel processing system.

Trait Implementations§

Source§

impl Debug for IbuError

Source§

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

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

impl Display for IbuError

Source§

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

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

impl Error for IbuError

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 IbuError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for IbuError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.

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> 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<E> IntoIbuError for E
where E: Error + Send + Sync + 'static,

Source§

fn into_ibu_error(self) -> IbuError

Converts the error into an IbuError.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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.