Repository: google/argh (rust)

Issue:
Newline is missing in error output
I tried this:
```rust
#[derive(Clone, argh::FromArgs)]
#[argh(description = "...")]
struct Options {
    #[argh(option, description = "...")]
    bind_to: SocketAddr,
    #[argh(positional)]
    dir: PathBuf,
}
```

When I ran the program with no argument, it printed:
```
Required positional arguments not provided:
    dirRequired options not provided:
    --bind-to
```

The second line of the output was unreadable. I expected the output to be:
```
Required positional arguments not provided:
    dir
Required options not provided:
    --bind-to
```

It seems that https://github.com/google/argh/blob/507087f5367f47fb18a013f85d24b195d6c20bc3/src/lib.rs#L536-L538
is missing in https://github.com/google/argh/blob/507087f5367f47fb18a013f85d24b195d6c20bc3/src/lib.rs#L527-L529.

Pull request description:
Add missing newline to error message
 If both positional and optional args are present the error message was missing a newline.

Closes #45.

Patch:
diff --git a/src/lib.rs b/src/lib.rs
index c553e7f..ae16a6a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -525,6 +525,9 @@ impl MissingRequirements {
         }
 
         if !self.options.is_empty() {
+            if !self.positional_args.is_empty() {
+                output.push_str("\n");
+            }
             output.push_str("Required options not provided:");
             for option in &self.options {
                 output.push_str(NEWLINE_INDENT);


Test patch:
diff --git a/tests/lib.rs b/tests/lib.rs
index 9b72714..a19ed5a 100644
--- a/tests/lib.rs
+++ b/tests/lib.rs
@@ -304,6 +304,37 @@ Options:
         );
     }
 
+    #[derive(FromArgs, Debug, PartialEq)]
+    /// Woot
+    struct WithOption {
+        #[argh(positional)]
+        /// fooey
+        a: String,
+        #[argh(option)]
+        /// fooey
+        b: String,
+    }
+
+    #[test]
+    fn mixed_with_option() {
+        assert_output(
+            &["first", "--b", "foo"],
+            WithOption {
+                a: "first".into(),
+                b: "foo".into(),
+            },
+        );
+
+        assert_error::<WithOption>(
+            &[],
+            r###"Required positional arguments not provided:
+    a
+Required options not provided:
+    --b
+"###,
+        );
+    }
+
     #[derive(FromArgs, Debug, PartialEq)]
     /// Woot
     struct WithSubcommand {