1use std::fmt;
2
3#[derive(Debug)]
5pub struct Error {
6 kind: Kind,
7}
8
9#[derive(Debug)]
10enum Kind {
11 InvalidName,
12 InvalidValue,
13 InvalidPath,
14 InvalidDomain,
15 TooLong,
16}
17
18impl Error {
21 pub(crate) fn invalid_name() -> Error {
22 Error {
23 kind: Kind::InvalidName,
24 }
25 }
26
27 pub(crate) fn invalid_value() -> Error {
28 Error {
29 kind: Kind::InvalidValue,
30 }
31 }
32
33 pub(crate) fn invalid_path() -> Error {
34 Error {
35 kind: Kind::InvalidPath,
36 }
37 }
38
39 pub(crate) fn invalid_domain() -> Error {
40 Error {
41 kind: Kind::InvalidDomain,
42 }
43 }
44
45 pub(crate) fn too_long() -> Error {
46 Error {
47 kind: Kind::TooLong,
48 }
49 }
50}
51
52impl fmt::Display for Error {
53 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
54 match self.kind {
55 Kind::InvalidName => f.write_str("cookie name contains invalid character"),
56 Kind::InvalidValue => f.write_str("cookie value contains invalid character"),
57 Kind::InvalidPath => f.write_str("cookie path is invalid"),
58 Kind::InvalidDomain => f.write_str("cookie domain is invalid"),
59 Kind::TooLong => f.write_str("cookie string is too long"),
60 }
61 }
62}
63
64impl std::error::Error for Error {}