Update all std.mem.split calls to their appropriate function

Everywhere that can now use `splitScalar` should get a nice little performance boost.
This commit is contained in:
Ryan Liptak
2023-05-04 18:15:50 -07:00
parent 815e53b147
commit 2129f28953
27 changed files with 58 additions and 55 deletions

View File

@@ -7,9 +7,12 @@ const mem = std.mem;
const meta = std.meta;
const fields_delimiter = "$";
const fields_delimiter_scalar = '$';
const version_param_name = "v";
const params_delimiter = ",";
const params_delimiter_scalar = ',';
const kv_delimiter = "=";
const kv_delimiter_scalar = '=';
pub const Error = std.crypto.errors.EncodingError || error{NoSpaceLeft};
@@ -73,7 +76,7 @@ pub fn BinValue(comptime max_len: usize) type {
/// Other fields will also be deserialized from the function parameters section.
pub fn deserialize(comptime HashResult: type, str: []const u8) Error!HashResult {
var out = mem.zeroes(HashResult);
var it = mem.split(u8, str, fields_delimiter);
var it = mem.splitScalar(u8, str, fields_delimiter_scalar);
var set_fields: usize = 0;
while (true) {
@@ -104,7 +107,7 @@ pub fn deserialize(comptime HashResult: type, str: []const u8) Error!HashResult
// Read optional parameters
var has_params = false;
var it_params = mem.split(u8, field, params_delimiter);
var it_params = mem.splitScalar(u8, field, params_delimiter_scalar);
while (it_params.next()) |params| {
const param = kvSplit(params) catch break;
var found = false;
@@ -252,7 +255,7 @@ fn serializeTo(params: anytype, out: anytype) !void {
// Split a `key=value` string into `key` and `value`
fn kvSplit(str: []const u8) !struct { key: []const u8, value: []const u8 } {
var it = mem.split(u8, str, kv_delimiter);
var it = mem.splitScalar(u8, str, kv_delimiter_scalar);
const key = it.first();
const value = it.next() orelse return Error.InvalidEncoding;
const ret = .{ .key = key, .value = value };