Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/rustype/typestate-rs
- Owner: rustype
- License: apache-2.0
- Created: 2020-11-27T10:18:17.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2023-07-04T20:35:11.000Z (over 1 year ago)
- Last Synced: 2024-11-07T20:22:14.203Z (about 2 months ago)
- Topics: automata, dsl, macro, rust, state-machine, typestate
- Language: Rust
- Homepage: https://rustype.github.io/typestate-rs/
- Size: 6.09 MB
- Stars: 141
- Watchers: 5
- Forks: 11
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE-APACHE
- Citation: CITATION.cff
Awesome Lists containing this project
README
# `#[typestate]`
[](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 inIf 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)