# `#[derive(accessors)]`: getters and setters for Rust (WIP)
**This is a work in progress!** The API is subject to change.
We use the new [macros 1.1][] support in nightly Rust to automatically
generate basic getters and setters. This is useful if you have a library
that exports a struct with lots of fields, but you don't want to make the
fields themselves public.
If you specify `#[setters(into)]`, you can generate setters which use
`Into` to automatically convert to the desired type.
```rust
#![feature(proc_macro)]
#[macro_use]
extern crate accessors;
#[derive(getters, setters)]
#[setters(into)]
struct Simple {
field: String,
}
fn main() {
let mut s = Simple { field: "hello".to_owned() };
println!("{}", s.field());
s.set_field("there");
}
```
Right now, you can only use this with nightly Rust, but David Tolnay has
laid out [a roadmap for how to get it working with stable Rust][stable].
[macros 1.1]: https://users.rust-lang.org/t/macros-and-syntax-extensions-and-compiler-plugins-where-are-we-at/7600
[stable]: https://github.com/dtolnay/syn/issues/38