summaryrefslogtreecommitdiffstats
path: root/vendor/arbitrary/src/error.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 09:26:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-19 09:26:03 +0000
commit9918693037dce8aa4bb6f08741b6812923486c18 (patch)
tree21d2b40bec7e6a7ea664acee056eb3d08e15a1cf /vendor/arbitrary/src/error.rs
parentReleasing progress-linux version 1.75.0+dfsg1-5~progress7.99u1. (diff)
downloadrustc-9918693037dce8aa4bb6f08741b6812923486c18.tar.xz
rustc-9918693037dce8aa4bb6f08741b6812923486c18.zip
Merging upstream version 1.76.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/arbitrary/src/error.rs')
-rw-r--r--vendor/arbitrary/src/error.rs53
1 files changed, 53 insertions, 0 deletions
diff --git a/vendor/arbitrary/src/error.rs b/vendor/arbitrary/src/error.rs
new file mode 100644
index 000000000..6ca8f190c
--- /dev/null
+++ b/vendor/arbitrary/src/error.rs
@@ -0,0 +1,53 @@
+use std::{error, fmt};
+
+/// An enumeration of buffer creation errors
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+#[non_exhaustive]
+pub enum Error {
+ /// No choices were provided to the Unstructured::choose call
+ EmptyChoose,
+ /// There was not enough underlying data to fulfill some request for raw
+ /// bytes.
+ NotEnoughData,
+ /// The input bytes were not of the right format
+ IncorrectFormat,
+}
+
+impl fmt::Display for Error {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ match self {
+ Error::EmptyChoose => write!(
+ f,
+ "`arbitrary::Unstructured::choose` must be given a non-empty set of choices"
+ ),
+ Error::NotEnoughData => write!(
+ f,
+ "There is not enough underlying raw data to construct an `Arbitrary` instance"
+ ),
+ Error::IncorrectFormat => write!(
+ f,
+ "The raw data is not of the correct format to construct this type"
+ ),
+ }
+ }
+}
+
+impl error::Error for Error {}
+
+/// A `Result` with the error type fixed as `arbitrary::Error`.
+///
+/// Either an `Ok(T)` or `Err(arbitrary::Error)`.
+pub type Result<T, E = Error> = std::result::Result<T, E>;
+
+#[cfg(test)]
+mod tests {
+ // Often people will import our custom `Result` type because 99.9% of
+ // results in a file will be `arbitrary::Result` but then have that one last
+ // 0.1% that want to have a custom error type. Don't make them prefix that
+ // 0.1% as `std::result::Result`; instead, let `arbitrary::Result` have an
+ // overridable error type.
+ #[test]
+ fn can_use_custom_error_types_with_result() -> super::Result<(), String> {
+ Ok(())
+ }
+}