# A Timer Running Once Sometimes, we need to have an event that occurs after some predefined time. We can use the resource [Time](https://docs.rs/bevy/latest/bevy/time/struct.Time.html) introduced before and count the time by ourselves. Or we can use a build-in utility [Timer](https://docs.rs/bevy/latest/bevy/time/struct.Timer.html) to help us. In the following example, we create a [Circle](https://docs.rs/bevy/0.12.1/bevy/prelude/shape/struct.Circle.html), and the circle will become larger after three seconds. We put a [Timer](https://docs.rs/bevy/latest/bevy/time/struct.Timer.html) in a custom resource named `MyTimer`. ```rust #[derive(Resource)] struct MyTimer(Timer); ``` The [Timer](https://docs.rs/bevy/latest/bevy/time/struct.Timer.html) is initialized when we insert the resource. ```rust App::new().insert_resource(MyTimer(Timer::from_seconds(3., TimerMode::Once))) ``` We use the function [Timer::from_seconds](https://docs.rs/bevy/latest/bevy/time/struct.Timer.html#method.from_seconds) to set the time for the [Timer](https://docs.rs/bevy/latest/bevy/time/struct.Timer.html) to count. We also specify [TimerMode::Once](https://docs.rs/bevy/latest/bevy/time/enum.TimerMode.html#variant.Once), so the event will be triggered at most once. We check if the [Timer](https://docs.rs/bevy/latest/bevy/time/struct.Timer.html) satisfies its request in every frame update. ```rust fn circle_scales( time: Res