While working on #220, I was surprised to see CrashLoggingDataProvider as a protocol when the role it has in the code is that of a value type carrying configuration values.
If there's no external constraint on it being a protocol, I propose to convert it into a struct.
Having it as a struct would mean clients can create an instance directly, without the cruft of implementing a custom type conforming to it.