# 自定义指令
`Async-graphql`可以很方便的自定义指令,这可以扩展GraphQL的行为。
创建一个自定义指令,需要实现 `CustomDirective` trait,然后用`Directive`宏生成一个工厂函数,该函数接收指令的参数并返回指令的实例。
目前`Async-graphql`仅支持添加`FIELD`位置的指令。
```rust
# extern crate async_graphql;
# use async_graphql::*;
struct ConcatDirective {
value: String,
}
#[async_trait::async_trait]
impl CustomDirective for ConcatDirective {
async fn resolve_field(&self, _ctx: &Context<'_>, resolve: ResolveFut<'_>) -> ServerResult