From 6be4c62890770437d9735cc87e6e2386abffcbae Mon Sep 17 00:00:00 2001 From: Taylor Cramer Date: Fri, 23 Oct 2026 12:25:46 -0700 Subject: [PATCH] Replace `auto` and chained `.build().value()` with explicit `rs_std::Result` types in `security/regex` With Crubit's `movable_return_values` feature, `cc_bindings_from_rs` returns `rs_std::Result` by value wrapped in `::rs::Movable>`, which implicitly converts to `rs_std::Result` via `operator rs_std::Result() &&`. Using `auto` or calling `.value()` directly on the return value of `build()` accesses `::rs::Movable` instead of `rs_std::Result`. Materializing the result into an explicit `rs_std::Result<...>` variable works both before and after `movable_return_values` is enabled. PiperOrigin-RevId: 1005780449 --- regex/regex.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/regex/regex.cc b/regex/regex.cc index eafa8d6..975381b 100644 --- a/regex/regex.cc +++ b/regex/regex.cc @@ -135,7 +135,8 @@ absl::StatusOr Regex::Compile(absl::string_view pattern, if (options.nest_limit.has_value()) { builder.nest_limit(*options.nest_limit); } - auto result = std::move(builder).build(); + rs_std::Result> result = + std::move(builder).build(); if (!result.has_value()) { const rs_std::Vec& err = result.err(); return absl::InvalidArgumentError(internal::AsStr(err)); @@ -262,7 +263,8 @@ absl::StatusOr RegexSet::Compile( if (options.nest_limit.has_value()) { builder.nest_limit(*options.nest_limit); } - auto result = std::move(builder).build(); + rs_std::Result> result = + std::move(builder).build(); if (!result.has_value()) { const rs_std::Vec& err = result.err(); return absl::InvalidArgumentError(internal::AsStr(err));