rust-macios 0.4.2

Apple Frameworks for Rust
Documentation
use crate::{
    core_foundation::{CFIndex, CFTypeObject},
    kernel::UniChar,
};

use super::CFString;

pub struct Iter<'a> {
    pub(super) string: &'a CFString,
    pub(super) index: CFIndex,
}

impl<'a> Iterator for Iter<'a> {
    type Item = UniChar;

    fn next(&mut self) -> Option<Self::Item> {
        unsafe {
            if self.index >= CFString::get_length(self.string.get_internal_object()) {
                None
            } else {
                let item =
                    CFString::get_character_at_index(self.string.get_internal_object(), self.index);
                self.index += 1;
                Some(item)
            }
        }
    }
}