1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
//! Error-handling utilities. pub use crate::backend::BackendError; pub use anyhow::{anyhow, bail, ensure, Error}; /// Insufficient buffer size error. /// /// This is returned by methods like /// [`RequestHandle::get_header_names()`][`crate::handle::RequestHandle::get_header_names()`] if a /// value was larger than the provided maximum size. /// /// If you get such an error, you can try the same call again with a larger buffer. #[derive(Copy, Clone, Debug, PartialEq, Eq, thiserror::Error)] #[error("insufficient buffer size {buf_size}; value requires {needed_buf_size} bytes")] pub struct BufferSizeError { /// The attempted buffer size. /// /// This is to help make nicer error messages. pub buf_size: usize, /// The buffer size that was required. /// /// Trying an operation again with a buffer at least this big may succeed where a previous call /// failed. However, it is not guaranteed to succeed, for example if there is an even larger /// value later in the list than the first value that was too large. pub needed_buf_size: usize, } impl BufferSizeError { /// Create a new [`BufferSizeError`]. pub(crate) fn new(buf_size: usize, needed_buf_size: usize) -> Self { Self { buf_size, needed_buf_size, } } }