uuid/external/
slog_support.rs

1// Copyright 2013-2014 The Rust Project Developers.
2// Copyright 2018 The Uuid Project Developers.
3//
4// See the COPYRIGHT file at the top-level directory of this distribution.
5//
6// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
7// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
8// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
9// option. This file may not be copied, modified, or distributed
10// except according to those terms.
11
12use crate::{non_nil::NonNilUuid, Uuid};
13
14impl slog::Value for Uuid {
15    fn serialize(
16        &self,
17        _: &slog::Record<'_>,
18        key: slog::Key,
19        serializer: &mut dyn slog::Serializer,
20    ) -> Result<(), slog::Error> {
21        serializer.emit_arguments(key, &format_args!("{}", self))
22    }
23}
24
25impl slog::Value for NonNilUuid {
26    fn serialize(
27        &self,
28        record: &slog::Record<'_>,
29        key: slog::Key,
30        serializer: &mut dyn slog::Serializer,
31    ) -> Result<(), slog::Error> {
32        Uuid::from(*self).serialize(record, key, serializer)
33    }
34}
35
36#[cfg(test)]
37mod tests {
38    use crate::tests::new;
39
40    use slog::{crit, Drain};
41
42    #[test]
43    fn test_slog_kv() {
44        let root = slog::Logger::root(slog::Discard.fuse(), slog::o!());
45        let u1 = new();
46        crit!(root, "test"; "u1" => u1);
47    }
48}