https://github.com/hoijui/codify-rs
Automatic Rust code generation for initializing structs and enums
https://github.com/hoijui/codify-rs
library oseg
Last synced: over 1 year ago
JSON representation
Automatic Rust code generation for initializing structs and enums
- Host: GitHub
- URL: https://github.com/hoijui/codify-rs
- Owner: hoijui
- License: agpl-3.0
- Created: 2022-11-25T14:56:24.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-06-02T16:32:52.000Z (about 2 years ago)
- Last Synced: 2025-03-04T09:45:57.727Z (over 1 year ago)
- Topics: library, oseg
- Language: Rust
- Homepage:
- Size: 41 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# codify-rs
[](
LICENSE.txt)
[](
https://api.reuse.software/info/github.com/hoijui/codify-rs)
[](
https://github.com/hoijui/codify-rs)
[](
https://lib.rs/codify_hoijui)
[](
https://crates.io/crates/codify_hoijui)
[](
https://docs.rs/codify_hoijui)
[](
https://deps.rs/repo/github/hoijui/codify-rs)
[](
https://github.com/hoijui/codify-rs/actions)
Helps in automatic code generation at compile-time,
for initializing structs and enums containing data,
which is to be available at runtime.
The practical use case of this,
is to store resources/data in the binary in the most efficient form,
so it will be ready at runtime,
without having to include the data/files
in their original, serialized, potentially innefficient form
into the binary.
This also means, the data does not have to be parsed
at runtime/application-startup.
## Usage
0. Add this library to your normal and build dependencies in cargo:
```toml
[dependencies]
codify = { version = "0.6", package = "codify_hoijui" }
[build-dependencies]
codify = { version = "0.6", package = "codify_hoijui" }
```
1. in your `build.rs`, load some data from resource files
into structs/enums, using serde
2. in your `build.rs`, call `Codify::init_code()` on that data,
creating init code.
3. write that code into a `$OUT_DIR/my_data_x_gen.rs` file
4. Create a proxy source file under `src/` -
for example `src/my_data_x_gen.rs` -
which does nothing more then include the generated file:
`include!(concat!(env!("OUT_DIR"), "/my_data_x_gen.rs"));`
5. load/use `$OUT_DIR/my_data_x.rs` file at compile-time
## Example
For an example usage,
see the [build.rs](
https://github.com/hoijui/osh-dir-std-rs/blob/master/build.rs)
file of [osh-dir-std-rs](
https://github.com/hoijui/osh-dir-std-rs/) project.