tree eaa0541b5a7ff6d2b1a118955dfa14a269d67401
parent c4975831dd2fed42220a27d47c4cf24f8ebe8edf
author UebelAndre <github@uebelandre.com> 1730914551 -0800
committer GitHub <noreply@github.com> 1730914551 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJnK6kICRC1aQ7uu5UhlAAAR4MQACw/9+7PGPmgAeRu04rIeXAe
 UYF2XTHoMuayTIiDnqBcfINxKC4Nwe17hMKms4EegjaPYQQpIwIwXwvxqSVn2njW
 CPP6q2A6SrYB8oq13uPwD0bmF+3aiM25yed5WQtKt6RJ70vVsPfBXrPv9P3kO7se
 xV8E2n27zmygk9mjsA/JJHs0s/PflyZyXPgOD1o2O4z6M7VQuk5WvvfuwbAtFV/Z
 bQ9G2nmKtw9wibAZuBDeByQGp+X84gmhpL7TMyMUM2XC1gVYEdoP7TE+oYkHaTON
 +NxxajcT5aJeHT0KKeWazjVFAzCeSiAcGTgd/lXf6V6OI1grhx3M9vFERq/gWt8i
 SWbeUL+N043UnauSvtSi2/CxhmbByowpA05kdhN1+7M5WUKSTsGTRWsjRFsrwIXb
 w9MN0gWdYkKZSK37w4WyZZOCUUB0gCqj51q0t99zShoXqJ84DMmgdRbWuhKE1Ucw
 TQGSzWNlRWX/BGWHl3ZOFVTvZGQ7zTndiF2r5xA2ZGtEMr9K4wQTlu/qHzZd2/e0
 A51giR2MC2IOqpzxr5oEXHlZPT3gVekW3bqVq2ChH/VE+aLSwNpW/fLH0+gcfsTi
 w8bl67fjio9ll4g4QgCYMuEz2e6eqkkGxNOQG0yRe3HBPzSxUIswB9qn/Ti2kswF
 ldL2xnsyGJJrgVViSev8
 =uFtZ
 -----END PGP SIGNATURE-----
 

Added utility library for parsing workspace status stamps. (#2982)

This change introduces a small utility for parsing workspace status
stamp files. I found similar snippets throughout projects I work on and
thought consolidation within `rules_rust` would be good. An example
usage can be seen here:

```rust
use workspace_status::parse_workspace_status_stamps;

fn main() {
    let stable_status = std::fs::read_to_string("bazel-out/stable-status.txt").unwrap();
    let volatile_status = std::fs::read_to_string("bazel-out/volatile-status.txt").unwrap();
    let stamps = parse_workspace_status_stamps(&stable_status)
                .chain(parse_workspace_status_stamps(&stable_status))
                .flatten()
                .collect::<BTreeMap<_, _>>();
    // ...
    // ...
    // ...
}
```