/// Itère sur chaque zone simple (un bit) contenu dans ce bitflag.
/// LogZone::ALL → seulement les 8 zones prédéfinies (bits 0-7).
/// Zones custom → seulement si explicitement dans le bitflag (pas hérités de ALL).
pub fn iter_single(self) -> impl Iterator<Item = LogZone> {
// Zones prédéfinies = bits 0..7
// Pour ALL (u32::MAX), on ignore les bits custom (8..31) qui seraient vides
let predefined = self.0 & 0xFF;
let custom = if self.0 == u32::MAX { 0u32 } else { self.0 & !0xFF };
let bits = predefined | custom;
(0..32u8)
.filter(move |&bit| bits & (1u32 << bit) != 0)
.map(|bit| LogZone(1u32 << bit))
}