Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/rustype/typestate-rs

Proc-macro typestate DSL for Rust
https://github.com/rustype/typestate-rs

automata dsl macro rust state-machine typestate

Last synced: about 1 month ago
JSON representation

Proc-macro typestate DSL for Rust

Awesome Lists containing this project

README

        

# `#[typestate]`

[github](https://github.com/rustype/typestate-rs)
[](https://docs.rs/typestate)
[](https://crates.io/crates/typestate)

This library provides developers with a macro to design typestated objects.

```toml
[dependencies]
typestate = "0.8.0"
```

*Compiler support: requires rustc 1.42+*

## Documentation

If you're only interested in getting up and running with `typestate`,
the documentation might be more useful for you.
You can consult it in

If you're interested in learning more about the `typestate` crate, or typestates in Rust,
you can read *The Typestate Book* in .

## Citing `typestate`

If you find `typestate` useful in your work, we kindly request you cite the following paper:

```bibtex
@inproceedings{10.1145/3475061.3475082,
author = {Duarte, Jos\'{e} and Ravara, Ant\'{o}nio},
title = {Retrofitting Typestates into Rust},
year = {2021},
url = {https://doi.org/10.1145/3475061.3475082},
doi = {10.1145/3475061.3475082},
booktitle = {25th Brazilian Symposium on Programming Languages},
pages = {83–91},
numpages = {9},
series = {SBLP'21}
}
```

Alternatively, you can cite the extended version:

```bibtex
@article{10.1016/j.cola.2022.101154,
title = {Taming stateful computations in Rust with typestates},
journal = {Journal of Computer Languages},
pages = {101154},
year = {2022},
issn = {2590-1184},
doi = {10.1016/j.cola.2022.101154},
url = {https://doi.org/10.1016/j.cola.2022.101154},
author = {Duarte, Jos\'{e} and Ravara, Ant\'{o}nio},
```

## Publications

- [Retrofitting Typestates into Rust (MSc Thesis)](articles/thesis.pdf)
- [Retrofitting Typestates into Rust (SBLP'21)](articles/sblp21.pdf)