🛩️#[ink(impl)]
Esse atributo suporta um caso específico que raramente é necessário.
Pode ser aplicado em blocos de implementação ink! para torná-los reconhecidos pelo ink!. Isso é útil se o bloco de implementação não contiver nenhum outro atributo ink!, pois seria identificado pelo ink! como um item Rust. Adicionar #[ink(impl)] em tais blocos de implementação faz com que sejam tratados como blocos de implementação ink!, permitindo assim acessar o ambiente, entre outras coisas. 
Observe que mensagens e construtores ink! ainda precisam ser explicitamente identificados como tais.
Exemplo
Um bloco de implementação pode ser definido como uma implementação de um trait para a struct de armazenamento ink! usando a anotação #[ink(impl)] - mesmo que nenhum dos itens internos tenha quaisquer atributos específicos do ink!:
use core::convert::TryFrom;
#[ink::contract]
mod my_module {
    #[ink(storage)]
    pub struct MyStorage {
        /* storage fields */
    }
    #[ink(impl)]
    impl MyStorage {
        fn my_method(&self) -> i32 {
            /* method implementation */
        }
    }
    impl MyStorage {
      #[ink(constructor)]
      pub fn my_constructor() -> Self {
          /* constructor implementation */
      }
      #[ink(message)]
      pub fn my_message(&self) {
          /* message implementation */
      }
    }
}Last updated
Was this helpful?