62
62
) ]
63
63
#![ deny( unsafe_op_in_unsafe_fn) ]
64
64
65
+ use anyhow:: anyhow;
65
66
use std:: path:: Path ;
66
67
use std:: path:: PathBuf ;
67
68
use std:: result;
@@ -87,10 +88,10 @@ mod test;
87
88
/// Canonical error type for this crate.
88
89
#[ derive( Error , Debug ) ]
89
90
pub enum Error {
90
- #[ error( "Error building BPF object file: {0} " ) ]
91
- Build ( String ) ,
92
- #[ error( "Error generating skeleton: {0} " ) ]
93
- Generate ( String ) ,
91
+ #[ error( "Error building BPF object file" ) ]
92
+ Build ( # [ source ] anyhow :: Error ) ,
93
+ #[ error( "Error generating skeleton" ) ]
94
+ Generate ( # [ source ] anyhow :: Error ) ,
94
95
}
95
96
96
97
pub type Result < T > = result:: Result < T , Error > ;
@@ -223,24 +224,24 @@ impl SkeletonBuilder {
223
224
let source = self
224
225
. source
225
226
. as_ref ( )
226
- . ok_or_else ( || Error :: Build ( "No source file" . into ( ) ) ) ?;
227
+ . ok_or_else ( || Error :: Build ( anyhow ! ( "No source file" ) ) ) ?;
227
228
228
229
let filename = source
229
230
. file_name ( )
230
- . ok_or_else ( || Error :: Build ( "Missing file name" . into ( ) ) ) ?
231
+ . ok_or_else ( || Error :: Build ( anyhow ! ( "Missing file name" ) ) ) ?
231
232
. to_str ( )
232
- . ok_or_else ( || Error :: Build ( "Invalid unicode in file name" . into ( ) ) ) ?;
233
+ . ok_or_else ( || Error :: Build ( anyhow ! ( "Invalid unicode in file name" ) ) ) ?;
233
234
234
235
if !filename. ends_with ( ".bpf.c" ) {
235
- return Err ( Error :: Build ( format ! (
236
+ return Err ( Error :: Build ( anyhow ! (
236
237
"Source file={} does not have .bpf.c suffix" ,
237
238
source. display( )
238
239
) ) ) ;
239
240
}
240
241
241
242
if self . obj . is_none ( ) {
242
243
let name = filename. split ( '.' ) . next ( ) . unwrap ( ) ;
243
- let dir = tempdir ( ) . map_err ( |e| Error :: Build ( e. to_string ( ) ) ) ?;
244
+ let dir = tempdir ( ) . map_err ( |e| Error :: Build ( e. into ( ) ) ) ?;
244
245
let objfile = dir. path ( ) . join ( format ! ( "{name}.o" ) ) ;
245
246
self . obj = Some ( objfile) ;
246
247
// Hold onto tempdir so that it doesn't get deleted early
@@ -256,7 +257,7 @@ impl SkeletonBuilder {
256
257
self . skip_clang_version_check ,
257
258
& self . clang_args ,
258
259
)
259
- . map_err ( |e| Error :: Build ( e . to_string ( ) ) ) ?;
260
+ . map_err ( Error :: Build ) ?;
260
261
261
262
Ok ( ( ) )
262
263
}
@@ -268,15 +269,15 @@ impl SkeletonBuilder {
268
269
let objfile = self
269
270
. obj
270
271
. as_ref ( )
271
- . ok_or_else ( || Error :: Generate ( "No object file" . into ( ) ) ) ?;
272
+ . ok_or_else ( || Error :: Generate ( anyhow ! ( "No object file" ) ) ) ?;
272
273
273
274
gen:: gen_single (
274
275
self . debug ,
275
276
objfile,
276
277
gen:: OutputDest :: File ( output. as_ref ( ) ) ,
277
278
Some ( & self . rustfmt ) ,
278
279
)
279
- . map_err ( |e| Error :: Generate ( e . to_string ( ) ) ) ?;
280
+ . map_err ( Error :: Generate ) ?;
280
281
281
282
Ok ( ( ) )
282
283
}
0 commit comments