Skip to content

Commit 6c196ee

Browse files
Remove unneeded string clone in L10nManager localize
1 parent a572a6e commit 6c196ee

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

druid/src/localization.rs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ impl L10nManager {
256256
&'args self,
257257
key: &str,
258258
args: impl Into<Option<&'args FluentArgs<'args>>>,
259-
) -> Option<ArcStr> {
259+
) -> Option<Cow<str>> {
260260
let args = args.into();
261261
let value = match self
262262
.current_bundle
@@ -274,7 +274,7 @@ impl L10nManager {
274274
warn!("localization error {:?}", err);
275275
}
276276

277-
Some(result.into())
277+
Some(result)
278278
}
279279
//TODO: handle locale change
280280
}
@@ -353,9 +353,16 @@ impl<T> LocalizedString<T> {
353353

354354
self.resolved_lang = Some(manager.current_locale.clone());
355355
let next = manager.localize(self.key, args.as_ref());
356-
let result = next != self.resolved;
357-
self.resolved = next;
358-
result
356+
{
357+
let next = next.as_ref().map(|cow| cow.as_ref());
358+
let prev = self.resolved.as_ref().map(|arc| arc.as_ref());
359+
if next == prev {
360+
// still the same value, no need to update the field
361+
return false;
362+
}
363+
}
364+
self.resolved = next.map(|cow| cow.into());
365+
true
359366
} else {
360367
false
361368
}

0 commit comments

Comments
 (0)