4 个版本

0.2.0 2019年2月6日
0.1.2 2019年1月28日
0.1.1 2019年1月28日
0.1.0 2019年1月28日

#1961编码

MIT 许可证

8KB
65

涂鸦

待定


lib.rs:

涂鸦

《涂鸦》库提供了一种让数据结构按照 OpenAPI 规范 进行自我文档化的方法

实现了 Schema 特性的类型可以使用可用的方法来自我文档化。有关更多信息,请参阅 Schema 特性

该包还重新导出 doodle_derive,它提供了一个 derive Schema,该 derive 实现了序列化数据结构所需的方法

使用示例

Cargo.toml:

[dependencies]
serde_json = "1.0.0"
doodle = { version = "0.1.1", features = ["derive"] }
use doodle::*;
use serde_json::json;

#[derive(Schema)]
struct Woods {
    pub id: i32,
    pub epic: Vec<Vec<Tale>>,
}

#[derive(Schema)]
struct Tale {
    pub value: Option<String>,
}

// Initialize an empty dict
let mut schema = json! {{}};
let map = schema.as_object_mut().unwrap();

// Append our schemas
Woods::append_to_schema(map);
Tale::append_to_schema(map);

// print the output
let output = serde_json::to_string_pretty(&schema).unwrap();
println!("Schema:\n\n{}", output);


////////////////////// Test the example //////////////////////


let expected = json! {{
"Tale": {                                         
  "properties": {                                 
    "value": {                                    
      "type": "string",                            
      "nullable": true
    }                                             
  },                                              
  "type": "object"                                
},                                                
"Woods": {                                        
  "properties": {                                 
    "epic": {                                     
      "items": {                                  
        "items": {                                
          "$ref": "#/components/schemas/Tale"     
        },                                        
        "type": "array"                           
      },                                          
      "type": "array"                             
    },                                            
    "id": {                                       
      "type": "number"                            
    }                                             
  },                                              
  "type": "object"                                
}                                                 
}};

assert_eq!(expected, schema);

依赖项

~355–770KB
~17K SLoC