rogu 0.2.7

Simple logger library
Documentation
use core::{ptr, mem};

const UTF8_OFFSET: u8 = b'0';

pub struct TimeDate([u8; 22]);

impl TimeDate {
    pub fn as_str(&self) -> &str {
        unsafe {
            core::str::from_utf8_unchecked(&self.0)
        }
    }
}

#[inline(always)]
pub fn get() -> TimeDate {
    let now = time::OffsetDateTime::now_utc();
    let mut buffer = mem::MaybeUninit::<[u8; 22]>::uninit();
    unsafe {
        let buffer_ptr = buffer.as_mut_ptr() as *mut u8;
        ptr::write(buffer_ptr, b'[');

        let mut num = now.year();
        for idx in (1..5).rev() {
            ptr::write(buffer_ptr.add(idx), (num % 10) as u8 + UTF8_OFFSET);
            num /= 10;
        }

        ptr::write(buffer_ptr.add(5), b'-');

        let mut num = now.month();
        for idx in (6..8).rev() {
            ptr::write(buffer_ptr.add(idx), num % 10 + UTF8_OFFSET);
            num /= 10;
        }

        ptr::write(buffer_ptr.add(8), b'-');

        num = now.day();
        for idx in (9..11).rev() {
            ptr::write(buffer_ptr.add(idx), num % 10 + UTF8_OFFSET);
            num /= 10;
        }

        ptr::write(buffer_ptr.add(11), b' ');

        num = now.hour();
        for idx in (12..14).rev() {
            ptr::write(buffer_ptr.add(idx), num % 10 + UTF8_OFFSET);
            num /= 10;
        }

        ptr::write(buffer_ptr.add(14), b':');

        num = now.minute();
        for idx in (15..17).rev() {
            ptr::write(buffer_ptr.add(idx), num % 10 + UTF8_OFFSET);
            num /= 10;
        }

        ptr::write(buffer_ptr.add(17), b':');

        num = now.second();
        for idx in (18..20).rev() {
            ptr::write(buffer_ptr.add(idx), num % 10 + UTF8_OFFSET);
            num /= 10;
        }

        ptr::write(buffer_ptr.add(20), b']');
        ptr::write(buffer_ptr.add(21), b' ');
    }

    unsafe {
        TimeDate(buffer.assume_init())
    }
}