refactor: remove many unwrap calls

This commit is contained in:
Nova
2023-01-25 11:50:53 -05:00
parent 41ede661f7
commit 742780e34e
26 changed files with 163 additions and 133 deletions

View File

@@ -1,6 +1,6 @@
use crate::core::client::Client;
use super::Node;
use crate::core::client::Client;
use color_eyre::eyre::{ensure, Result};
use std::sync::{Arc, Weak};
#[derive(Debug, Default, Clone)]
@@ -24,22 +24,23 @@ impl Alias {
name: &str,
original: &Arc<Node>,
info: AliasInfo,
) -> Option<Arc<Node>> {
let node_free = client
.scenegraph
.get_node(&(parent.to_string() + "/" + name))
.is_none();
) -> Result<Arc<Node>> {
ensure!(
client
.scenegraph
.get_node(&(parent.to_string() + "/" + name))
.is_none(),
"Node already exists"
);
node_free.then(|| {
let node = Node::create(client, parent, name, true).add_to_scenegraph();
let alias = Alias {
node: Arc::downgrade(&node),
original: Arc::downgrade(original),
info,
};
let alias = original.aliases.add(alias);
let _ = node.alias.set(alias);
node
})
let node = Node::create(client, parent, name, true).add_to_scenegraph()?;
let alias = Alias {
node: Arc::downgrade(&node),
original: Arc::downgrade(original),
info,
};
let alias = original.aliases.add(alias);
let _ = node.alias.set(alias);
Ok(node)
}
}