xch 0.1.1

A CLI utility and rust crate to atomically swap the content of two paths.
# xch

A Rust library and CLI program to exchange the content of paths.

Current release: 0.1.0

*Note: Currently only runs on windows or on Linux using nightly rust*

## CLI

The program `xch` can be used to e**XCH**ange the content of two paths. 

### Install
`cargo install xch`

### Usage
```bash
xch first/path second/path
```

After the program call, `first/path` will point to the previous content of `second/path` and vice versa. 
This not only works for files but also for directories or one file and a directory.

All changes are made atomically, you can never observe one change without the other (e.g. 
if `first/path` points to the old content of `second/path`, `second/path` also points to the
old content of `first/path`).

## Crate

The functionality is also available as a crate. Add `xch = "0.1.0"` to your `Cargo.toml`.
Then you need to import the crate to your code
```Rust
extern crate libxch;
```
Then you can start exchanging the content of files
```Rust
if let Err(e) = libxch::xch("file1", "path/to/file2") {
    // Error handling here
}
```

## License

Licensed under [MIT license](./LICENSE)

## Future

Here are some missing features that will hopefully be added in the future:
- Linux support
- MacOS support
- *BSD support