Я могу получить текущую метку времени как <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
}
}
}
}
Дальнейший вопрос :
Это поднимает вопрос Iя не уверен насчет Rust / Rust doc.Тип T::Moment
должен иметь черту SimpleArithmetic
, что в свою очередь требует, чтобы тип имел черту 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
/ u64
в Timestamp
, и какие дополнительные модули необходимо ввести?
Спасибо.