{"id":13822379,"url":"https://github.com/rustype/typestate-rs","last_synced_at":"2025-12-30T04:45:15.463Z","repository":{"id":39905367,"uuid":"316467902","full_name":"rustype/typestate-rs","owner":"rustype","description":"Proc-macro typestate DSL for Rust","archived":false,"fork":false,"pushed_at":"2023-07-04T20:35:11.000Z","size":6388,"stargazers_count":141,"open_issues_count":18,"forks_count":11,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-11-07T20:22:14.203Z","etag":null,"topics":["automata","dsl","macro","rust","state-machine","typestate"],"latest_commit_sha":null,"homepage":"https://rustype.github.io/typestate-rs/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rustype.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-11-27T10:18:17.000Z","updated_at":"2024-11-03T04:07:20.000Z","dependencies_parsed_at":"2022-09-26T20:41:23.783Z","dependency_job_id":"fbad5ed3-38b2-4eba-8951-f191978fb258","html_url":"https://github.com/rustype/typestate-rs","commit_stats":{"total_commits":456,"total_committers":6,"mean_commits":76.0,"dds":"0.14473684210526316","last_synced_commit":"aa28757fa0529b5d5820ece3a990f530c986d3ca"},"previous_names":["rustype/typestates-rs"],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustype%2Ftypestate-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustype%2Ftypestate-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustype%2Ftypestate-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustype%2Ftypestate-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rustype","download_url":"https://codeload.github.com/rustype/typestate-rs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225436679,"owners_count":17474195,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automata","dsl","macro","rust","state-machine","typestate"],"created_at":"2024-08-04T08:01:57.909Z","updated_at":"2025-12-12T12:49:43.975Z","avatar_url":"https://github.com/rustype.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# `#[typestate]`\n\n[\u003cimg alt=\"github\" src=\"https://img.shields.io/badge/github-rustype/typestate-8da0cb?style=flat-square\u0026logo=github\"\u003e](https://github.com/rustype/typestate-rs)\n[\u003cimg alt=\"\" src=\"https://img.shields.io/badge/docs.rs-typestate-success?style=flat-square\"\u003e](https://docs.rs/typestate)\n[\u003cimg alt=\"\" src=\"https://img.shields.io/crates/v/typestate?style=flat-square\"\u003e](https://crates.io/crates/typestate)\n\nThis library provides developers with a macro to design typestated objects.\n\n```toml\n[dependencies]\ntypestate = \"0.8.0\"\n```\n\n*Compiler support: requires rustc 1.42+*\n\n## Documentation\n\nIf you're only interested in getting up and running with `typestate`,\nthe documentation might be more useful for you.\nYou can consult it in \u003chttps://docs.rs/typestate/0.8.0/typestate/\u003e\n\nIf you're interested in learning more about the `typestate` crate, or typestates in Rust,\nyou can read *The Typestate Book* in \u003chttps://rustype.github.io/typestate-rs/\u003e.\n\n## Citing `typestate`\n\nIf you find `typestate` useful in your work, we kindly request you cite the following paper:\n\n```bibtex\n@inproceedings{10.1145/3475061.3475082,\n    author = {Duarte, Jos\\'{e} and Ravara, Ant\\'{o}nio},\n    title = {Retrofitting Typestates into Rust},\n    year = {2021},\n    url = {https://doi.org/10.1145/3475061.3475082},\n    doi = {10.1145/3475061.3475082},\n    booktitle = {25th Brazilian Symposium on Programming Languages},\n    pages = {83–91},\n    numpages = {9},\n    series = {SBLP'21}\n}\n```\n\nAlternatively, you can cite the extended version:\n\n```bibtex\n@article{10.1016/j.cola.2022.101154,\n    title = {Taming stateful computations in Rust with typestates},\n    journal = {Journal of Computer Languages},\n    pages = {101154},\n    year = {2022},\n    issn = {2590-1184},\n    doi = {10.1016/j.cola.2022.101154},\n    url = {https://doi.org/10.1016/j.cola.2022.101154},\n    author = {Duarte, Jos\\'{e} and Ravara, Ant\\'{o}nio},\n```\n\n## Publications\n\n- [Retrofitting Typestates into Rust (MSc Thesis)](articles/thesis.pdf)\n- [Retrofitting Typestates into Rust (SBLP'21)](articles/sblp21.pdf)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustype%2Ftypestate-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frustype%2Ftypestate-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustype%2Ftypestate-rs/lists"}