refactor: use one global static collator
This commit is contained in:
		| @@ -1,12 +1,17 @@ | ||||
| use std::ops::Deref; | ||||
| use std::str::FromStr; | ||||
| use std::sync::Mutex; | ||||
| use chrono::Locale; | ||||
| use dioxus::fullstack::once_cell::sync::Lazy; | ||||
| use dioxus_sdk::i18n::Language; | ||||
| use feruca::Collator; | ||||
| use unic_langid_impl::LanguageIdentifier; | ||||
|  | ||||
| const EN_US: &str = include_str!("en_us.json"); | ||||
| const CS_CZ: &str = include_str!("cs_cz.json"); | ||||
|  | ||||
| pub(crate) static COLLATOR: Lazy<Mutex<Collator>> = Lazy::new(|| Mutex::new(Collator::default())); | ||||
|  | ||||
| pub(crate) fn get_languages() -> Vec<Language> { | ||||
|     Vec::from([EN_US, CS_CZ]).into_iter().map(|texts| Language::from_str(texts).unwrap()).collect() | ||||
| } | ||||
|   | ||||
| @@ -2,9 +2,9 @@ use std::cmp::Ordering; | ||||
| use chrono::NaiveDateTime; | ||||
| use crate::schema::projects; | ||||
| use diesel::prelude::*; | ||||
| use feruca::Collator; | ||||
| use serde::{Deserialize, Serialize}; | ||||
| use validator::Validate; | ||||
| use crate::internationalization::COLLATOR; | ||||
|  | ||||
| const TITLE_LENGTH_MIN: u64 = 1; | ||||
| const TITLE_LENGTH_MAX: u64 = 255; | ||||
| @@ -47,7 +47,7 @@ impl PartialOrd<Self> for Project { | ||||
|  | ||||
| impl Ord for Project { | ||||
|     fn cmp(&self, other: &Self) -> Ordering { | ||||
|         Collator::default().collate(self.title(), other.title()) | ||||
|         COLLATOR.lock().unwrap().collate(self.title(), other.title()) | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Matouš Volf
					Matouš Volf