macro_rules! declare_program {
($bs58_string : expr, $name : ident, $entrypoint : expr) => { ... };
}
Expand description
Convenience macro to declare a native program
bs58_string: bs58 string representation the program’s id
name: Name of the program
filename: must match the library name in Cargo.toml
entrypoint: Program’s entrypoint, must be of type Entrypoint
id: Path to the program id access function, used if this macro is not
called in src/lib
Examples
use std::str::FromStr;
use safecoin_sdk::{
declare_program,
instruction::InstructionError,
process_instruction::InvokeContext,
pubkey::Pubkey,
};
fn my_process_instruction(
program_id: &Pubkey,
instruction_data: &[u8],
invoke_context: &mut dyn InvokeContext,
) -> Result<(), InstructionError> {
// Process an instruction
Ok(())
}
declare_program!(
"My11111111111111111111111111111111111111111",
solana_my_program,
my_process_instruction
);
let my_id = Pubkey::from_str("My11111111111111111111111111111111111111111").unwrap();
assert_eq!(id(), my_id);
use std::str::FromStr;
use safecoin_sdk::{
declare_program,
instruction::InstructionError,
process_instruction::InvokeContext,
pubkey::Pubkey,
};
fn my_process_instruction(
program_id: &Pubkey,
instruction_data: &[u8],
invoke_context: &mut dyn InvokeContext,
) -> Result<(), InstructionError> {
// Process an instruction
Ok(())
}
declare_program!(
safecoin_sdk::system_program::ID,
solana_my_program,
my_process_instruction
);
assert_eq!(id(), safecoin_sdk::system_program::ID);