pub trait LanguageServerCommand<P>:
Send
+ Sync
+ 'static{
type Future: Future<Output = Result<Self::Output, ServerError<Self::Error>>> + Send + 'static;
type Output: Serialize;
type Error: Serialize;
// Required method
fn execute(&self, param: P) -> Self::Future;
// Provided method
fn invalid_params(&self) -> Option<Self::Error> { ... }
}