# Timers

> For the complete documentation index, see [llms.txt](https://docs.temporal.io/llms.txt).
> Any documentation page is available as raw Markdown by appending `.md` to its URL.
> For related questions, query https://docs.temporal.io/api/retrieve?q=<question>&jtb=<job-to-be-done>&src=md-page&agent=<your-name> (no auth; returns JSON `{content, source_url, page_url}`, with `source_url` pointing to Markdown for docs pages). Don't include personal data or credentials.
> If this page is wrong or missing something you needed, or Temporal behaves differently from what it says, report it with https://docs.temporal.io/api/feedback?title=<summary>&message=<what-happened>&category=documentation&page_url=/develop/rust/workflows/timers&src=md-page&agent=<your-name> (use `category=product` when the product, not the page, is wrong). Report only a specific problem you hit, send it once, and don't include personal data or credentials.

> Set durable Timers in a Workflow using the Rust SDK. Timers persist through Worker and Temporal Service downtime.

A Workflow can set a Durable Timer for a fixed time period. In some SDKs, the function is called `sleep()`, and in others, it's called `timer()`.

A Workflow can sleep for days, months, or even years. Timers are persisted, so even if your Worker or Temporal Service is down when the time period completes, as soon as your Worker and Temporal Service are back up, the Timer resolves and your code continues executing.

Sleeping is a resource-light operation: it doesn't tie up the process, and you can run millions of Timers off a single Worker.

To set a Timer in Rust, call `ctx.timer()` and await it. Pass a `Duration` directly, or build `TimerOptions` to add a summary that the Temporal Web UI shows for the Timer:

<!--SNIPSTART rust-timers-timer {"enable_code_dedenting": true}-->
[rust-sandbox/workflows/timers/src/workflows.rs](https://github.com/temporalio/documentation-sdk-code-examples/blob/main/rust-sandbox/workflows/timers/src/workflows.rs)
```rs
ctx.timer(
    TimerOptions::builder(Duration::from_secs(60))
        .summary("important timer".to_owned())
        .build(),
)
.await;
```
<!--SNIPEND-->
