rust – Rusted days – a WolframAlfa port

I wrote a silly Rust program inspired by a WolframAlpha query. I know, that’s nothing serious, but if there’s anything that could be made more, well, proper Rust-like, I’d love to know! Of course, general feedback is welcomed too.

For starters, here’s my Cargo.toml:

(package)
name = "rusted-days"
version = "0.1.0"
authors = ("baduker")
edition = "2018"

(dependencies)
chrono = "0.4.19"

And the code:

use std::io;
use std::io::Write;
use chrono;
use chrono::{NaiveDateTime, DateTime, Utc, Datelike};

fn main() {
    let prompt = "What's your date (DD/MM/YYYY): ";
    let birthdate = input(prompt).expect("Something went wrong! o.O");
    show_interpretation(parse_birthdate(birthdate));
}

fn input(user_input: &str) -> io::Result<String> {
    print!("{}", user_input);
    io::stdout().flush()?;

    let mut buffer: String = String::new();
    io::stdin().read_line(&mut buffer)?;

    Ok(buffer.trim_end().to_owned())
}

fn parse_birthdate(birthdate: String) -> DateTime<Utc> {
    let naive_date = chrono::NaiveDate::parse_from_str(
        birthdate.as_str(), "%d/%m/%Y"
    ).unwrap();

    let naive_datetime: NaiveDateTime = naive_date
        .and_hms(0, 0, 0);

    let datetime_object = DateTime::<Utc>::from_utc(naive_datetime, Utc);
    datetime_object
}

fn show_interpretation(date: DateTime<Utc>) {
    println!("Input interpretation: days since {}", date.format("%A, %B %d, %Y"));

    let total_days = Utc::now() - date;
    println!("Result: {} days have rusted away", total_days.num_days());

    let years = Utc::now().year() - date.year();
    let months = Utc::now().month() - 1;
    let days = Utc::now().day() - date.day();

    println!("Timespan:n{} years, {} months, {} days", years, months, days);
    println!("{} weeks", total_days.num_weeks());
    println!("{:.2} years", total_days.num_days() as f32 / 365 as f32);
}

A sample output (you should get):

What's your date (DD/MM/YYYY): 01/01/1970
Input interpretation: days since Thursday, January 01, 1970
Result: 18565 days have rusted away
Timespan:
50 years, 9 months, 29 days
2652 weeks
50.86 years