multivalue
change yssntpwplpwuvumrzmvkvorlsromsmuq
commit 6bc8795839451a608eec90157d397a7311410404
author Alpha Chen <alpha@kejadlen.dev>
date
parent vqpkxznz
diff --git a/src/main.rs b/src/main.rs
index 8e3cdb9..3235e75 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -96,20 +96,22 @@ struct Symlink {
 
 impl Symlink {
     fn new(args: LuaMultiValue) -> Result<Self> {
-        let args: Vec<String> = args
-            .into_iter()
-            .map(|v| {
-                v.to_string()
-                    .map_err(|e| anyhow!("Failed to convert arg to string: {}", e))
-            })
-            .collect::<Result<Vec<_>>>()?;
-
-        if args.len() != 2 {
+        let args_vec: Vec<LuaValue> = args.into_iter().collect();
+
+        if args_vec.len() != 2 {
             bail!(FrorkError::InvalidSymlinkArgs);
         }
+
+        let target = args_vec[0]
+            .to_string()
+            .map_err(|_| anyhow!("Target must be a string"))?;
+        let source = args_vec[1]
+            .to_string()
+            .map_err(|_| anyhow!("Source must be a string"))?;
+
         Ok(Self {
-            target: expand_tilde(&args[0]),
-            source: expand_tilde(&args[1]),
+            target: expand_tilde(&target),
+            source: expand_tilde(&source),
         })
     }
 }