Travis Staloch 8af59d1f98 ComptimeStringMap: return a regular struct and optimize
this patch renames ComptimeStringMap to StaticStringMap, makes it
accept only a single type parameter, and return a known struct type
instead of an anonymous struct.  initial motivation for these changes
was to reduce the 'very long type names' issue described here
https://github.com/ziglang/zig/pull/19682.

this breaks the previous API.  users will now need to write:
`const map = std.StaticStringMap(T).initComptime(kvs_list);`

* move `kvs_list` param from type param to an `initComptime()` param
* new public methods
  * `keys()`, `values()` helpers
  * `init(allocator)`, `deinit(allocator)` for runtime data
  * `getLongestPrefix(str)`, `getLongestPrefixIndex(str)` - i'm not sure
     these belong but have left in for now incase they are deemed useful
* performance notes:
  * i posted some benchmarking results here:
    https://github.com/travisstaloch/comptime-string-map-revised/issues/1
  * i noticed a speedup reducing the size of the struct from 48 to 32
    bytes and thus use u32s instead of usize for all length fields
  * i noticed speedup storing KVs as a struct of arrays
  * latest benchmark shows these wall_time improvements for
    debug/safe/small/fast builds: -6.6% / -10.2% / -19.1% / -8.9%. full
    output in link above.
2024-04-22 15:31:41 -07:00
..
2024-03-19 11:45:09 -07:00
2024-03-29 22:15:17 -07:00
2024-03-20 21:05:35 -07:00
2024-03-21 14:11:46 -07:00
2024-02-23 02:37:11 -07:00
2024-04-20 19:37:41 -07:00
2024-04-13 01:35:20 -04:00
2024-03-19 11:45:09 -07:00
2024-04-19 13:49:06 -07:00
2024-03-21 14:11:46 -07:00
2024-03-21 14:11:46 -07:00
2024-03-15 02:28:50 -04:00
2024-03-10 18:13:30 -07:00
2024-03-21 14:11:46 -07:00
2024-03-19 11:45:09 -07:00
2024-03-23 18:11:32 +01:00
2024-03-10 18:13:30 -07:00
2024-04-11 23:33:38 -07:00
2024-03-19 11:45:09 -07:00
2024-03-10 18:13:30 -07:00
2024-03-21 14:11:46 -07:00
2024-03-19 16:18:18 -07:00
2024-02-05 11:55:14 +03:30
2024-03-19 11:45:09 -07:00
2024-04-10 02:11:54 -07:00
2023-10-25 04:28:30 -04:00
2024-02-09 14:02:57 -08:00
2024-04-17 13:41:25 +01:00
2024-04-15 15:24:30 -07:00
2024-03-19 16:18:18 -07:00
2024-03-19 11:45:09 -07:00
2024-04-20 19:37:41 -07:00
2024-02-08 15:39:28 +01:00
2024-03-10 18:13:30 -07:00
2024-03-21 14:11:46 -07:00
2024-03-30 20:50:48 -04:00
2024-03-21 14:11:46 -07:00
2024-04-22 15:27:05 -07:00
2024-03-21 14:11:46 -07:00
2023-10-21 21:24:55 +00:00