fix(protocol): fix the default From<:T Diagnostic> implementation to cover more cases.

This commit is contained in:
Kat Marchán 2021-08-05 13:24:37 -07:00
parent 40133a368d
commit 781a51f037
No known key found for this signature in database
GPG Key ID: AEB529C08A3C7E9E
1 changed files with 13 additions and 1 deletions

View File

@ -39,12 +39,24 @@ pub trait Diagnostic: std::error::Error {
impl std::error::Error for Box<dyn Diagnostic> {}
impl<T: Diagnostic + 'static> From<T> for Box<dyn Diagnostic> {
impl<T: Diagnostic + Send + Sync + 'static> From<T> for Box<dyn Diagnostic + Send + Sync + 'static> {
fn from(diag: T) -> Self {
Box::new(diag)
}
}
impl<T: Diagnostic + Send + Sync + 'static> From<T> for Box<dyn Diagnostic + Send + 'static> {
fn from(diag: T) -> Self {
Box::<dyn Diagnostic + Send + Sync>::from(diag)
}
}
impl<T: Diagnostic + Send + Sync + 'static> From<T> for Box<dyn Diagnostic + 'static> {
fn from(diag: T) -> Self {
Box::<dyn Diagnostic + Send + Sync>::from(diag)
}
}
/**
Protocol for [Diagnostic] handlers, which are responsible for actually printing out Diagnostics.