Thanks to visit codestin.com
Credit goes to lib.rs

#serialization #timer #bevy #gamedev

timer_data

Serializer-independent data types for Bevy's Timer

1 unstable release

0.1.0 Feb 9, 2026

#1319 in Encoding

MIT/Apache

21KB
337 lines

timer_data

Serializer-independent data types for Bevy's Timer.

Bevy's Timer doesn't implement common serialization traits. This crate provides TimerData and TimerModeData as plain data types with optional From/Into conversions to Bevy types, plus optional serde and rkyv derives behind feature flags.

Features

Feature Default Description
bevy Yes bevy_time dependency + From/Into conversions for Timer/TimerMode
serde Yes Serialize/Deserialize derives. With bevy, also #[serde(with)] helpers
rkyv No Archive/Serialize/Deserialize derives (rkyv 0.8)

Usage

Serde (#[serde(with)]) — requires bevy + serde

use serde::{Serialize, Deserialize};
use bevy_time::Timer;

#[derive(Serialize, Deserialize)]
struct MyComponent {
    #[serde(with = "timer_data")]
    timer: Timer,
}

Direct conversion — requires bevy

use bevy_time::{Timer, TimerMode};
use timer_data::TimerData;

let timer = Timer::from_seconds(5.0, TimerMode::Once);
let data: TimerData = (&timer).into();
let restored: Timer = data.into();

Without Bevy

use timer_data::{TimerData, TimerModeData};

let data = TimerData::new(5_000_000_000, 0, false, TimerModeData::Once);
assert_eq!(data.duration(), std::time::Duration::from_secs(5));

Bevy Compatibility

timer_data Bevy
0.1 0.18

License

Licensed under either of

at your option.

Dependencies

~0.2–3.5MB
~63K SLoC