# Separate macro for inserting fields in struct in the standard lib

**URL:** https://discourse.julialang.org/t/separate-macro-for-inserting-fields-in-struct-in-the-standard-lib/59090
**Category:** General Usage
**Tags:** macros
**Created:** [April 12, 2021, 10:43am UTC](https://discourse.julialang.org/t/separate-macro-for-inserting-fields-in-struct-in-the-standard-lib/59090 "2021-04-12T10:43:19Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Sunny](https://avatars.discourse-cdn.com/v4/letter/s/7c8e57/32.png) [@Sunny](https://discourse.julialang.org/u/Sunny)
#### Post date: [April 12, 2021, 10:43am UTC](https://discourse.julialang.org/t/separate-macro-for-inserting-fields-in-struct-in-the-standard-lib/59090/1 "2021-04-12T10:43:19Z")

</div>

Is there a def macro analogue in julia?

```julia
# Macro for inserting fields 
macro def(name, definition) 
  return quote
      macro $(esc(name))()
          esc($(Expr(:quote, definition)))
      end
  end
end

@def my_fields begin
     weights
     input_dim
     output_dim
end

mutable struct MyStruct
    @my_fields
end

```

---

<div class="post-metadata">

### Author: ![marius311](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marius311/32/3953_2.png) [@marius311](https://discourse.julialang.org/u/marius311)
#### Post date: [April 12, 2021, 8:40pm UTC](https://discourse.julialang.org/t/separate-macro-for-inserting-fields-in-struct-in-the-standard-lib/59090/2 "2021-04-12T20:40:06Z")

</div>

You could use [CompositeStructs.jl](https://discourse.julialang.org/t/ann-compositestructs-jl/58902):

```julia
using CompositeStructs

struct MyFields
    weights
    input_dim
    output_dim
end

@composite mutable struct MyStruct
    MyFields...
end

```

In this case `MyFields` is also a struct, if you want to make sure no one can make an instance of `MyFields` and it serves only as a list of fields, you could also add an inner constructor `MyFields() = error()`.
