summaryrefslogtreecommitdiffstats
path: root/vendor/winnow/examples/custom_error.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:50 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:50 +0000
commit9835e2ae736235810b4ea1c162ca5e65c547e770 (patch)
tree3fcebf40ed70e581d776a8a4c65923e8ec20e026 /vendor/winnow/examples/custom_error.rs
parentReleasing progress-linux version 1.70.0+dfsg2-1~progress7.99u1. (diff)
downloadrustc-9835e2ae736235810b4ea1c162ca5e65c547e770.tar.xz
rustc-9835e2ae736235810b4ea1c162ca5e65c547e770.zip
Merging upstream version 1.71.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/winnow/examples/custom_error.rs')
-rw-r--r--vendor/winnow/examples/custom_error.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/winnow/examples/custom_error.rs b/vendor/winnow/examples/custom_error.rs
new file mode 100644
index 000000000..954452a20
--- /dev/null
+++ b/vendor/winnow/examples/custom_error.rs
@@ -0,0 +1,42 @@
+use winnow::error::ErrMode;
+use winnow::error::ErrorKind;
+use winnow::error::ParseError;
+use winnow::IResult;
+
+#[derive(Debug, PartialEq, Eq)]
+pub enum CustomError<I> {
+ MyError,
+ Nom(I, ErrorKind),
+}
+
+impl<I> ParseError<I> for CustomError<I> {
+ fn from_error_kind(input: I, kind: ErrorKind) -> Self {
+ CustomError::Nom(input, kind)
+ }
+
+ fn append(self, _: I, _: ErrorKind) -> Self {
+ self
+ }
+}
+
+pub fn parse(_input: &str) -> IResult<&str, &str, CustomError<&str>> {
+ Err(ErrMode::Backtrack(CustomError::MyError))
+}
+
+fn main() {}
+
+#[cfg(test)]
+mod tests {
+ use super::parse;
+ use super::CustomError;
+ use winnow::error::ErrMode;
+
+ #[test]
+ fn it_works() {
+ let err = parse("").unwrap_err();
+ match err {
+ ErrMode::Backtrack(e) => assert_eq!(e, CustomError::MyError),
+ _ => panic!("Unexpected error: {:?}", err),
+ }
+ }
+}