Browse Source

lang: Add `AsRef` conversions for accounts to `AccountInfo` (#541)

suscd 4 years ago
parent
commit
c1109721b5
2 changed files with 14 additions and 0 deletions
  1. 6 0
      lang/src/cpi_account.rs
  2. 8 0
      lang/src/program_account.rs

+ 6 - 0
lang/src/cpi_account.rs

@@ -87,6 +87,12 @@ impl<'info, T: AccountDeserialize + Clone> ToAccountInfo<'info> for CpiAccount<'
     }
 }
 
+impl<'info, T: AccountDeserialize + Clone> AsRef<AccountInfo<'info>> for CpiAccount<'info, T> {
+    fn as_ref(&self) -> &AccountInfo<'info> {
+        &self.info
+    }
+}
+
 impl<'a, T: AccountDeserialize + Clone> Deref for CpiAccount<'a, T> {
     type Target = T;
 

+ 8 - 0
lang/src/program_account.rs

@@ -162,6 +162,14 @@ impl<'info, T: AccountSerialize + AccountDeserialize + Clone> ToAccountInfo<'inf
     }
 }
 
+impl<'info, T: AccountSerialize + AccountDeserialize + Clone> AsRef<AccountInfo<'info>>
+    for ProgramAccount<'info, T>
+{
+    fn as_ref(&self) -> &AccountInfo<'info> {
+        &self.inner.info
+    }
+}
+
 impl<'a, T: AccountSerialize + AccountDeserialize + Clone> Deref for ProgramAccount<'a, T> {
     type Target = T;