@@ -28,7 +28,7 @@ impl GeoIpLookup {
2828 P : AsRef < Path > ,
2929 {
3030 #[ cfg( feature = "mmap" ) ]
31- let reader = maxminddb:: Reader :: open_mmap ( path) ?;
31+ let reader = unsafe { maxminddb:: Reader :: open_mmap ( path) ? } ;
3232 #[ cfg( not( feature = "mmap" ) ) ]
3333 let reader = maxminddb:: Reader :: open_readfile ( path) ?;
3434 Ok ( GeoIpLookup ( Some ( Arc :: new ( reader) ) ) )
@@ -45,37 +45,22 @@ impl GeoIpLookup {
4545 return Ok ( None ) ;
4646 } ;
4747
48- let city: maxminddb:: geoip2:: City = match reader. lookup ( ip_address) {
49- Ok ( Some ( x) ) => x,
50- Ok ( None ) => return Ok ( None ) ,
51- Err ( e) => return Err ( e) ,
48+ let Some ( city) = reader
49+ . lookup ( ip_address) ?
50+ . decode :: < maxminddb:: geoip2:: City > ( ) ?
51+ else {
52+ return Ok ( None ) ;
5253 } ;
5354
5455 Ok ( Some ( Geo {
55- country_code : Annotated :: from (
56- city. country
57- . as_ref ( )
58- . and_then ( |country| Some ( country. iso_code . as_ref ( ) ?. to_string ( ) ) ) ,
59- ) ,
60- city : Annotated :: from (
61- city. city
62- . as_ref ( )
63- . and_then ( |city| Some ( city. names . as_ref ( ) ?. get ( "en" ) ?. to_string ( ) ) ) ,
64- ) ,
65- subdivision : Annotated :: from ( city. subdivisions . as_ref ( ) . and_then ( |subdivisions| {
66- subdivisions. first ( ) . and_then ( |subdivision| {
67- subdivision. names . as_ref ( ) . and_then ( |subdivision_names| {
68- subdivision_names
69- . get ( "en" )
70- . map ( |subdivision_name| subdivision_name. to_string ( ) )
71- } )
72- } )
73- } ) ) ,
74- region : Annotated :: from (
75- city. country
76- . as_ref ( )
77- . and_then ( |country| Some ( country. names . as_ref ( ) ?. get ( "en" ) ?. to_string ( ) ) ) ,
56+ country_code : Annotated :: from ( city. country . iso_code . map ( String :: from) ) ,
57+ city : Annotated :: from ( city. city . names . english . map ( String :: from) ) ,
58+ subdivision : Annotated :: from (
59+ city. subdivisions
60+ . first ( )
61+ . and_then ( |subdivision| subdivision. names . english . map ( String :: from) ) ,
7862 ) ,
63+ region : Annotated :: from ( city. country . names . english . map ( String :: from) ) ,
7964 ..Default :: default ( )
8065 } ) )
8166 }
0 commit comments