<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mingling.git/mingling_macros/src/func, branch main</title>
<subtitle>用于开发多子命令的命令行框架
</subtitle>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/'/>
<entry>
<title>feat(any): make `Grouped` trait unsafe and encapsulate `AnyOutput`</title>
<updated>2026-07-21T11:16:31+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-21T11:16:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=1803dd427416ef19918c0ec7d50093b6d45f29af'/>
<id>1803dd427416ef19918c0ec7d50093b6d45f29af</id>
<content type='text'>
fields

Declare `Grouped` as `unsafe trait` to make its soundness invariant
visible.
Make `AnyOutput.type_id` and `member_id` private; add public accessors
and
the `unsafe fn new_bare` constructor.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
fields

Declare `Grouped` as `unsafe trait` to make its soundness invariant
visible.
Make `AnyOutput.type_id` and `member_id` private; add public accessors
and
the `unsafe fn new_bare` constructor.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(core): add generic parameter `C` to `StructuralData` trait</title>
<updated>2026-07-20T21:49:00+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-20T21:49:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=700c049f64b66f424cda5da3021dfce4462655ca'/>
<id>700c049f64b66f424cda5da3021dfce4462655ca</id>
<content type='text'>
Make `StructuralData` and `StructuralDataSealed` generic over a program
collector type to bypass the orphan rule for `group_structural!`. This
enables external types to implement `StructuralData&lt;crate::ThisProgram&gt;`
without violating coherence.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make `StructuralData` and `StructuralDataSealed` generic over a program
collector type to bypass the orphan rule for `group_structural!`. This
enables external types to implement `StructuralData&lt;crate::ThisProgram&gt;`
without violating coherence.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(core, macros): add r_append! macro and RenderResult::append_other</title>
<updated>2026-07-20T20:26:10+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-20T20:26:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=2683d7c6c3c88355fd3188ac2b2c68338ae2d205'/>
<id>2683d7c6c3c88355fd3188ac2b2c68338ae2d205</id>
<content type='text'>
Implement `RenderResult::append_other()` to merge buffered content and
immediate output behavior from one result into another. Add the
`r_append!` macro with both explicit buffer (`dst, src`) and implicit
buffer (`src`) usage forms, re-exported from `mingling::prelude`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Implement `RenderResult::append_other()` to merge buffered content and
immediate output behavior from one result into another. Add the
`r_append!` macro with both explicit buffer (`dst, src`) and implicit
buffer (`src`) usage forms, re-exported from `mingling::prelude`.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(core)!: replace RenderResult with buffered output model</title>
<updated>2026-07-20T19:46:06+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-20T19:46:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=c81485b6ae1ba80d658ad8e4482d384303b539ef'/>
<id>c81485b6ae1ba80d658ad8e4482d384303b539ef</id>
<content type='text'>
Remove `Deref&lt;Target=str&gt;` and `render_text:String` in favor of
`render_buffer:Vec&lt;(String, RenderResultMode)&gt;` and an
`immediate_output`
flag. Add `RenderResultMode` enum, `r_eprint!`/`r_eprintln!` macros, and
new buffer manipulation methods (`append_to_buffer`, `eprint`, etc.).
Update `Display` to trim output and remove trailing newline. Migrate all
callers and tests away from `Deref` usage.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove `Deref&lt;Target=str&gt;` and `render_text:String` in favor of
`render_buffer:Vec&lt;(String, RenderResultMode)&gt;` and an
`immediate_output`
flag. Add `RenderResultMode` enum, `r_eprint!`/`r_eprintln!` macros, and
new buffer manipulation methods (`append_to_buffer`, `eprint`, etc.).
Update `Display` to trim output and remove trailing newline. Migrate all
callers and tests away from `Deref` usage.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix: conditionally compile pathf_hint based on "pathf" feature</title>
<updated>2026-07-20T06:58:50+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-20T06:58:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=33da7c8cb4f24caeef4e8127bc484bc9d236a0f3'/>
<id>33da7c8cb4f24caeef4e8127bc484bc9d236a0f3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(macros): add compile_error hint when pathf map is missing</title>
<updated>2026-07-20T06:01:47+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-20T06:01:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=de3156d0b054fc6e459e526d92df4d06ce6e6770'/>
<id>de3156d0b054fc6e459e526d92df4d06ce6e6770</id>
<content type='text'>
Use Option for load_pathf_map return type and emit a descriptive
compile_error when the type mapping file cannot be loaded, guiding users
to set up build.rs correctly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use Option for load_pathf_map return type and emit a descriptive
compile_error when the type mapping file cannot be loaded, guiding users
to set up build.rs correctly
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(macros): add `#[buffer]` attribute and re-export `r_print!(ln)`</title>
<updated>2026-07-20T00:42:16+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-20T00:42:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=7b3a1d7fd9f60b91a7f9602374c081882d46facc'/>
<id>7b3a1d7fd9f60b91a7f9602374c081882d46facc</id>
<content type='text'>
macros

Reintroduce `r_print!` and `r_println!` macros as public exports, now
supporting both explicit buffer argument and implicit `#[buffer]` attr.
Add `#[buffer]` attribute macro that wraps unit-returning functions to
produce a `RenderResult` with an automatically injected buffer variable.
Relax `RenderResult::print()` and `println()` to accept `impl
AsRef&lt;str&gt;`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
macros

Reintroduce `r_print!` and `r_println!` macros as public exports, now
supporting both explicit buffer argument and implicit `#[buffer]` attr.
Add `#[buffer]` attribute macro that wraps unit-returning functions to
produce a `RenderResult` with an automatically injected buffer variable.
Relax `RenderResult::print()` and `println()` to accept `impl
AsRef&lt;str&gt;`.
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(core)!: remove `to_chain` and `to_render` from `Grouped` trait</title>
<updated>2026-07-19T20:57:57+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-19T20:57:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=34c4c66c1d336469e71fad8cff4828cf5d2bdafb'/>
<id>34c4c66c1d336469e71fad8cff4828cf5d2bdafb</id>
<content type='text'>
Move routing methods exclusively to the `Routable` trait and update
all macro-generated code to reference `Routable` instead of `Grouped`
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Move routing methods exclusively to the `Routable` trait and update
all macro-generated code to reference `Routable` instead of `Grouped`
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(dispatcher): qualify to_chain call with Routable trait</title>
<updated>2026-07-19T17:21:39+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-19T17:21:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=92d721ac86c707951d984510ceeafa54255c2880'/>
<id>92d721ac86c707951d984510ceeafa54255c2880</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>chore(macros): reorganize module hierarchy in mingling_macros</title>
<updated>2026-07-19T17:01:27+00:00</updated>
<author>
<name>魏曹先生</name>
<email>1992414357@qq.com</email>
</author>
<published>2026-07-19T16:59:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.catilgrass.cn/catilgrass/mingling.git/commit/?id=1f583f625a7d541dc7d47a8136b31d29a5ed5441'/>
<id>1f583f625a7d541dc7d47a8136b31d29a5ed5441</id>
<content type='text'>
Restructure flat module layout into logical directories (attr/, derive/,
func/, systems/, extensions/, utils.rs). Tighten internal function
visibility to pub(crate). All public API signatures remain unchanged.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Restructure flat module layout into logical directories (attr/, derive/,
func/, systems/, extensions/, utils.rs). Tighten internal function
visibility to pub(crate). All public API signatures remain unchanged.
</pre>
</div>
</content>
</entry>
</feed>
