1

<timestamp::Module<T>>::get()サブストレート ランタイム モジュールと同じように、現在のタイムスタンプを取得できます。

それを使って基本的な算術演算 (足し算、引き算) を実行するにはどうすればよいですか?

decl_module! {
  pub struct Module<T: Trait> for enum Call where origin: T::Origin {
    fn deposit_event<T>() = default;

    pub fn func1(origin) -> Result {
      let now = <timestamp::Module<T>>::get();
      const DURATION = 60 * 5;
      // what is the proper way of performing the following operation?
      // let future = now + DURATION; 

      // At some point in future, can I perform the following comparison?
      if now > future { 
        // ... some code 
      }
    }
  }
}

さらに質問:

これにより、Rust / Rust doc についてよくわからないという疑問が生じます。型T::Momentには traitSimpleArithmeticが必要であり、これには型に trait が必要ですTryInto<u32>

だからこれはうまくいくはずです、

let tmp: u32 = DURATION + now.try_into()?;

しかし、実際に戻ってきます:

error[E0277]: cannot add `()` to `u32`
| no implementation for `u32 + ()`
|
= help: the trait `core::ops::Add<()>` is not implemented for `u32`

error[E0271]: type mismatch resolving `<() as core::convert::TryFrom<<T as srml_timestamp::Trait>::Moment>>::Error == &str`
| note: expected type `core::convert::Infallible`
=               found type `&str`

さらなる質問 - 2

基本的に、私はこのスレッドを通過しました。Timestampからu32/にu64、およびu32/から に変換する方法と、どの追加モジュールを導入する必要があるかの例を投稿できますか?u64Timestamp

ありがとう。

4

1 に答える 1