@@ -38,9 +38,12 @@ func EncodeUser(in User) (out api.User) {
3838
3939## Features
4040
41- - ** Struct, Union, and Enum conversions**
42- Automatically matches fields, implementations, and members by name.
43-
41+ - ** Code generation for automatic type conversions**
42+ Convgen generates conversion code at compile time, so there's no runtime
43+ reflection overhead. It supports conversions between structs, unions
44+ (interfaces with multiple implementations), and enums (const groups),
45+ automatically matching fields, implementations, and members by name.
46+
4447 ``` go
4548 convgen.Struct [User, api.User ] // func(User) api.User
4649 convgen.StructErr [User, api.User ] // func(User) (api.User, error)
@@ -50,8 +53,8 @@ func EncodeUser(in User) (out api.User) {
5053 convgen.EnumErr [Status, api.Status ] // func(Status) (api.Status, error)
5154 ```
5255
53- - ** Type-safe configuration**
54- All options are validated at compile time — no reflection, tags, string , or
56+ - ** Type-safe configuration that survives refactoring **
57+ All options are validated at compile time — no struct tags, strings , or
5558 comment-based directives.
5659
5760 ``` go
@@ -62,8 +65,8 @@ func EncodeUser(in User) (out api.User) {
6265 // this directive will be updated accordingly.
6366 convgen.Match (User{}.Name , api.User {}.Username )
6467 ```
65-
66- - ** Detailed diagnostics**
68+
69+ - ** Batched diagnostics instead of one-error-at-a-time **
6770 * All* matching and conversion errors in a single pass are reported together,
6871 so you can fix everything at once instead of stopping at the first error. In
6972 addition, Convgen provides [ Lint] ( #lint ) support for real-time feedback during
0 commit comments