No description
  • Rust 93.9%
  • Nix 6.1%
Find a file
2026-02-09 14:04:09 +01:00
src First commit 2026-02-09 14:04:09 +01:00
.envrc First commit 2026-02-09 14:04:09 +01:00
.gitignore Initial commit 2026-02-09 13:02:20 +01:00
Cargo.toml First commit 2026-02-09 14:04:09 +01:00
CLAUDE.md First commit 2026-02-09 14:04:09 +01:00
flake.lock First commit 2026-02-09 14:04:09 +01:00
flake.nix First commit 2026-02-09 14:04:09 +01:00
LICENSE-APACHE First commit 2026-02-09 14:04:09 +01:00
LICENSE-MIT First commit 2026-02-09 14:04:09 +01:00
README.md First commit 2026-02-09 14:04:09 +01:00

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.