{"id":19415021,"url":"https://github.com/jakeroggenbuck/hyper-minimal-loaders","last_synced_at":"2026-06-13T12:32:57.264Z","repository":{"id":103523473,"uuid":"522066635","full_name":"JakeRoggenbuck/hyper-minimal-loaders","owner":"JakeRoggenbuck","description":"A hyper minimal loader bar only 1.62 KB source.","archived":false,"fork":false,"pushed_at":"2023-11-24T07:09:44.000Z","size":12,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-25T03:13:15.838Z","etag":null,"topics":[],"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/JakeRoggenbuck.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-08-06T22:27:37.000Z","updated_at":"2022-08-17T05:49:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"a8bf637d-a68f-4127-beb3-005fd4f2ed81","html_url":"https://github.com/JakeRoggenbuck/hyper-minimal-loaders","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JakeRoggenbuck/hyper-minimal-loaders","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakeRoggenbuck%2Fhyper-minimal-loaders","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakeRoggenbuck%2Fhyper-minimal-loaders/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakeRoggenbuck%2Fhyper-minimal-loaders/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakeRoggenbuck%2Fhyper-minimal-loaders/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JakeRoggenbuck","download_url":"https://codeload.github.com/JakeRoggenbuck/hyper-minimal-loaders/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JakeRoggenbuck%2Fhyper-minimal-loaders/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34285190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-13T02:00:06.617Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-10T12:41:17.573Z","updated_at":"2026-06-13T12:32:57.246Z","avatar_url":"https://github.com/JakeRoggenbuck.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hyper-minimal-loaders\n\n[![Rust](https://img.shields.io/github/actions/workflow/status/jakeroggenbuck/hyper-minimal-loaders/rust.yml?branch=main\u0026style=for-the-badge)](https://github.com/JakeRoggenbuck/hyper-minimal-loaders/actions)\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/jakeroggenbuck/hyper-minimal-loaders?style=for-the-badge)\n\nA hyper minimal loader bar only 1.9 KB source.\n\n```rs\nuse hyper_minimal_loaders::{Count, Counter};\nuse std::{thread, time};\n\nfn main() {\n    let mut counter = Count::default();\n\n    loop {\n        counter.show();\n        counter.tick();\n\n        if counter.finished() {\n            break;\n        }\n\n        thread::sleep(time::Duration::from_millis(100));\n    }\n}\n```\n\n## What is hyper-minimal-loaders?\nIt's just a simple percentage loader\n\n![image](https://github.com/JakeRoggenbuck/loader-test/assets/35516367/b9fb9b1b-7948-416f-9aa9-6d0d58f1612a)\n\n## Why?\nSometimes you are making a program that will take hours to run, say you are computing large values of PI or something similar, and you want to know how long a certain operation will take. You may not necessarily want to print a bunch of info about the progress, especially every operation, because that would slow down the computation. You simply want to know if it's going to take days, weeks, or months to complete. This was the type of thing that I needed when doing math research for [t3 paper](https://github.com/JakeRoggenbuck/T3-Paper-Code).\n\nHere is an example of me implementing one of these super simple loaders written directly in the code to compute these large numbers.\nI later decided to make this library so that I could abstract the logic outside of the math computation code, and instead use my own library.\n\n```rs\n    let one_percent = MAX / 100;\n    let mut percents_done = 0;\n\n    loop {\n        if t_location \u003e one_percent * percents_done {\n            percents_done += 1;\n\n            print!(\"\\x1b[1A\\x1b[2K\");\n            println!(\"{percents_done}%\");\n        }\n\n        // -- snip -- source found at https://github.com/JakeRoggenbuck/T3-Paper-Code/blob/main/rl-3-ratio/src/main.rs\n\n        if t_location \u003e MAX {\n            break;\n        }\n\n        last = x;\n    }\n\n    print!(\"\\x1b[1A\\x1b[2K\");\n    println!(\"{percents_done}%\");\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakeroggenbuck%2Fhyper-minimal-loaders","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakeroggenbuck%2Fhyper-minimal-loaders","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakeroggenbuck%2Fhyper-minimal-loaders/lists"}