@@ -18,8 +18,7 @@ struct Crate {
18
18
#[ serde( rename = "updated_at" ) ]
19
19
updated : String ,
20
20
downloads : u64 ,
21
- #[ serde( default ) ]
22
- description : String ,
21
+ description : Option < String > ,
23
22
documentation : Option < String > ,
24
23
}
25
24
@@ -29,13 +28,16 @@ fn get_crate(args: &Args) -> Result<Option<Crate>, Error> {
29
28
. get ( "query" )
30
29
. ok_or ( "Unable to retrieve param: query" ) ?;
31
30
32
- info ! ( "searching for crate `{}`" , query) ;
31
+ let mut query_iter = query. splitn ( 2 , "::" ) ;
32
+ let crate_name = query_iter. next ( ) . unwrap ( ) ;
33
+
34
+ info ! ( "searching for crate `{}`" , crate_name) ;
33
35
34
36
let crate_list = args
35
37
. http
36
38
. get ( "https://crates.io/api/v1/crates" )
37
39
. header ( header:: USER_AGENT , USER_AGENT )
38
- . query ( & [ ( "q" , query ) ] )
40
+ . query ( & [ ( "q" , crate_name ) ] )
39
41
. send ( ) ?
40
42
. json :: < Crates > ( ) ?;
41
43
@@ -48,7 +50,7 @@ pub fn search(args: Args) -> Result<(), Error> {
48
50
m. embed ( |e| {
49
51
e. title ( & krate. name )
50
52
. url ( format ! ( "https://crates.io/crates/{}" , krate. id) )
51
- . description ( & krate. description )
53
+ . description ( krate. description . unwrap_or_default ( ) )
52
54
. field ( "version" , & krate. version , true )
53
55
. field ( "downloads" , & krate. downloads , true )
54
56
. timestamp ( krate. updated . as_str ( ) )
0 commit comments