summaryrefslogtreecommitdiffstats
path: root/third_party/rust/static_assertions/CHANGELOG.md
blob: 80d55075fc43d4220bf5726e441cefc0e555d139 (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
# Changelog [![Crates.io][crate-badge]][crate]
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog] and this project adheres to
[Semantic Versioning].

## [Unreleased]

## [1.1.0] - 2019-11-03
### Added
- `assert_impl_any!` macro
- `assert_impl_one!` macro
- `assert_trait_sub_all!` macro
- `assert_trait_super_all!` macro
- Frequently asked questions to `README.md`

### Fixed
- `assert_eq_size_val!`, `const_assert_eq!`, and `const_assert_ne!` to export
  their local inner macros. Not having this prevented them from working when
  `use`d or called directly via `static_assertions::macro!(...)`

### Removed
- Unused `_assert_obj_safe!` from pre-1.0

## [1.0.0] - 2019-10-02
### Added
- `assert_eq_align!` macro

### Removed
- **[breaking]** Labels from macros that needed them 🎉
  - Made possible by [`const _`] in Rust 1.37
- **[breaking]** `assert_impl!` macro

### Fixed
- `assert_fields!` now works for `enum` types with multiple variants

### Changed
- **[breaking]** `const_assert!` macro to only take one expression
  - Reasoning: when custom error messages are added in the future (via
    [`assert!`]), having the macro allow for multiple comma-separated
    expressions may lead to ambiguity
- **[breaking]** Trait assertions to use `Type: Trait` syntax
- **[breaking]** Field assertions to use `Type: field1, field2` syntax
- **[breaking]** Renamed `assert_{ne,eq}_type!` to `assert_type_{ne,eq}_all!`

## [0.3.4] - 2019-06-12
### Changed
- Aliased `assert_impl!` to `assert_impl_all!` and deprecated `assert_impl!`

### Added
- `assert_impl_all!` as replacement to `assert_impl!`
- `assert_not_impl_all!` and `assert_not_impl_any!` macro counterparts to
  `assert_impl_all!`

### Fixed
- `assert_eq_type!` now works with types involving lifetimes

## [0.3.3] - 2019-06-12
### Added
- `const_assert_ne!` macro counterpart to `const_assert_eq!`

### Fixed
- `assert_eq_type!` would pass when types can coerce via `Deref`, such as with
  `str` and `String`

## [0.3.2] - 2019-05-15
### Added
- A `assert_eq_type!` macro that allows for checking whether inputs are the same
  concrete type
- A `assert_ne_type!` macro for checking whether inputs all refer to different
  types

### Fixed
- `const_assert!` now only takes `bool` values whereas integer (or other type)
  values could previously be passed

## [0.3.1] - 2018-11-15
### Fixed
- Macros that refer to other internal macros can now be imported when compiling
  for Rust 2018 ([issue
  #10](https://github.com/nvzqz/static-assertions-rs/issues/10))

## [0.3.0] - 2018-11-14
### Changed
- Bumped minimum supported (automatically tested) Rust version to 1.24.0
- Moved message parameter for `assert_cfg!()` to last argument position, making
  it consistent with other macros

### Removed
- No need to use `macro!(label; ...)` syntax when compiling on nightly Rust and
  enabling the `nightly` feature flag

## [0.2.5] - 2017-12-12
### Changed
- `assert_eq_size_ptr` wraps its code inside of a closure, ensuring that the
  unsafe code inside never runs
- Clippy no longer warns about `unneeded_field_pattern` within `assert_fields`

### Added
- Much better documentation with test examples that are guaranteed to fail at
  compile-time

### Removed
- Removed testing features; compile failure tests are now done via doc tests

## [0.2.4] - 2017-12-11
### Removed
- Removed the actual call to `mem::transmute` while still utilizing it for size
  verification ([Simon Sapin], [#5])

### Added
- `assert_cfg` macro that asserts that the given configuration is set
- `assert_fields` macro to assert that a struct type or enum variant has a given
  field

### Fixed
- Allow more generics flexibility in `assert_impl`

## [0.2.3] - 2017-08-24
### Fixed
- Trailing commas are now allowed

### Removed
- Removed clippy warnings

## [0.2.2] - 2017-08-13
### Added
- Added `assert_impl` macro to ensure a type implements a given set of traits

## [0.2.1] - 2017-08-13
### Added
- Added `assert_obj_safe` macro for ensuring that a trait is object-safe

## [0.2.0] - 2017-08-12
### Added
- Added `assert_eq_size_ptr` macro

### Fixed
- Allow `assert_eq_size`, `const_assert`, and `const_assert_eq` in non-function
  contexts via providing a unique label [#1]

### Removed
- **[Breaking]** Semicolon-separated `assert_eq_size` is no longer allowed

## [0.1.1] - 2017-08-12
### Added
- Added `const_assert_eq` macro

## 0.1.0 - 2017-08-12

Initial release

[Simon Sapin]: https://github.com/SimonSapin

[`assert!`]: https://doc.rust-lang.org/stable/std/macro.assert.html
[`const _`]: https://github.com/rust-lang/rfcs/blob/master/text/2526-const-wildcard.md

[#1]: https://github.com/nvzqz/static-assertions-rs/issues/1
[#5]: https://github.com/nvzqz/static-assertions-rs/pull/5

[crate]:       https://crates.io/crates/static_assertions
[crate-badge]: https://img.shields.io/crates/v/static_assertions.svg

[Keep a Changelog]:    http://keepachangelog.com/en/1.0.0/
[Semantic Versioning]: http://semver.org/spec/v2.0.0.html

[Unreleased]: https://github.com/nvzqz/static-assertions-rs/compare/v1.1.0...HEAD
[1.1.0]: https://github.com/nvzqz/static-assertions-rs/compare/v1.0.0...v1.1.0
[1.0.0]: https://github.com/nvzqz/static-assertions-rs/compare/v0.3.4...v1.0.0
[0.3.4]: https://github.com/nvzqz/static-assertions-rs/compare/v0.3.3...v0.3.4
[0.3.3]: https://github.com/nvzqz/static-assertions-rs/compare/v0.3.2...v0.3.3
[0.3.2]: https://github.com/nvzqz/static-assertions-rs/compare/v0.3.1...v0.3.2
[0.3.1]: https://github.com/nvzqz/static-assertions-rs/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/nvzqz/static-assertions-rs/compare/v0.2.5...v0.3.0
[0.2.5]: https://github.com/nvzqz/static-assertions-rs/compare/v0.2.4...v0.2.5
[0.2.4]: https://github.com/nvzqz/static-assertions-rs/compare/v0.2.3...v0.2.4
[0.2.3]: https://github.com/nvzqz/static-assertions-rs/compare/v0.2.2...v0.2.3
[0.2.2]: https://github.com/nvzqz/static-assertions-rs/compare/v0.2.1...v0.2.2
[0.2.1]: https://github.com/nvzqz/static-assertions-rs/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/nvzqz/static-assertions-rs/compare/v0.1.1...v0.2.0
[0.1.1]: https://github.com/nvzqz/static-assertions-rs/compare/v0.1.0...v0.1.1