#![no_std]
#![doc = include_str!("README.md")]
use core::ops::Deref;
pub fn split_first_char(text: &str) -> Option<(char, &'_ str)> {
let mut iter = text.chars();
let first = iter.next()?;
let rest = iter.as_str();
Some((first, rest))
}
pub trait SplitFirstChar: Deref<Target = str> {
fn split_first_char(&self) -> Option<(char, &'_ str)> {
split_first_char(self)
}
}
impl<Str: Deref<Target = str>> SplitFirstChar for Str {}
#[cfg(test)]
mod test {
use super::SplitFirstChar;
#[test]
fn test_split_first_char() {
assert_eq!("abc".split_first_char(), Some(('a', "bc")));
assert_eq!("x".split_first_char(), Some(('x', "")));
assert_eq!("".split_first_char(), None);
}
}