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
This commit is contained in:
@@ -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,8 +456,11 @@ 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)
|
||||
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!(
|
||||
|
@@ -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>> {
|
||||
|
Reference in New Issue
Block a user