1 unstable release
0.1.0 | Aug 24, 2024 |
---|
#238 in #finance
9KB
99 lines
Canonical account prefixes
Generates a const prefix for a given account name. This is useful for generating a prefix for a given account xname that can be used in a Solana Program.
Installation
Add the following to your Cargo.toml
:
[dependencies]
canonical_account_prefixes = "0.1.0"
If you're using anchor
, you can enable the anchor
feature:
[dependencies]
canonical_account_prefixes = { version = "0.1.0", features = ["anchor"] }
Usage
The prefix!
macro
use canonical_account_prefixes::prefix;
prefix!(OTHER)
This generates the following const:
#[const] // If feature=anchor is enabled
pub const OTHER: [u8; 5] = [111, 116, 104, 101, 114];
Which is the equivalent of writing:
#[const] // If feature=anchor is enabled
pub const OTHER: [u8; 5] = *b"other";
That way you don't have to specify the string length.
The prefix_account
attribute macro
use canonical_account_prefixes::prefix_account;
#[prefix_account]
pub struct Other {
pub data: [u8; 32],
}
Which is the equivalent of writing:
pub struct Other {
pub data: [u8; 32],
}
#[const] // If feature=anchor is enabled
pub const OTHER: [u8; 5] = *b"other";
For account names in UpperCamelCase
, the macro will do the following:
#[prefix_account]
pub struct UpperCamelCase {
pub data: [u8; 32],
}
Will generate:
pub struct UpperCamelCase {
pub data: [u8; 32],
}
#[const] // If feature=anchor is enabled
pub const UPPER_CAMEL_CASE: [u8; 16] = *b"upper_camel_case";
License
You can use this code under the MIT license. See LICENSE for more details.
Dependencies
~250–700KB
~17K SLoC