aboutsummaryrefslogtreecommitdiff
path: root/docs/example-pages/examples.json
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-08-04 13:26:48 +0800
committer魏曹先生 <1992414357@qq.com>2026-08-04 13:26:48 +0800
commit4588e17f7ddacd8391a5c881a209735e08d48797 (patch)
tree2b513f4d4f8a18ebd3a34cff7c0fb8abf5787321 /docs/example-pages/examples.json
parentf7862affd74ac3b129f9e9791a4cd4e1c7e3e6d1 (diff)
feat: add entry metadata system with compile-time typed values
Add `Metadata<B>` trait and `#[metadata(Entry)]` attribute macro to attach arbitrary, compile-time-typed metadata to entries. Implement `ProgramCollect::get_metadata<T>()` for runtime retrieval, backed by a global registry populated by `register_metadata!`. Extend `pathf` with `MetadataPattern` to resolve metadata types across modules at build time. Add two examples demonstrating metadata usage with and without pathf integration.
Diffstat (limited to 'docs/example-pages/examples.json')
-rw-r--r--docs/example-pages/examples.json34
1 files changed, 34 insertions, 0 deletions
diff --git a/docs/example-pages/examples.json b/docs/example-pages/examples.json
index bde9d35..31336f1 100644
--- a/docs/example-pages/examples.json
+++ b/docs/example-pages/examples.json
@@ -95,6 +95,24 @@
]
},
{
+ "id": "example-combine-pathf-metadata",
+ "name": "Pathfinder + Metadata",
+ "icon": "🧭",
+ "category": "advanced",
+ "desc": "Combines the `pathf` feature with entry metadata. The metadata `DataType` and the entry `BindType` are defined inside a submodule, and `pathf` resolves them for `gen_program!()` at build time.\n",
+ "tags": [
+ "pathf",
+ "metadata",
+ "build.rs"
+ ],
+ "files": [
+ "src/main.rs",
+ "src/sub/mod.rs",
+ "build.rs",
+ "Cargo.toml"
+ ]
+ },
+ {
"id": "example-command-macro",
"name": "Command Macro",
"icon": "🚀",
@@ -254,6 +272,22 @@
]
},
{
+ "id": "example-metadata",
+ "name": "Entry Metadata",
+ "icon": "🏷️",
+ "category": "advanced",
+ "desc": "Demonstrates attaching arbitrary, compile-time-typed metadata to an entry via `#[metadata(Entry)]` and retrieving it at runtime with `ProgramCollect::get_metadata`. No `pathf` needed here — everything lives in a single module.\n",
+ "tags": [
+ "metadata",
+ "get_metadata",
+ "extras"
+ ],
+ "files": [
+ "src/main.rs",
+ "Cargo.toml"
+ ]
+ },
+ {
"id": "example-outside-type",
"name": "Outside Type",
"icon": "🆕",