Udate docs
This commit is contained in:
parent
b71833b1a4
commit
13f7126a13
|
@ -13,7 +13,6 @@
|
||||||
- [Union](define_union.md)
|
- [Union](define_union.md)
|
||||||
- [InputObject](define_input_object.md)
|
- [InputObject](define_input_object.md)
|
||||||
- [Default value](default_value.md)
|
- [Default value](default_value.md)
|
||||||
- [Two ways to define types](procedural_macros.md)
|
|
||||||
- [Schema](define_schema.md)
|
- [Schema](define_schema.md)
|
||||||
- [Query and Mutation](query_and_mutation.md)
|
- [Query and Mutation](query_and_mutation.md)
|
||||||
- [Subscription](subscription.md)
|
- [Subscription](subscription.md)
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
# Two ways to define types
|
|
||||||
|
|
||||||
I think you have discovered that GraphQL types can be defined using both an attribute macro and a derive.
|
|
||||||
|
|
||||||
The following is the corresponding table:
|
|
||||||
|
|
||||||
|Type|Attribute macro|Derive|
|
|
||||||
|---|-----|----|
|
|
||||||
|Enum|Enum|GQLEnum|
|
|
||||||
|Simple Object|SimpleObject|GQLSimpleObject|
|
|
||||||
|Input Object|InputObject|GQLInputObject|
|
|
||||||
|Interface|Interface|GQLInterface|
|
|
||||||
|Union|Union|GQLUnion|
|
|
||||||
|Merged Object|MergedObject|GQLMergedObject|
|
|
||||||
|Merged Subscription|MergedSubscription|GQLMergedSubscription|
|
|
||||||
|
|
||||||
The advantage of the attribute macro is that you can provide parameters at the same time, for example:
|
|
||||||
|
|
||||||
```rust
|
|
||||||
#[SimpleObject(name = "ABC")]
|
|
||||||
struct MyObject {
|
|
||||||
value: i32,
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**However, attribute macros do not support conditional compilation**. The following does not work:
|
|
||||||
|
|
||||||
```rust
|
|
||||||
#[SimpleObject]
|
|
||||||
struct MyObject {
|
|
||||||
#[cfg(windows)]
|
|
||||||
value: i32,
|
|
||||||
|
|
||||||
#[cfg(not(windows))]
|
|
||||||
value: i32,
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Deriving, on the other hand, does support conditional compilation, but as derive macros can't take parameters you need to provide them separately. For example:
|
|
||||||
|
|
||||||
```rust
|
|
||||||
#[derive(SimpleObject)]
|
|
||||||
#[graphql(name = "ABC")]
|
|
||||||
struct MyObject {
|
|
||||||
value: i32,
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
_Which way you use to define types is up to you, personally I prefer to use derive._
|
|
|
@ -13,7 +13,6 @@
|
||||||
- [联合(Union)](define_union.md)
|
- [联合(Union)](define_union.md)
|
||||||
- [输入对象(InputObject)](define_input_object.md)
|
- [输入对象(InputObject)](define_input_object.md)
|
||||||
- [默认值](default_value.md)
|
- [默认值](default_value.md)
|
||||||
- [定义类型的两种方式](procedural_macros.md)
|
|
||||||
- [定义模式(Schema)](define_schema.md)
|
- [定义模式(Schema)](define_schema.md)
|
||||||
- [查询和变更](query_and_mutation.md)
|
- [查询和变更](query_and_mutation.md)
|
||||||
- [订阅](subscription.md)
|
- [订阅](subscription.md)
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
# 定义类型的两种方式
|
|
||||||
|
|
||||||
我想你已经发现,定义一个GraphqlQL类型可以通过属性宏或者派生。
|
|
||||||
|
|
||||||
下面是一个对应表:
|
|
||||||
|
|
||||||
|类型|属性宏|派生|
|
|
||||||
|---|-----|----|
|
|
||||||
|枚举(Enum)|Enum|GQLEnum|
|
|
||||||
|简单对象(Simple Object)|SimpleObject|GQLSimpleObject|
|
|
||||||
|输入对象(Input Object)|InputObject|GQLInputObject|
|
|
||||||
|接口(Interface)|Interface|GQLInterface|
|
|
||||||
|联合(Union)|Union|GQLUnion|
|
|
||||||
|合并对象(Merged Object)|MergedObject|GQLMergedObject|
|
|
||||||
|合并订阅(Merged Subscription)|MergedSubscription|GQLMergedSubscription|
|
|
||||||
|
|
||||||
属性宏的好处在于你可以同时提供一些参数,例如:
|
|
||||||
|
|
||||||
```rust
|
|
||||||
#[SimpleObject(name = "ABC")]
|
|
||||||
struct MyObject {
|
|
||||||
value: i32,
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
但是它不支持条件编译,例如:
|
|
||||||
|
|
||||||
```rust
|
|
||||||
#[SimpleObject]
|
|
||||||
struct MyObject {
|
|
||||||
#[cfg(windows)]
|
|
||||||
value: i32,
|
|
||||||
|
|
||||||
#[cfg(not(windows))]
|
|
||||||
value: i32,
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
派生可以支持条件编译,但它需要单独提供参数,例如:
|
|
||||||
|
|
||||||
```rust
|
|
||||||
#[derive(SimpleObject)]
|
|
||||||
#[graphql(name = "ABC")]
|
|
||||||
struct MyObject {
|
|
||||||
value: i32,
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
用哪种方式来定义类型取决于你,我更加推荐使用派生。
|
|
Loading…
Reference in New Issue
Block a user