That is not the most common view. Inner constructions are the exception, not the rule.
You can just put them in a begin... end block, as suggested by the error message.
Anyway, both these are styling choices, you are not really limited by the functionality. But you can use an inner constructor without the keyword arguments, if you want:
julia> @with_kw struct Pet
name
kind
age
Pet(c::Cat) = new(c.name, typeof(c), c.age)
end
julia> c = Cat("None", "Black", 5, 5.0, "John")
Cat("None", "Black", 5, 5.0, "John")
julia> Pet(c)
Pet
name: String "John"
kind: Cat <: Any
age: Int64 5