nfde 0.0.3

Rust bindings for Native File Dialog Extended
Documentation
# nfde-rs


This crate contains Rust bindings for [Native File Dialog Extended (NFDe)](https://github.com/btzy/nativefiledialog-extended), a small library for invoking native file dialogs on Windows, MacOS, and Linux.

It supports four kinds of dialogs:
- Open file
- Open multiple files (under development, does not work yet)
- Save file
- Pick folder

This crate should be regarded as **experimental** for now — while upstream NFDe is stable, these Rust bindings are still in flux.

For more information and screenshots, please see the upstream [NFDe](https://github.com/btzy/nativefiledialog-extended) repository.

## Dependencies


The following dependencies need to be installed on your machine manually (Cargo will not install it for you):
- CMake
- A decent C/C++ compiler (MSVC, Clang, or GCC are known to work)

You might also need to place CMake on your PATH so that the build script can find it.

## Basic Usage


```rust
use nfde::*;

fn main() -> Result<(), nfde::Error> {
    // Initialize NFD... NFD will be automatically deinitialized when this object is destroyed
    let nfd = Nfd::new()?;

    // Show the dialog...
    // Note: .show() will block until the dialog is closed
    // You can also set a default path using .default_path(Path)
    let res = nfd
        .open_file()
        .add_filter("Source code", "c,cpp,cc")?
        .add_filter("Headers", "h,hpp")?
        .show();

    match res {
        DialogResult::Ok(path_buf) => {
            println!("Success!");
            println!("Path: {}", path_buf.display());
        }
        DialogResult::Cancel => {
            println!("User pressed cancel.");
        }
        DialogResult::Err(error_str) => {
            println!("Error: {}", error_str);
        }
    };

    Ok(())
}
```

See the `/examples` directory for more examples.