Since the `regex` crate uses interior mutability and a bit of synchronization, it follows that marker traits like `Send`, `Sync`, `UnwindSafe` and `RefUnwindSafe` are quite relevant and can change based on internal implementation details. #749 for example, removed the `thread_local` dependency and got a bit more rigorous about these marker traits on the main `Regex`/`RegexSet` types, but stopped there. It turns out other types are impacted too. @kangalioo noted that, for example, `Send` [was _not_ implemented on the `CaptureMatches` iterator in `regex 1.3.9`](https://docs.rs/regex/1.3.9/regex/struct.CaptureMatches.html#impl-Send), but it [_is_ now implemented in `regex 1.4.5`](https://docs.rs/regex/1.4.5/regex/struct.CaptureMatches.html#impl-Send). I'm actually not sure why it wasn't implemented before. The `regex` crate doesn't use any non-Send stuff, so I'm not sure where that was coming from. I haven't investigated yet. Either way, this is a compatibility hazard. Going from `!Send` to `Send` is fine, but it seems just as likely that we could regress too. The only way I can think to solve this is to assert expected marker traits for all public API types. It seems kind of absurd and tedious, but I don't have any better ideas.