ErrorOr<std::string> slurp(std::string path) { ErrorOr<std::vector<char>> v = slurpv<char>(path); if (!v) { return {v.as_error(), std::string{}}; } std::string s{v->begin(), v->end()}; /* Note that here we make a copy */ return {NoError(), std::move(s)}; }