Crate anim[][src]

Expand description


This is a framework independent animation library for rust, works nicely with Iced and the others.


Color&Opacity Animation Example

Size Animation Example

Raindrop Splash Animation

How to install?

Include anim in your Cargo.toml dependencies:

anim = "0.1"

Note: anim turns on iced-backend feature by default. You need to disable default features if you do not work with iced.

anim = { version="0.1", default-features = false }

How to use?

There are 3 important concepts in anim:

  • Animatable Types derived from Animatable means that its values can be calculated based on timing progress, with which you can create Animation objects.

  • Animation The Animation generates values based on its timing progress. You can construct a big Animation from small ones.

  • Timeline With Timeline you can control your animations’ lifetime.

For simple scenarios, you just need Options.

use anim::{Options, Timeline, Animation, easing};

Then, build and start your animation:

use std::time::Duration;
use anim::{Options, Timeline, Animation, easing};

let mut timeline = Options::new(20,100).easing(easing::bounce_ease())

loop {
    let status = timeline.update();
    if status.is_completed() {
    println!("animated value: {}", timeline.value());

For complex scenarios, please look at examples to gain some ideas.


make a type animatable

animation builders

ease functions

thread local based timeline

timeline definitions




options to build an Animation

control your animation


key time

how an Animation repeats its simple duration

seek progress of current animation, only keep the remaining part


default animation time, 1 second


generates output values based on its timing progress

your animation, which outputs animated value based on the progressing time.

like Iterator, but does not consume any element

easing function

Derive Macros

the macro derives anim::Animatable for you automatically.