rearrange code into iterator
This commit is contained in:
parent
d5b8c10264
commit
dfe899a7d8
24
src/main.rs
24
src/main.rs
@ -1491,18 +1491,19 @@ async fn compile(config:CompileConfig)->AResult<()>{
|
|||||||
stack.push(CompileStackInstruction::PopFolder);
|
stack.push(CompileStackInstruction::PopFolder);
|
||||||
//check if a folder exists with item.name
|
//check if a folder exists with item.name
|
||||||
if let Ok(mut dir)=tokio::fs::read_dir(folder.as_path()).await{
|
if let Ok(mut dir)=tokio::fs::read_dir(folder.as_path()).await{
|
||||||
let mut exist_names=std::collections::HashSet::new();
|
let mut exist_names:std::collections::HashSet<String>={
|
||||||
|
let item=dom.get_by_ref(item_ref).ok_or(anyhow::Error::msg("null child ref"))?;
|
||||||
|
//push existing dom children objects onto stack (unrelated to exist_names)
|
||||||
|
stack.extend(item.children().into_iter().map(|&referent|CompileStackInstruction::TraverseReferent(referent,None)));
|
||||||
|
//get names of existing objects
|
||||||
|
item.children().into_iter().map(|&child_ref|{
|
||||||
|
let child=dom.get_by_ref(child_ref).ok_or(anyhow::Error::msg("null child ref"))?;
|
||||||
|
Ok::<_,anyhow::Error>(sanitize(child.name.as_str()).to_string())
|
||||||
|
}).collect::<AResult<_>>()?
|
||||||
|
};
|
||||||
if let Some(dont)=blacklist{
|
if let Some(dont)=blacklist{
|
||||||
exist_names.insert(dont);
|
exist_names.insert(dont);
|
||||||
}
|
}
|
||||||
{
|
|
||||||
let item=dom.get_by_ref(item_ref).ok_or(anyhow::Error::msg("null child ref"))?;
|
|
||||||
for &child_ref in item.children(){
|
|
||||||
let child=dom.get_by_ref(child_ref).ok_or(anyhow::Error::msg("null child ref"))?;
|
|
||||||
let child_sans=sanitize(child.name.as_str()).to_string();
|
|
||||||
exist_names.insert(child_sans);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//generate children from folder contents UNLESS! item already has a child of the same name
|
//generate children from folder contents UNLESS! item already has a child of the same name
|
||||||
let mut join_set=tokio::task::JoinSet::new();
|
let mut join_set=tokio::task::JoinSet::new();
|
||||||
//I wish I could make the join_next() loop begin processing immediately,
|
//I wish I could make the join_next() loop begin processing immediately,
|
||||||
@ -1532,11 +1533,6 @@ async fn compile(config:CompileConfig)->AResult<()>{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//push existing dom children objects onto stack
|
|
||||||
{
|
|
||||||
let item=dom.get_by_ref(item_ref).ok_or(anyhow::Error::msg("null child ref"))?;
|
|
||||||
stack.extend(item.children().into_iter().map(|&referent|CompileStackInstruction::TraverseReferent(referent,None)))
|
|
||||||
};
|
|
||||||
//push child objects onto dom
|
//push child objects onto dom
|
||||||
//this is only able to begin after dir iterator is exhausted
|
//this is only able to begin after dir iterator is exhausted
|
||||||
while let Some(goober)=join_set.join_next().await{
|
while let Some(goober)=join_set.join_next().await{
|
||||||
|
Loading…
Reference in New Issue
Block a user