{"id":13797481,"url":"https://github.com/thomaschaplin/rust-counter-strings","last_synced_at":"2025-05-07T13:36:20.649Z","repository":{"id":38330199,"uuid":"405066674","full_name":"thomaschaplin/rust-counter-strings","owner":"thomaschaplin","description":"🧵 Generate self-describing strings of a given length to help aid software testing","archived":false,"fork":false,"pushed_at":"2024-02-29T23:07:33.000Z","size":792,"stargazers_count":24,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-19T22:34:46.892Z","etag":null,"topics":["rust","testing-tools"],"latest_commit_sha":null,"homepage":"","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/thomaschaplin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":["thomaschaplin"]}},"created_at":"2021-09-10T12:05:03.000Z","updated_at":"2023-05-14T08:38:06.000Z","dependencies_parsed_at":"2024-03-01T00:23:34.518Z","dependency_job_id":"7744630b-1c0c-46fe-99c8-996585de0b22","html_url":"https://github.com/thomaschaplin/rust-counter-strings","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomaschaplin%2Frust-counter-strings","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomaschaplin%2Frust-counter-strings/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomaschaplin%2Frust-counter-strings/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomaschaplin%2Frust-counter-strings/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thomaschaplin","download_url":"https://codeload.github.com/thomaschaplin/rust-counter-strings/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252887951,"owners_count":21819942,"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":["rust","testing-tools"],"created_at":"2024-08-04T00:00:21.811Z","updated_at":"2025-05-07T13:36:20.631Z","avatar_url":"https://github.com/thomaschaplin.png","language":"Rust","funding_links":["https://github.com/sponsors/thomaschaplin"],"categories":["App"],"sub_categories":[],"readme":"\u003cimg src=\"assets/logo.png\" alt=\"logo\" width=\"300\"/\u003e\n\n# rust-counter-strings\n\nCounter strings generator written in [rust](https://www.rust-lang.org/) to help aid software testing\n\n## What is a counterstring?\n\n\u003e \"A counterstring is a graduated string of arbitrary length. No matter where you are in the string, you always know the character position. This comes in handy when you are pasting huge strings into fields and they get truncated at a certain point\" - [James Bach](https://www.satisfice.com/blog/archives/22)\n\n## How do I use a counterstring?\n\n\u003e \"Each asterisk in the string occurs at a position specified by the immediately preceding number. Thus, the asterisk following the 29 is the 29th character in that string. So, you can chop the end of the string anywhere, and you know exactly where it was cut. Without having to count, you know that the string `2*4*6*8*11*14*17*2` has exactly 18 characters in it. This saves some effort when you’re dealing with a half million characters. I pasted a 4000 character counterstring into the address field and it was truncated at `2045*20`, meaning that 2047 characters were pasted.\" - [James Bach](https://www.satisfice.com/blog/archives/22)\n\n## Docker Usage\n\n- `docker pull thomaschaplin/rust-counter-strings`\n- `docker run --rm thomaschaplin/rust-counter-strings \u003cNUMBER\u003e`\n\n## Development Setup\n\nMake sure you have [rust](https://www.rust-lang.org/) installed on your machine by following the [getting started guide](https://www.rust-lang.org/learn/get-started)\n\n### Instructions\n\n* Clone this repository `git clone git@github.com:thomaschaplin/rust-counter-strings.git`\n* Change directory `cd rust-counter-strings`\n* Build the application `cargo build`\n* Run the application `cargo run \u003cNUMBER\u003e`\n\n### Final Build\n\n* Build the application in release mode `cargo build --release`\n* Execute the `rust-counter-strings` binary file found in `target/release/rust-counter-strings`\n\n#### Example Usage:\n\n`./rust-counter-strings 50`\n\n```\n2*4*6*8*11*14*17*20*23*26*29*32*35*38*41*44*47*50*\n```\n\n### Local Docker Setup\n\nBuild\n```\ndocker build --rm -f Dockerfile -t thomaschaplin/rust-counter-strings .\n```\n\nRun\n```\ndocker run --rm thomaschaplin/rust-counter-strings \u003cNUMBER\u003e\n```\n\n---\n\n[Rope](https://www.clipartkey.com/view/imioim_rope-lasso-clipart-rope-black-and-white/) graphic by \u003ca href=\"https://www.clipartkey.com/upic/322/\"\u003eAlpenx Nbr\u003c/a\u003e from ClipArtKey.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomaschaplin%2Frust-counter-strings","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthomaschaplin%2Frust-counter-strings","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomaschaplin%2Frust-counter-strings/lists"}