@@ -109,8 +109,8 @@ pub type BinaryCb<'a> = dyn FnMut(DiffDelta<'_>, DiffBinary<'_>) -> bool + 'a;
109
109
pub type HunkCb < ' a > = dyn FnMut ( DiffDelta < ' _ > , DiffHunk < ' _ > ) -> bool + ' a ;
110
110
pub type LineCb < ' a > = dyn FnMut ( DiffDelta < ' _ > , Option < DiffHunk < ' _ > > , DiffLine < ' _ > ) -> bool + ' a ;
111
111
112
- struct ForeachCallbacks < ' a , ' b , ' c , ' d , ' e , ' f , ' g , ' h > {
113
- file : & ' a mut FileCb < ' b > ,
112
+ struct DiffCallbacks < ' a , ' b , ' c , ' d , ' e , ' f , ' g , ' h > {
113
+ file : Option < & ' a mut FileCb < ' b > > ,
114
114
binary : Option < & ' c mut BinaryCb < ' d > > ,
115
115
hunk : Option < & ' e mut HunkCb < ' f > > ,
116
116
line : Option < & ' g mut LineCb < ' h > > ,
@@ -182,8 +182,8 @@ impl<'repo> Diff<'repo> {
182
182
hunk_cb : Option < & mut HunkCb < ' _ > > ,
183
183
line_cb : Option < & mut LineCb < ' _ > > ,
184
184
) -> Result < ( ) , Error > {
185
- let mut cbs = ForeachCallbacks {
186
- file : file_cb,
185
+ let mut cbs = DiffCallbacks {
186
+ file : Some ( file_cb) ,
187
187
binary : binary_cb,
188
188
hunk : hunk_cb,
189
189
line : line_cb,
@@ -276,8 +276,11 @@ extern "C" fn file_cb_c(
276
276
let delta = Binding :: from_raw ( delta as * mut _ ) ;
277
277
278
278
let r = panic:: wrap ( || {
279
- let cbs = data as * mut ForeachCallbacks < ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ > ;
280
- ( ( * cbs) . file ) ( delta, progress)
279
+ let cbs = data as * mut DiffCallbacks < ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ > ;
280
+ match ( * cbs) . file {
281
+ Some ( ref mut cb) => cb ( delta, progress) ,
282
+ None => false ,
283
+ }
281
284
} ) ;
282
285
if r == Some ( true ) {
283
286
0
@@ -297,7 +300,7 @@ extern "C" fn binary_cb_c(
297
300
let binary = Binding :: from_raw ( binary) ;
298
301
299
302
let r = panic:: wrap ( || {
300
- let cbs = data as * mut ForeachCallbacks < ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ > ;
303
+ let cbs = data as * mut DiffCallbacks < ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ > ;
301
304
match ( * cbs) . binary {
302
305
Some ( ref mut cb) => cb ( delta, binary) ,
303
306
None => false ,
@@ -321,7 +324,7 @@ extern "C" fn hunk_cb_c(
321
324
let hunk = Binding :: from_raw ( hunk) ;
322
325
323
326
let r = panic:: wrap ( || {
324
- let cbs = data as * mut ForeachCallbacks < ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ > ;
327
+ let cbs = data as * mut DiffCallbacks < ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ > ;
325
328
match ( * cbs) . hunk {
326
329
Some ( ref mut cb) => cb ( delta, hunk) ,
327
330
None => false ,
@@ -347,7 +350,7 @@ extern "C" fn line_cb_c(
347
350
let line = Binding :: from_raw ( line) ;
348
351
349
352
let r = panic:: wrap ( || {
350
- let cbs = data as * mut ForeachCallbacks < ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ > ;
353
+ let cbs = data as * mut DiffCallbacks < ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ , ' _ > ;
351
354
match ( * cbs) . line {
352
355
Some ( ref mut cb) => cb ( delta, hunk, line) ,
353
356
None => false ,
0 commit comments