Fetching and storing new reddit posts
The pattern

match some_result {
    Ok(v)  =&gt; v,
    Err(e) =&gt; panic!("message: {:?}", e),
}


is exactly what expect does for you. We can get a somewhat leaner main if we use that instead:

fn main() {
    let self_posts = get_posts(20).expect("Failed to fetch new posts");

    let redis_client =
        redis::Client::open("redis://127.0.0.1").expect("Unable to create the store client");

    let redis_conn = redis_client
        .get_connection()
        .expect("Unable to retrieve the connection to the store");

    match add_posts_to_store(redis_conn, self_posts) {
        Ok(n) =&gt; println!("Stored {} posts.", n),
        Err(e) =&gt; panic!("Could not store posts: {:?}", e),
    };
}


Somewhat, because the error messages lead to long lines and rustfmt doesn't like that.

However, keep in mind that while panic is great for developers, it's a system that should be used for unrecoverable errors, bugs that you cannot handle or anticipate. When you panic!, you generate an error message that's helpful for programmers, but not for users:

thread 'main' panicked at 'Unable to retrieve the connection to the store: .......', src/main.rs:.....
note: Run with `RUST_BACKTRACE=1` for a backtrace.


Instead, stderr should get used. The Rust Book contains a section for error handling in its example I/O project which you can use for inspiration. But if you never intend to distribute your reddit/redis updater, feel free to use panic! or .expect("...").

Other than that, the turbofish syntax at collect::&lt;Vec&lt;Post&gt;&gt;() isn't necessary, since its inferred by the return type. Also, you can traverse p in posts instead of &amp;p in &amp;posts since you don't want to use the Vec afterwards, you just have to save the posts.len() beforehand.

However, you probably want to use store : &amp;redis::Connection in add_posts_to_store if you want to reuse the connection. Also, you usually want to derive some of the standard traits, for example Debug. Again, that depends on whether you will use your structs in another context, but if you ever publish your package it's very recommended to derive all possible standard traits (Debug, PartialEq, Eq, PartialOrd, Ord, Clone and maybe Hash in your case).