Skip to content

Commit 1cbaff0

Browse files
author
Zibi Braniecki
committed
Allow for both reference and owned vec/strings in negotiate_languages
1 parent ce4db3b commit 1cbaff0

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

src/negotiate/mod.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -326,13 +326,17 @@ fn filter_matches<'a>(
326326
supported_locales
327327
}
328328

329-
pub fn negotiate_languages<'a>(
330-
requested: &[&'a str],
331-
available: &[&'a str],
329+
pub fn negotiate_languages<'a, T: AsRef<str>>(
330+
requested: &'a [T],
331+
available: &'a [T],
332332
default: Option<&'a str>,
333333
strategy: &NegotiationStrategy,
334334
) -> Vec<&'a str> {
335-
let mut supported = filter_matches(requested, available, strategy);
335+
let mut supported = filter_matches(
336+
&requested.into_iter().map(AsRef::as_ref).collect::<Vec<_>>(),
337+
&available.into_iter().map(AsRef::as_ref).collect::<Vec<_>>(),
338+
strategy,
339+
);
336340

337341
if let Some(d) = default {
338342
if strategy == &NegotiationStrategy::Lookup {

tests/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ fn test_negotiate_fixtures(path: &str) {
138138
};
139139
match test.input {
140140
NegotiateTestInput::NoDefault(r, a) => {
141+
// One with &str
141142
let requested: Vec<&str> = r.iter().map(|v| v.as_str()).collect();
142143
let available: Vec<&str> = a.iter().map(|v| v.as_str()).collect();
143144
assert_eq!(
@@ -147,9 +148,8 @@ fn test_negotiate_fixtures(path: &str) {
147148
path
148149
);
149150
}
150-
NegotiateTestInput::Default(r, a, default) => {
151-
let requested: Vec<&str> = r.iter().map(|v| v.as_str()).collect();
152-
let available: Vec<&str> = a.iter().map(|v| v.as_str()).collect();
151+
NegotiateTestInput::Default(requested, available, default) => {
152+
// One with String
153153
assert_eq!(
154154
negotiate_languages(&requested, &available, Some(default.as_str()), &strategy),
155155
test.output,

0 commit comments

Comments
 (0)