'Clashing types, crossterm::Result and core::Result error[E0107]:

I know the issue is that I have two Result types from different libraries but can't find how to fix it.

[dependencies]
crossterm = "0.23"
time = "0.3.9"
tokio = { version = "1", features = ["full"] }
reqwest = { version = "0.11", features = ["blocking", "json"] }
use time::Instant;
use std::collections::HashMap;
use crossterm::{
    event::{self, Event, KeyCode, KeyEvent},
    Result,
};

pub fn read_char() -> Result<char> {
    loop {
        if let Event::Key(KeyEvent {
            code: KeyCode::Char(c),
            ..
        }) = event::read()?
        {
            return Ok(c);
        }
    }
}

fn main() -> Result<(), Box<dyn std::error::Error>> {

    let instant = Instant::now();

    let response = reqwest::blocking::get("https://httpbin.org/ip")?
        .json::<HashMap<String, String>>()?;

    let duration = instant.elapsed();    
    println!("ns = {:?}, response: {:#?}, ", duration.whole_nanoseconds(), response); 
 
    // Any key to continue
    println!("Press any key to continue:");
    println!("{:?}", read_char());

    Ok(())
}

Gives the error:

error[E0107]: this type alias takes 1 generic argument but 2 generic arguments were supplied       
  --> src\main.rs:20:14
   |
20 | fn main() -> Result<(), Box<dyn std::error::Error>> {
   |              ^^^^^^     -------------------------- help: remove this generic argument
   |              |
   |              expected 1 generic argument

How do I fix this? I have searched but am likely looking for incorrect terms e.g. namespace alias and core::Result error[E0107] is not really helping.

I have tried this without success:

fn main() -> core::Result<(), Box<dyn std::error::Error>> {


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source