{"id":13611730,"url":"https://github.com/parker-codes/todo_by","last_synced_at":"2025-04-13T05:33:28.632Z","repository":{"id":164731900,"uuid":"640174271","full_name":"parker-codes/todo_by","owner":"parker-codes","description":"Compile-time lifetimes for comments.","archived":false,"fork":false,"pushed_at":"2024-05-17T15:29:56.000Z","size":34,"stargazers_count":116,"open_issues_count":2,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T12:42:36.478Z","etag":null,"topics":["cargo","compile-time","proc-macro","todo"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/todo_by","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/parker-codes.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-05-13T08:18:23.000Z","updated_at":"2025-02-12T21:35:59.000Z","dependencies_parsed_at":"2024-01-14T06:50:29.275Z","dependency_job_id":"ded48f0c-f32a-44d5-ad56-7c64b37621f0","html_url":"https://github.com/parker-codes/todo_by","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parker-codes%2Ftodo_by","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parker-codes%2Ftodo_by/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parker-codes%2Ftodo_by/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/parker-codes%2Ftodo_by/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/parker-codes","download_url":"https://codeload.github.com/parker-codes/todo_by/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248670513,"owners_count":21142896,"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":["cargo","compile-time","proc-macro","todo"],"created_at":"2024-08-01T19:02:02.697Z","updated_at":"2025-04-13T05:33:24.173Z","avatar_url":"https://github.com/parker-codes.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# todo_by\n\nCompile-time lifetimes for comments.\n\n---\n\nTo use this macro, add it to your dependencies via Cargo:\n\n```bash\ncargo add todo_by\n```\n\nThen, import and invoke the macro and add a date (such as above a function or statement) like so:\n\n```rs\nuse todo_by::todo_by;\n\ntodo_by!(\"2023-06-01\");\nfn my_function() {\n    // TODO: Implement this function by June 1st, 2023\n}\n```\n\nIf the current date is after June 1st, 2023, the macro will generate a compile error with the message “TODO by Jun 1, 2023 has passed”. If the current date is on or before June 1st, 2023, the macro will expand to nothing and the code will compile normally.\n\nYou can also add specific TODO comments:\n\n```rs\ntodo_by!(\"2023-06-01\", \"Clean up implementation\");\n```\n\nThe `todo_while` macro allows you to ensure todos are done based on a semver requirement of what is in your Cargo.toml:\n\n```rs\nuse todo_by::todo_while;\n\ntodo_while!(\"\u003c1.0.0\", \"This has to be in the first major release\")\n```\n\nThis also allows you to make blockers:\n\n```rs\ntodo_while!(\"\u003e123.4\", \"Must fix this or bump the version\")\n```\n\n### Important note for library authors\n\nCurrently, if you publish/offer a crate and a todo_by expires in the lib code, then it would be an unfixable compilation error for anyone importing the crate. This problem is being investigated - please offer solutions if you have any!\n\n### You might find useful\n\nHere are some alternative implementations for other languages and tools. These are not directly affiliated and software should always be vetted for trustworthiness, including this Rust `todo_by` crate! That said, great work by these authors.\n\n- [no-expired-todo-comments](https://github.com/maxprilutskiy/eslint-plugin-no-expired-todo-comments) - ESLint plugin by [@MaxPrilutskiy](https://twitter.com/MaxPrilutskiy)\n- [staabm/phpstan-todo-by](https://github.com/staabm/phpstan-todo-by) - PHPStan plugin by [@staabm](https://twitter.com/markusstaab)\n- [barnumbirr/todo_by](https://github.com/barnumbirr/todo_by) - `todo_by` in Python by [@barnumbirr](https://twitter.com/barnumbirr)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparker-codes%2Ftodo_by","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fparker-codes%2Ftodo_by","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fparker-codes%2Ftodo_by/lists"}