file.write_all(
"\
-use lazy_static::lazy_static;
use std::collections::HashMap;
-lazy_static! {
- static ref CODEPAGE_NUMBER_TO_NAME: HashMap<i32, &'static str> = {
- let mut map = HashMap::new();
+static CODEPAGE_NUMBER_TO_NAME: LazyLock<HashMap<i32, &'static str>> = LazyLock::new(|| {
+ let mut map = HashMap::new();
"
.as_bytes(),
)?;
}
file.write_all(
" map
- };
+});
- static ref CODEPAGE_NAME_TO_NUMBER: HashMap<&'static str, u32> = {
- let mut map = HashMap::new();
+static CODEPAGE_NAME_TO_NUMBER: LazyLock<HashMap<&'static str, u32>> = LazyLock::new(|| {
+ let mut map = HashMap::new();
"
.as_bytes(),
)?;
}
file.write_all(
" map
- };
-}
+});
"
.as_bytes(),
)?;
#![allow(dead_code)]
-use lazy_static::lazy_static;
use num::Integer;
use std::{
cell::RefCell,
mem::take,
num::NonZeroUsize,
ops::RangeInclusive,
+ sync::LazyLock,
};
use thiserror::Error as ThisError;
use unicase::UniCase;
}
fn is_macro_keyword(s: &Identifier) -> bool {
- lazy_static! {
- static ref KEYWORDS: HashSet<Identifier> = macro_keywords();
- }
+ static KEYWORDS: LazyLock<HashSet<Identifier>> = LazyLock::new(macro_keywords);
KEYWORDS.contains(s)
}
}
}
}
- lazy_static! {
- static ref MACRO_FUNCTIONS: [MacroFunction; 11] = [
+ static MACRO_FUNCTIONS: LazyLock<[MacroFunction; 11]> = LazyLock::new(|| {
+ [
MacroFunction::new("!BLANKS", 1..=1, Expander::expand_blanks),
MacroFunction::new("!CONCAT", 1..=usize::MAX, Expander::expand_concat),
MacroFunction::new("!HEAD", 1..=1, Expander::expand_head),
MacroFunction::new("!UNQUOTE", 1..=1, Expander::expand_unquote),
MacroFunction::new("!UPCASE", 1..=1, Expander::expand_upcase),
MacroFunction::new("!EVAL", 1..=1, Expander::expand_eval),
- ];
- }
+ ]
+ });
let function = MACRO_FUNCTIONS.iter().find(|mf| &mf.name == name)?;
+use std::sync::LazyLock;
+
use crate::locale_charset::locale_charset;
use encoding_rs::{Encoding, UTF_8};
}
pub fn default_encoding() -> &'static Encoding {
- lazy_static! {
- static ref DEFAULT_ENCODING: &'static Encoding =
- Encoding::for_label(locale_charset().as_bytes()).unwrap_or(UTF_8);
- }
+ static DEFAULT_ENCODING: LazyLock<&'static Encoding> =
+ LazyLock::new(|| Encoding::for_label(locale_charset().as_bytes()).unwrap_or(UTF_8));
&DEFAULT_ENCODING
}