x509_parser/validate/
loggers.rs1pub trait Logger {
2 fn warn(&mut self, message: &str);
3
4 fn err(&mut self, message: &str);
5}
6
7#[derive(Debug, Default)]
9pub struct VecLogger {
10 warnings: Vec<String>,
11 errors: Vec<String>,
12}
13
14impl VecLogger {
15 pub fn warnings(&self) -> &[String] {
17 &self.warnings
18 }
19
20 pub fn errors(&self) -> &[String] {
22 &self.errors
23 }
24}
25
26impl Logger for VecLogger {
27 fn warn(&mut self, message: &str) {
28 self.warnings.push(message.to_owned())
29 }
30
31 fn err(&mut self, message: &str) {
32 self.errors.push(message.to_owned())
33 }
34}
35
36#[derive(Debug, Default)]
38pub struct StderrLogger;
39
40impl Logger for StderrLogger {
41 fn warn(&mut self, message: &str) {
42 eprintln!("[W] {message}");
43 }
44
45 fn err(&mut self, message: &str) {
46 eprintln!("[E] {message}");
47 }
48}
49
50#[derive(Debug, Default)]
52pub struct CallbackLogger<W, E>
53where
54 W: FnMut(&str),
55 E: FnMut(&str),
56{
57 warn: W,
58 err: E,
59}
60
61impl<W, E> CallbackLogger<W, E>
62where
63 W: FnMut(&str),
64 E: FnMut(&str),
65{
66 pub fn new(warn: W, err: E) -> Self {
67 CallbackLogger { warn, err }
68 }
69}
70
71impl<W, E> Logger for CallbackLogger<W, E>
72where
73 W: FnMut(&str),
74 E: FnMut(&str),
75{
76 fn warn(&mut self, message: &str) {
77 (self.warn)(message);
78 }
79
80 fn err(&mut self, message: &str) {
81 (self.err)(message);
82 }
83}