summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mårten Kongstad <amhk@google.com> 2023-12-14 13:31:28 +0100
committer Mårten Kongstad <amhk@google.com> 2023-12-14 13:43:12 +0100
commitb7fc0d3e16ff850a20844cc6045b8ea00e3ca90e (patch)
tree52c90e2ee2a54aa0db68ccc1e1a3ad060e6a65f3
parent3f2432967b1797385bdb22e98ca7768ce40321f1 (diff)
aconfig: pass ownership of ProtoParsedFlag items to Rust codegen
Pass ownership of the ProtoParsedFlag iterator items to the Rust codegen: this removes the need for an explicit lifetime annotation. Bug: N/A Test: atest aconfig.test Change-Id: Ia37ff9f1238684ea31cda6be70acde54fdb04881
-rw-r--r--tools/aconfig/src/codegen/rust.rs15
-rw-r--r--tools/aconfig/src/commands.rs3
2 files changed, 11 insertions, 7 deletions
diff --git a/tools/aconfig/src/codegen/rust.rs b/tools/aconfig/src/codegen/rust.rs
index 04be93b96a..7aafddbea9 100644
--- a/tools/aconfig/src/codegen/rust.rs
+++ b/tools/aconfig/src/codegen/rust.rs
@@ -22,16 +22,16 @@ use crate::codegen;
use crate::commands::{CodegenMode, OutputFile};
use crate::protos::{ProtoFlagPermission, ProtoFlagState, ProtoParsedFlag};
-pub fn generate_rust_code<'a, I>(
+pub fn generate_rust_code<I>(
package: &str,
parsed_flags_iter: I,
codegen_mode: CodegenMode,
) -> Result<OutputFile>
where
- I: Iterator<Item = &'a ProtoParsedFlag>,
+ I: Iterator<Item = ProtoParsedFlag>,
{
let template_flags: Vec<TemplateParsedFlag> =
- parsed_flags_iter.map(|pf| TemplateParsedFlag::new(package, pf)).collect();
+ parsed_flags_iter.map(|pf| TemplateParsedFlag::new(package, &pf)).collect();
let has_readwrite = template_flags.iter().any(|item| item.readwrite);
let context = TemplateContext {
package: package.to_string(),
@@ -456,9 +456,12 @@ pub fn reset_flags() {
fn test_generate_rust_code(mode: CodegenMode) {
let parsed_flags = crate::test::parse_test_flags();
- let generated =
- generate_rust_code(crate::test::TEST_PACKAGE, parsed_flags.parsed_flag.iter(), mode)
- .unwrap();
+ let generated = generate_rust_code(
+ crate::test::TEST_PACKAGE,
+ parsed_flags.parsed_flag.into_iter(),
+ mode,
+ )
+ .unwrap();
assert_eq!("src/lib.rs", format!("{}", generated.path.display()));
assert_eq!(
None,
diff --git a/tools/aconfig/src/commands.rs b/tools/aconfig/src/commands.rs
index e437c02144..d60ebcfae0 100644
--- a/tools/aconfig/src/commands.rs
+++ b/tools/aconfig/src/commands.rs
@@ -219,7 +219,8 @@ pub fn create_rust_lib(mut input: Input, codegen_mode: CodegenMode) -> Result<Ou
let Some(package) = find_unique_package(&filtered_parsed_flags) else {
bail!("no parsed flags, or the parsed flags use different packages");
};
- generate_rust_code(package, filtered_parsed_flags.iter(), codegen_mode)
+ let package = package.to_string();
+ generate_rust_code(&package, filtered_parsed_flags.into_iter(), codegen_mode)
}
pub fn create_storage(caches: Vec<Input>, container: &str) -> Result<Vec<OutputFile>> {