@@ -159,7 +159,7 @@ impl crate::Repository {
159159        Ok ( match  head. inner . target  { 
160160            Target :: Symbolic ( branch)  => match  self . find_reference ( & branch)  { 
161161                Ok ( r)  => crate :: head:: Kind :: Symbolic ( r. detach ( ) ) , 
162-                 Err ( reference:: find:: existing:: Error :: NotFound )  => crate :: head:: Kind :: Unborn ( branch) , 
162+                 Err ( reference:: find:: existing:: Error :: NotFound   {  ..  } )  => crate :: head:: Kind :: Unborn ( branch) , 
163163                Err ( err)  => return  Err ( err) , 
164164            } , 
165165            Target :: Object ( target)  => crate :: head:: Kind :: Detached  { 
@@ -222,11 +222,19 @@ impl crate::Repository {
222222     /// without that being considered an error. 
223223     pub  fn  find_reference < ' a ,  Name ,  E > ( & self ,  name :  Name )  -> Result < Reference < ' _ > ,  reference:: find:: existing:: Error > 
224224    where 
225-         Name :  TryInto < & ' a  PartialNameRef ,  Error  = E > , 
225+         Name :  TryInto < & ' a  PartialNameRef ,  Error  = E >  +  Clone , 
226226        gix_ref:: file:: find:: Error :  From < E > , 
227227    { 
228+         // TODO: is there a way to just pass `partial_name` to `try_find_reference()`? Compiler freaks out then 
229+         //       as it still wants to see `E` there, not `Infallible`. 
230+         let  partial_name = name
231+             . clone ( ) 
232+             . try_into ( ) 
233+             . map_err ( |err| reference:: find:: Error :: Find ( gix_ref:: file:: find:: Error :: from ( err) ) ) ?; 
228234        self . try_find_reference ( name) ?
229-             . ok_or ( reference:: find:: existing:: Error :: NotFound ) 
235+             . ok_or_else ( || reference:: find:: existing:: Error :: NotFound  { 
236+                 name :  partial_name. to_owned ( ) , 
237+             } ) 
230238    } 
231239
232240    /// Return a platform for iterating references. 
@@ -249,8 +257,7 @@ impl crate::Repository {
249257        Name :  TryInto < & ' a  PartialNameRef ,  Error  = E > , 
250258        gix_ref:: file:: find:: Error :  From < E > , 
251259    { 
252-         let  state = self ; 
253-         match  state. refs . try_find ( name)  { 
260+         match  self . refs . try_find ( name)  { 
254261            Ok ( r)  => match  r { 
255262                Some ( r)  => Ok ( Some ( Reference :: from_ref ( r,  self ) ) ) , 
256263                None  => Ok ( None ) , 
0 commit comments