A rust procedural macro crate for generating unique id for the rust types.
It simply implements a trait for the type where is only one method - id() -> TypeId
which returns a unique positive number. For id generation, the procedural macro reads the file called "types.toml" and searches for the type name
there. You may also specify another file name if you want by using UniqueTypeIdFile
attribute. Speaking more detailed:
types.toml
file name as types file name, otherwise uses specified one.Add unique-type-id
as dependency in your Cargo.toml
:
toml
[dependencies]
unique-type-id-derive = "0.2"
unique-type-id = "0.2"
Create a struct or enum and use the trait:
```rust
extern crate uniquetypeidderive; extern crate uniquetype_id;
fn Uniquesimple() { use uniquetype_id::UniqueTypeId; #[derive(UniqueTypeId)] struct Test1; #[derive(UniqueTypeId)] struct Test2;
asserteq!(Test1::id().0, 1u64); asserteq!(Test2::id().0, 2u64); } ```
This will generate a types file if it has not been created yet and put there ids, starting with 0, for each type which was not found there. This is how it looks when you have predefined set of ids for your types:
```rust
fn Uniquedifferentfile() { use uniquetypeid::UniqueTypeId; #[derive(UniqueTypeId)] #[UniqueTypeIdFile = "types2.toml"] struct Test1; #[derive(UniqueTypeId)] #[UniqueTypeIdFile = "types2.toml"] struct Test2;
assert_eq!(Test1::id().0, 115u64);
assert_eq!(Test2::id().0, 232u64);
} ```
Here we set up ids for our types manually by creating the types2.toml
file.
Default and custom type files are searched relatively to a directory where cargo build
is called.
This project is licensed under the MIT license.