1use std::{convert, mem};
2
3use crate::{request::field, route};
4
5#[derive(Clone, Copy, Debug, PartialEq, Eq)]
7pub enum Error<F: Copy> {
8 Header {
9 field: F,
10 cause: field::Error,
11 },
12 Path {
13 field: F,
14 cause: field::Error,
15 },
16 Query {
17 field: F,
18 cause: field::Error,
19 },
20 QueryOrder {
21 start: usize,
22 end: usize,
23 capacity: usize,
24 },
25 QueryBounds {
26 start: usize,
27 end: usize,
28 capacity: usize,
29 },
30 QueryExhausted {
31 state: u8,
32 fields: usize,
33 start: usize,
34 end: usize,
35 },
36}
37
38impl<F: Copy> Error<F> {
39 pub const fn reject(self) -> route::Reject {
40 route::Reject::BadRequest
41 }
42}
43
44const _: () = {
45 assert!(!mem::needs_drop::<Error<convert::Infallible>>());
46};