summaryrefslogtreecommitdiffstats
path: root/vendor/derive_builder/CHANGELOG.md
blob: ca0bd9dd066fdc954e027a8af1ec5a6b309b5e92 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
# Change Log
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).

## [0.12.0] - 2022-11-28
- Produce error when `default` is used with `field(type = "...")` rather than silently ignoring `default` #269
- Add support for `crate = "..."` to support re-export scenarios #274

## [0.11.2] - 2022-04-20
- Allow restricted visibility using `vis = "..."` for builders, build methods, setters, and fields #247
- Allow specifying the type of a builder field using `#[builder(field(type = "..."))]` #246
- Allow specifying how a builder field is built using `#[builder(field(build = "..."))]` #246
- Update `darling`, `proc-macro2`, `syn`, and `quote` dependencies #250

## [0.11.1] - 2022-03-16
- Forward `allow` and `cfg` attributes from the deriving struct to the builder and its impl block #222
- Support passing attributes to the builder struct using `#[builder_struct_attr(...)]`
- Support passing attributes to the builder struct's inherent `impl` block using `#[builder_impl_attr(...)]`

## [0.11.0] - 2022-03-15
- Support shorthand and long-form collection setters; `#[builder(setter(each = "..."))]` and `#[builder(setter(each(name = "...")))]` #234
- Allow collection setters to be generic over `Into` using `#[builder(setter(each(name = "...", into)))] #234 and #214
- Allow specifying attributes for builder fields and setters using `#[builder_field_attr(...)]` and `#[builder_setter_attr(...)]` #237

## [0.10.2] - 2021-04-21
- Don't reference `derive_builder_core` from `derive_builder` #206

## [0.10.1] - 2021-04-20
- Don't reference `std` in no_std contexts #204

## [0.10.0] - 2021-03-31
- Requires Rust 1.40.0 or newer (was 1.37.0) #169
- Logging feature is removed #177
- Type parameters no longer have the `Default` bound #178
- Make most of `derive_builder_core` private #189
- Add `setter(each = "name")` for extension of collection-like fields #199

## [0.10.0-alpha] - 2021-01-13
- Requires Rust 1.40.0 or newer (was 1.37.0) #169
- Logging feature is removed #177
- Type parameters no longer have the `Default` bound #178
- Make most of `derive_builder_core` private #189

## [0.9.0] - 2019-11-07
- Add `setter(custom)` to allow implementing a custom setter #154

## [0.8.1] - 2019-10-30
- Increase `darling` dependency to 0.10.2 #153

## [0.8.0] - 2019-09-30
- Increase dependency versions to latest #148
- Requires Rust 1.37.0 or newer (was 1.18.0) #148
- Increase version of derive_builder_core crate to match crate's public interface

## [0.7.2] - 2019-05-22
- Add `strip_option` flag for setter #116

## [0.7.1] - 2019-02-05
- Updated `darling` to `0.8.5` and switched to better errors

## [0.7.0] - 2018-10-22

### Breaking Changes
- Updated all dependencies to latest versions #138

## [0.6.0] - 2018-09-04

### Breaking Changes
- Requires Rust 1.18.0 or newer (was 1.15.0) #120
- Updated to `syn` 0.13.10. #120
- Updated to `quote` 0.5.2 #120
- Removed support for deprecated attributes #120

### Changed
- `Clone` is no longer derived on a builder using the owned pattern unless it
  has a field override that uses the mutable/immutable pattern. #97
- Using `#[builder(private)]` at the struct level will now emit a private builder. #99

### Added
- Use `build_fn(private)` to generate a build method only accessible within the mod scope #89

### Internal Changes
- Rewrote options parser using `darling` 0.6.3 #120

## [0.5.2] - 2018-05-31

### Fixed
- Generated code for structs with type parameters and struct-level defaults now compiles #127

## [0.5.1] - 2017-12-16

### Changed
- The standard library `collections` crate was merged into `alloc`
  ([PR](https://github.com/rust-lang/rust/pull/42648)).
  Correspondingly when using this crate within a crate with `#![no_std]` you must
  use `#![feature(alloc)] extern crate alloc` in your crate,
  was `#![feature(collections)] extern crate collections`.

### Fixed
- `unused_mut` lint (variable does not need to be mutable) #104

## [0.5.0] - 2017-06-30

### Changed

- `#[builder(default)]` and `#[builder(default = "...")]` at the struct level
  change their behaviour and construct a default value for the struct,
  instead of all fields individually.
- builder fields are no longer public by default; Fields can be explicitly
  made public at the struct or field level using the new attribute:
  `#[builder(field(public))]`

### Removed
- removed previously deprecated syntax `#[builder(setter_prefix = "with")]`,
  please use `#[builder(setter(prefix = "with"))]` instead

## [0.4.7] - 2017-04-29

### Fixed
- for generic structs, apply the `T: Clone` type bound in builder impl
  instead of struct definition #91
- only emit the `T: Clone` type bound when it is actually needed, i.e.
  mutable/immutable pattern, but not owned pattern.

## [0.4.6] - 2017-04-26

### Added
- pre-build validation via `#[builder(build_fn(validate = "path::to::fn"))]`

## [0.4.5] - 2017-04-25

### Added
- customize setter names via `#[builder(setter(name = "..."))]`
- customize build_fn name via `#[builder(build_fn(name = "..."))]`
- suppress build method generation via `#[builder(build_fn(skip))]`
- derive additional traits via `#[builder(derive(Trait1, Trait2, ...))]`
- set field visibility separate from setter visibility via
  `#[builder(field(private))]` at the field or struct level

### Deprecated
- builder fields will no longer be public by default in 0.5.0; relying on this
  will now emit a deprecation warning. Fields can be explicitly made public at
  the struct or field level using the new `#[builder(field(public))]`
  attribute. To squelch this warning and opt-into the new behaviour, use the
  `private_fields` crate feature or explicitly set field visibility at the
  struct level.

## [0.4.4] - 2017-04-12

### Added
- try_setters, e.g. `#[builder(try_setter)]`. These setters are exposed
  alongside the normal field setters and allow callers to pass in values which
  have fallible conversions to the needed type through `TryInto`. This
  attribute can only be used on nightly when `#![feature(try_from)]` is
  declared in the consuming crate's root; this will change when Rust issue
  [#33417](https://github.com/rust-lang/rust/issues/33417) is resolved.

## [0.4.3] - 2017-04-11

### Fixed
- `setter(skip)` honors struct-inherited and explicit defaults #68

## [0.4.2] - 2017-04-10

### Fixed
- support generic references in structs #55
- support `#![no_std]` #63

## [0.4.1] - 2017-04-08

### Deprecated
- `#[builder(default)]` and `#[builder(default = "...")]` at the struct level will
  change their behaviour in 0.5.0 and construct a default value for the struct,
  instead of all fields individually. To opt into the new behaviour and squelch
  this deprecation warning you can add the `struct_default` feature flag.

## [0.4.0] - 2017-03-25

### Added
- skip setters, e.g. `#[builder(setter(skip))]`
- default values, e.g. `#[builder(default = "42")]` or just `#[builder(default)]`

### Changed
- deprecated syntax `#[builder(setter_prefix = "with")]`,
  please use `#[builder(setter(prefix = "with"))]` instead
- setter conversions are now off by default, you can opt-into via
  `#[builder(setter(into))]`
- logging is behind a feature flag. To activate it, please add
  `features = ["logging"]` to the dependency in `Cargo.toml`. Then you can use
  it like: `RUST_LOG=derive_builder=trace cargo test`.

### Fixed
- use full path for result #39
- support `#[deny(missing_docs)]` #37
- support `#![no_std]` via `#[builder(no_std)]` #41

## [0.3.0] - 2017-02-05

Requires Rust 1.15 or newer.

### Added
- different setter pattern, e.g. `#[builder(pattern = "immutable")]`
- private setters, e.g. `#[builder(private)]`
- additional debug info via env_logger, e.g.
  `RUST_LOG=derive_builder=trace cargo test`
- prefixes, e.g. `#[builder(setter_prefix = "with")]`
- field specific overrides
- customize builder name, e.g. `#[builder(name = "MyBuilder")]`

### Changed
- migration to macros 1.1
- migration to traditional builder pattern
  i.e. seperate `FooBuilder` struct to build `Foo`
=> please refer to the new docs

### Fixed
- missing lifetime support #21

## [0.2.1] - 2016-09-24

### Fixed
- preserve ordering of attributes #27

## [0.2.0] - 2016-08-22
### Added
- struct fields can be public
- struct fields can have attributes
- the following struct-attributes are copied to the setter-method
 - `/// ...`
 - `#[doc = ...]`
 - `#[cfg(...)]`
 - `#[allow(...)]`

### Changed
- setter-methods are non-consuming now -- breaking change
- setter-methods are public now

### Fixed
- automatic documentation does not work #16

## [0.1.0] - 2016-08-07
### Added
- first implementation
 - generate setter methods
 - support for generic structs

[Unreleased]:  https://github.com/colin-kiegel/rust-derive-builder/compare/v0.5.1...HEAD
[0.5.1]:  https://github.com/colin-kiegel/rust-derive-builder/compare/v0.5.0...v0.5.1
[0.5.0]:  https://github.com/colin-kiegel/rust-derive-builder/compare/v0.4.7...v0.5.0
[0.4.7]:  https://github.com/colin-kiegel/rust-derive-builder/compare/v0.4.6...v0.4.7
[0.4.6]:  https://github.com/colin-kiegel/rust-derive-builder/compare/v0.4.5...v0.4.6
[0.4.5]:  https://github.com/colin-kiegel/rust-derive-builder/compare/v0.4.4...v0.4.5
[0.4.4]:  https://github.com/colin-kiegel/rust-derive-builder/compare/v0.4.3...v0.4.4
[0.4.3]:  https://github.com/colin-kiegel/rust-derive-builder/compare/v0.4.2...v0.4.3
[0.4.2]:  https://github.com/colin-kiegel/rust-derive-builder/compare/v0.4.1...v0.4.2
[0.4.1]:  https://github.com/colin-kiegel/rust-derive-builder/compare/v0.4.0...v0.4.1
[0.4.0]:  https://github.com/colin-kiegel/rust-derive-builder/compare/v0.3.0...v0.4.0
[0.3.0]:  https://github.com/colin-kiegel/rust-derive-builder/compare/v0.2.1...v0.3.0
[0.2.1]:  https://github.com/colin-kiegel/rust-derive-builder/compare/v0.2.0...v0.2.1
[0.2.0]:  https://github.com/colin-kiegel/rust-derive-builder/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/colin-kiegel/rust-derive-builder/tree/v0.1.0