local strings = {}


--- Test whether a string starts with a prefix.
function strings.startswith(s, prefix)
    -- optimized version of: return s:sub(1, #prefix) == prefix
    for i = 1,#prefix do
        if s:byte(i) ~= prefix:byte(i) then
            return false
        end
    end
    return true
end

--- Test whether a string ends with a trailing suffix.
function strings.endswith(s, trailing)
    -- optimized version of: return trailing == "" or s:sub(-#trailing) == trailing
    local n1,n2 = #s,#trailing

    for i = 0,n2-1 do
        if s:byte(n1-i) ~= trailing:byte(n2-i) then
            return false
        end
    end
    return true
end

return strings