coco_rs/
log_level.rs

1use std::ffi::CStr;
2
3/// COCO's log levels.
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum LogLevel {
6    /// Log only errors.
7    Error,
8    /// Log only warnings and errors.
9    Warning,
10    /// Log everything except debug messages.
11    Info,
12    /// Log everyhting.
13    Debug,
14}
15
16impl Default for LogLevel {
17    fn default() -> Self {
18        LogLevel::Info
19    }
20}
21
22impl LogLevel {
23    /// Sets COCO's log level.
24    pub fn set(self) {
25        let level = CStr::from_bytes_with_nul(match self {
26            LogLevel::Error => b"error\0",
27            LogLevel::Warning => b"warning\0",
28            LogLevel::Info => b"info\0",
29            LogLevel::Debug => b"debug\0",
30        })
31        .unwrap();
32
33        unsafe {
34            coco_sys::coco_set_log_level(level.as_ptr());
35        }
36    }
37}