Framework for embedding localizations into Rust types
//! Implementations of `Localize` for various list types

use crate::Localize;

use icu_locale::Locale;

macro_rules! impl_list {
    ($list_type:ty) => {
        impl<T: Localize> Localize for $list_type {
            fn localize_for(&self, locale: &Locale) -> String {
                let localized_items: Vec<String> =
                    self.iter().map(|item| item.localize_for(locale)).collect();
                localized_items.join("\n")
            }
        }
    };
}

impl_list!(Vec<T>);
impl_list!(&[T]);