Pārlūkot izejas kodu

add `seeds` macro (#73)

* use `seeds` macro over `signer` macro

* fix doc to pass doc test

* deprecate  macro
publicqi 8 mēneši atpakaļ
vecāks
revīzija
01c1c7a37a
1 mainītis faili ar 25 papildinājumiem un 0 dzēšanām
  1. 25 0
      sdk/pinocchio/src/instruction.rs

+ 25 - 0
sdk/pinocchio/src/instruction.rs

@@ -264,6 +264,7 @@ impl<'a, 'b, const SIZE: usize> From<&'b [Seed<'a>; SIZE]> for Signer<'a, 'b> {
 /// let signer = signer!(b"seed", &[pda_bump]);
 /// ```
 #[macro_export]
+#[deprecated(since = "0.8.0", note = "Use `seeds!` macro instead")]
 macro_rules! signer {
     ( $($seed:expr),* ) => {
             $crate::instruction::Signer::from(&[$(
@@ -271,3 +272,27 @@ macro_rules! signer {
             )*])
     };
 }
+
+/// Convenience macro for constructing a `[Seed; N]` array from a list of seeds.
+///
+/// # Example
+///
+/// Creating seeds array and signer for a PDA with a single seed and bump value:
+/// ```
+/// use pinocchio::{seeds, instruction::Signer};
+/// use pinocchio::pubkey::Pubkey;
+///
+/// let pda_bump = 0xffu8;
+/// let pda_ref = &[pda_bump];  // prevent temporary value being freed
+/// let example_key = Pubkey::default();
+/// let seeds = seeds!(b"seed", &example_key, pda_ref);
+/// let signer = Signer::from(&seeds);
+/// ```
+#[macro_export]
+macro_rules! seeds {
+    ( $($seed:expr),* ) => {
+        [$(
+            $crate::instruction::Seed::from($seed),
+        )*]
+    };
+}