Skip to content

Commit 507d682

Browse files
committed
Use Into<Cow<>>
1 parent 94faf51 commit 507d682

File tree

8 files changed

+32
-37
lines changed

8 files changed

+32
-37
lines changed

gix-negotiate/tests/baseline/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ fn run() -> crate::Result {
7171
// }
7272
for tip in lookup_names(&["HEAD"]).into_iter().chain(
7373
refs.iter()?
74-
.prefixed(b"refs/heads".as_bstr().into())?
74+
.prefixed(b"refs/heads".as_bstr())?
7575
.filter_map(Result::ok)
7676
.map(|r| r.target.into_id()),
7777
) {

gix-ref/src/store/file/loose/iter.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ impl file::Store {
8787
/// Return an iterator over all loose references that start with the given `prefix`.
8888
///
8989
/// Otherwise it's similar to [`loose_iter()`][file::Store::loose_iter()].
90-
pub fn loose_iter_prefixed(&self, prefix: Cow<'_, BStr>) -> std::io::Result<LooseThenPacked<'_, '_>> {
91-
self.iter_prefixed_packed(prefix, None)
90+
pub fn loose_iter_prefixed<'a>(&self, prefix: impl Into<Cow<'a, BStr>>) -> std::io::Result<LooseThenPacked<'_, '_>> {
91+
self.iter_prefixed_packed(prefix.into(), None)
9292
}
9393
}

gix-ref/src/store/file/overlay_iter.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -197,9 +197,9 @@ impl Platform<'_> {
197197

198198
/// As [`iter(…)`][file::Store::iter()], but filters by `prefix`, i.e. "refs/heads/" or
199199
/// "refs/heads/feature-".
200-
pub fn prefixed(&self, prefix: Cow<'_, BStr>) -> std::io::Result<LooseThenPacked<'_, '_>> {
200+
pub fn prefixed<'a>(&self, prefix: impl Into<Cow<'a, BStr>>) -> std::io::Result<LooseThenPacked<'_, '_>> {
201201
self.store
202-
.iter_prefixed_packed(prefix, self.packed.as_ref().map(|b| &***b))
202+
.iter_prefixed_packed(prefix.into(), self.packed.as_ref().map(|b| &***b))
203203
}
204204
}
205205

@@ -284,8 +284,9 @@ impl<'a> IterInfo<'a> {
284284
.peekable()
285285
}
286286

287-
fn from_prefix(base: &'a Path, prefix: Cow<'a, BStr>, precompose_unicode: bool) -> std::io::Result<Self> {
288-
let prefix_path = gix_path::from_bstring(prefix.as_ref());
287+
fn from_prefix(base: &'a Path, prefix: impl Into<Cow<'a, BStr>>, precompose_unicode: bool) -> std::io::Result<Self> {
288+
let prefix = prefix.into();
289+
let prefix_path = gix_path::from_bstring(prefix.clone().into_owned());
289290
if prefix_path.is_absolute() {
290291
return Err(std::io::Error::new(
291292
std::io::ErrorKind::InvalidInput,
@@ -375,7 +376,7 @@ impl file::Store {
375376
self.iter_from_info(git_dir_info, common_dir_info, packed)
376377
}
377378
Some(namespace) => {
378-
let prefix = namespace.to_owned().into_namespaced_prefix(prefix.as_ref());
379+
let prefix = namespace.to_owned().into_namespaced_prefix(&prefix);
379380
let git_dir_info = IterInfo::from_prefix(self.git_dir(), prefix.clone(), self.precompose_unicode)?;
380381
let common_dir_info = self
381382
.common_dir()

gix-ref/tests/refs/file/store/iter.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ mod with_namespace {
2828
let ns_two = gix_ref::namespace::expand("bar")?;
2929
let namespaced_refs = store
3030
.iter()?
31-
.prefixed(ns_two.as_bstr().into())?
31+
.prefixed(ns_two.as_bstr())?
3232
.map(Result::unwrap)
3333
.map(|r: gix_ref::Reference| r.name)
3434
.collect::<Vec<_>>();
@@ -47,7 +47,7 @@ mod with_namespace {
4747
);
4848
assert_eq!(
4949
store
50-
.loose_iter_prefixed(ns_two.as_bstr().into())?
50+
.loose_iter_prefixed(ns_two.as_bstr())?
5151
.map(Result::unwrap)
5252
.map(|r| r.name.into_inner())
5353
.collect::<Vec<_>>(),
@@ -61,7 +61,7 @@ mod with_namespace {
6161
packed
6262
.as_ref()
6363
.expect("present")
64-
.iter_prefixed(ns_two.as_bstr().into())?
64+
.iter_prefixed(ns_two.as_bstr().to_owned())?
6565
.map(Result::unwrap)
6666
.map(|r| r.name.to_owned().into_inner())
6767
.collect::<Vec<_>>(),
@@ -92,7 +92,7 @@ mod with_namespace {
9292
assert_eq!(
9393
store
9494
.iter()?
95-
.prefixed(ns_one.as_bstr().into())?
95+
.prefixed(ns_one.as_bstr())?
9696
.map(Result::unwrap)
9797
.map(|r: gix_ref::Reference| (
9898
r.name.as_bstr().to_owned(),
@@ -339,7 +339,7 @@ fn loose_iter_with_prefix() -> crate::Result {
339339
let store = store()?;
340340

341341
let actual = store
342-
.loose_iter_prefixed(b"refs/heads/".as_bstr().into())?
342+
.loose_iter_prefixed(b"refs/heads/".as_bstr())?
343343
.collect::<Result<Vec<_>, _>>()
344344
.expect("no broken ref in this subset")
345345
.into_iter()
@@ -369,7 +369,7 @@ fn loose_iter_with_partial_prefix_dir() -> crate::Result {
369369
let store = store()?;
370370

371371
let actual = store
372-
.loose_iter_prefixed(b"refs/heads".as_bstr().into())?
372+
.loose_iter_prefixed(b"refs/heads".as_bstr())?
373373
.collect::<Result<Vec<_>, _>>()
374374
.expect("no broken ref in this subset")
375375
.into_iter()
@@ -398,7 +398,7 @@ fn loose_iter_with_partial_prefix() -> crate::Result {
398398
let store = store()?;
399399

400400
let actual = store
401-
.loose_iter_prefixed(b"refs/heads/d".as_bstr().into())?
401+
.loose_iter_prefixed(b"refs/heads/d".as_bstr())?
402402
.collect::<Result<Vec<_>, _>>()
403403
.expect("no broken ref in this subset")
404404
.into_iter()
@@ -556,7 +556,7 @@ fn overlay_prefixed_iter() -> crate::Result {
556556
let store = store_at("make_packed_ref_repository_for_overlay.sh")?;
557557
let ref_names = store
558558
.iter()?
559-
.prefixed(b"refs/heads/".as_bstr().into())?
559+
.prefixed(b"refs/heads/".as_bstr())?
560560
.map(|r| r.map(|r| (r.name.as_bstr().to_owned(), r.target)))
561561
.collect::<Result<Vec<_>, _>>()?;
562562
let c1 = hex_to_id("134385f6d781b7e97062102c6a483440bfda2a03");
@@ -579,7 +579,7 @@ fn overlay_partial_prefix_iter() -> crate::Result {
579579
let store = store_at("make_packed_ref_repository_for_overlay.sh")?;
580580
let ref_names = store
581581
.iter()?
582-
.prefixed(b"refs/heads/m".as_bstr().into())? // 'm' is partial
582+
.prefixed(b"refs/heads/m".as_bstr())? // 'm' is partial
583583
.map(|r| r.map(|r| (r.name.as_bstr().to_owned(), r.target)))
584584
.collect::<Result<Vec<_>, _>>()?;
585585
let c1 = hex_to_id("134385f6d781b7e97062102c6a483440bfda2a03");
@@ -597,7 +597,7 @@ fn overlay_partial_prefix_iter_reproduce_1934() -> crate::Result {
597597

598598
let ref_names = store
599599
.iter()?
600-
.prefixed(b"refs/d".as_bstr().into())?
600+
.prefixed(b"refs/d".as_bstr())?
601601
.map(|r| r.map(|r| (r.name.as_bstr().to_owned(), r.target)))
602602
.collect::<Result<Vec<_>, _>>()?;
603603
// Should not match `refs/heads/d1`.
@@ -615,7 +615,7 @@ fn overlay_partial_prefix_iter_when_prefix_is_dir() -> crate::Result {
615615

616616
let ref_names = store
617617
.iter()?
618-
.prefixed(b"refs/prefix/feature".as_bstr().into())?
618+
.prefixed(b"refs/prefix/feature".as_bstr())?
619619
.map(|r| r.map(|r| (r.name.as_bstr().to_owned(), r.target)))
620620
.collect::<Result<Vec<_>, _>>()?;
621621
assert_eq!(
@@ -628,7 +628,7 @@ fn overlay_partial_prefix_iter_when_prefix_is_dir() -> crate::Result {
628628

629629
let ref_names = store
630630
.iter()?
631-
.prefixed(b"refs/prefix/feature/".as_bstr().into())?
631+
.prefixed(b"refs/prefix/feature/".as_bstr())?
632632
.map(|r| r.map(|r| (r.name.as_bstr().to_owned(), r.target)))
633633
.collect::<Result<Vec<_>, _>>()?;
634634
assert_eq!(

gix-ref/tests/refs/file/worktree.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ mod writable {
291291
assert_eq!(
292292
store
293293
.iter()?
294-
.prefixed(b"refs/stacks/".as_bstr().into())?
294+
.prefixed(b"refs/stacks/".as_bstr())?
295295
.map(Result::unwrap)
296296
.map(|r| (r.name.to_string(), r.target.to_string()))
297297
.collect::<Vec<_>>(),
@@ -572,7 +572,7 @@ mod writable {
572572
assert_eq!(
573573
store
574574
.iter()?
575-
.prefixed(b"refs/stacks/".as_bstr().into())?
575+
.prefixed(b"refs/stacks/".as_bstr())?
576576
.map(Result::unwrap)
577577
.map(|r| (r.name.to_string(), r.target.to_string()))
578578
.collect::<Vec<_>>(),

gix/src/open/repository.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ impl ThreadSafeRepository {
349349
.and_then(|prefix| {
350350
let _span = gix_trace::detail!("find replacement objects");
351351
let platform = refs.iter().ok()?;
352-
let iter = platform.prefixed(prefix.clone().into()).ok()?;
352+
let iter = platform.prefixed(&prefix).ok()?;
353353
let replacements = iter
354354
.filter_map(Result::ok)
355355
.filter_map(|r: gix_ref::Reference| {

gix/src/reference/iter.rs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,30 +48,24 @@ impl Platform<'_> {
4848
/// These are of the form `refs/heads/` or `refs/remotes/origin`, and must not contain relative paths components like `.` or `..`.
4949
// TODO: Create a custom `Path` type that enforces the requirements of git naturally, this type is surprising possibly on windows
5050
// and when not using a trailing '/' to signal directories.
51-
pub fn prefixed(&self, prefix: Cow<'_, BStr>) -> Result<Iter<'_>, init::Error> {
52-
Ok(Iter::new(self.repo, self.platform.prefixed(prefix)?))
51+
pub fn prefixed<'a>(&self, prefix: impl Into<Cow<'a, BStr>>) -> Result<Iter<'_>, init::Error> {
52+
Ok(Iter::new(self.repo, self.platform.prefixed(prefix.into())?))
5353
}
5454

5555
// TODO: tests
5656
/// Return an iterator over all references that are tags.
5757
///
5858
/// They are all prefixed with `refs/tags`.
5959
pub fn tags(&self) -> Result<Iter<'_>, init::Error> {
60-
Ok(Iter::new(
61-
self.repo,
62-
self.platform.prefixed(b"refs/tags/".as_bstr().into())?,
63-
))
60+
Ok(Iter::new(self.repo, self.platform.prefixed(b"refs/tags/".as_bstr())?))
6461
}
6562

6663
// TODO: tests
6764
/// Return an iterator over all local branches.
6865
///
6966
/// They are all prefixed with `refs/heads`.
7067
pub fn local_branches(&self) -> Result<Iter<'_>, init::Error> {
71-
Ok(Iter::new(
72-
self.repo,
73-
self.platform.prefixed(b"refs/heads/".as_bstr().into())?,
74-
))
68+
Ok(Iter::new(self.repo, self.platform.prefixed(b"refs/heads/".as_bstr())?))
7569
}
7670

7771
// TODO: tests
@@ -81,7 +75,7 @@ impl Platform<'_> {
8175
pub fn remote_branches(&self) -> Result<Iter<'_>, init::Error> {
8276
Ok(Iter::new(
8377
self.repo,
84-
self.platform.prefixed(b"refs/remotes/".as_bstr().into())?,
78+
self.platform.prefixed(b"refs/remotes/".as_bstr())?,
8579
))
8680
}
8781
}

gix/tests/gix/repository/reference.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ mod set_namespace {
4848

4949
assert_eq!(
5050
repo.references()?
51-
.prefixed(b"refs/tags/".as_bstr().into())?
51+
.prefixed(b"refs/tags/".as_bstr())?
5252
.filter_map(Result::ok)
5353
.map(|r| r.name().as_bstr().to_owned())
5454
.collect::<Vec<_>>(),
@@ -125,7 +125,7 @@ mod iter_references {
125125
let repo = repo()?;
126126
assert_eq!(
127127
repo.references()?
128-
.prefixed(b"refs/heads/".as_bstr().into())?
128+
.prefixed(b"refs/heads/".as_bstr())?
129129
.filter_map(Result::ok)
130130
.map(|r| (
131131
r.name().as_bstr().to_string(),
@@ -156,7 +156,7 @@ mod iter_references {
156156
let repo = repo()?;
157157
assert_eq!(
158158
repo.references()?
159-
.prefixed(b"refs/heads/".as_bstr().into())?
159+
.prefixed(b"refs/heads/".as_bstr())?
160160
.peeled()?
161161
.filter_map(Result::ok)
162162
.map(|r| (

0 commit comments

Comments
 (0)