• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

projectfluent / fluent-rs / 13221860010

09 Feb 2025 03:13AM UTC coverage: 89.64% (-0.04%) from 89.675%
13221860010

Pull #378

github

web-flow
Merge ee3bfef45 into f2033ce83
Pull Request #378: deps: update `thiserror` to version 2

3963 of 4421 relevant lines covered (89.64%)

3602.64 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/fluent-bundle/src/concurrent.rs
1
use intl_memoizer::{concurrent::IntlLangMemoizer, Memoizable};
2
use rustc_hash::FxHashMap;
3
use unic_langid::LanguageIdentifier;
4

5
use crate::memoizer::MemoizerKind;
6
use crate::types::FluentType;
7

8
/// Specialized [`FluentBundle`](crate::bundle::FluentBundle) over
9
/// concurrent [`IntlLangMemoizer`].
10
///
11
/// A concurrent `FluentBundle` can be constructed with the
12
/// [`FluentBundle::new_concurrent`] method.
13
///
14
/// See [`FluentBundle`](crate::FluentBundle) for the non-concurrent specialization.
15
pub type FluentBundle<R> = crate::bundle::FluentBundle<R, IntlLangMemoizer>;
16

17
impl<R> FluentBundle<R> {
18
    /// A constructor analogous to [`FluentBundle::new`] but operating
19
    /// on a concurrent version of [`IntlLangMemoizer`] over [`Mutex`](std::sync::Mutex).
20
    ///
21
    /// # Example
22
    ///
23
    /// ```
24
    /// use fluent_bundle::concurrent::FluentBundle;
25
    /// use fluent_bundle::FluentResource;
26
    /// use unic_langid::langid;
27
    ///
28
    /// let langid_en = langid!("en-US");
29
    /// let mut bundle: FluentBundle<FluentResource> =
30
    ///     FluentBundle::new_concurrent(vec![langid_en]);
31
    /// ```
32
    pub fn new_concurrent(locales: Vec<LanguageIdentifier>) -> Self {
×
33
        let first_locale = locales.first().cloned().unwrap_or_default();
×
34
        Self {
×
35
            locales,
×
36
            resources: vec![],
×
37
            entries: FxHashMap::default(),
×
38
            intls: IntlLangMemoizer::new(first_locale),
×
39
            use_isolating: true,
×
40
            transform: None,
×
41
            formatter: None,
×
42
        }
×
43
    }
×
44
}
45

46
impl MemoizerKind for IntlLangMemoizer {
47
    fn new(lang: LanguageIdentifier) -> Self
×
48
    where
×
49
        Self: Sized,
×
50
    {
×
51
        Self::new(lang)
×
52
    }
×
53

54
    fn with_try_get_threadsafe<I, R, U>(&self, args: I::Args, cb: U) -> Result<R, I::Error>
×
55
    where
×
56
        Self: Sized,
×
57
        I: Memoizable + Send + Sync + 'static,
×
58
        I::Args: Send + Sync + 'static,
×
59
        U: FnOnce(&I) -> R,
×
60
    {
×
61
        self.with_try_get(args, cb)
×
62
    }
×
63

64
    fn stringify_value(&self, value: &dyn FluentType) -> std::borrow::Cow<'static, str> {
×
65
        value.as_string_threadsafe(self)
×
66
    }
×
67
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc