Vic/jj change lmqsyzqlxyvv (#19)
* feat(builder-macro): conditional Has<T> impl for builder types
- Macro now generates impl Has<T> for builder only when the corresponding field is Present
- Added integration test to verify Has<T> is only implemented when field is present
- Refactored builder macro to use UpperCamelCase marker types
- All builder macro tests pass and code is formatted
Unlocks type-driven context provision and safer builder usage. Future: extend to more traits and ergonomic context composition. ��
* refactor(builder-macro): move Absent/Present marker types to builder_types crate
- Created builder_types crate to host Absent and Present marker types
- Macro now generates code referencing builder_types::Absent and builder_types::Present
- Updated integration and test code to import marker types from builder_types
- Ensures proc-macro crate does not export non-macro items, following Rust best practices
This enables clean separation of marker types and macro logic, and future extensibility for builder state markers. 🧩
* refactor: migrate Put trait to type-parameter output form 🦀
- Refactored all Put trait usages to use type parameters (Put<T, U>) instead of associated type.
- Updated builder and lens macros to generate new Put impls.
- Updated all manual Put impls and trait bounds in core and tests.
- Fixed logic in manual Put impls to properly update struct fields.
- Ensured all tests are green and code is formatted.
- This unlocks more flexible type-changing builder and lens operations, and simplifies trait bounds throughout the system.
authored by
oeiuwq.com
and committed by