initial commit

- login works
- basic documentation
This commit is contained in:
2026-05-09 06:28:09 +02:00
commit d2a2baebc8
16 changed files with 2524 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
use std::ffi::CStr;
pub trait SliceExt {
fn split_once_ch(&self, ch: u8) -> Option<(&[u8], &[u8])>;
}
impl SliceExt for [u8] {
fn split_once_ch(&self, ch: u8) -> Option<(&[u8], &[u8])> {
let (idx, _) = self.iter().enumerate().find(|(_, b)| **b == ch)?;
// SAFETY: idx is IN-OF-BOUNDS index of the slice
unsafe { Some((self.get_unchecked(0..idx), self.get_unchecked((idx + 1)..))) }
}
}
pub trait CStrExt {
fn split_ch(&self, ch: u8) -> Option<(&[u8], &CStr)>;
}
impl CStrExt for CStr {
fn split_ch(&self, ch: u8) -> Option<(&[u8], &CStr)> {
let self_slice = self.to_bytes_with_nul();
self_slice.split_once_ch(ch).map(|(k, v)| {
// # SAFETY split originated in a slice with final null byte, hence second split will be
// null terminated
(k, unsafe { Self::from_bytes_with_nul_unchecked(v) })
})
}
}