Rust Command Line Argument Parsing (A Better Way With Clap)

  Рет қаралды 31,356

Code to the Moon

Code to the Moon

Күн бұрын

Пікірлер: 45
@barlingo7060
@barlingo7060 2 жыл бұрын
Great tutorial, One minor thing it's that you should specify that at the toml file you need to specify the derive feature to be able to use it: [dependencies] clap = { version = "3.2.8", features = ["derive"] }
@codetothemoon
@codetothemoon 2 жыл бұрын
thanks and great point! I should have definitely included this.
@feha92
@feha92 11 ай бұрын
@@codetothemoon Should honestly have showed the entire toml. And I can't figure out what is the difference between the macros "clap" (which you used) and "command" (which the docs suggest using)
@lauralegerofficial
@lauralegerofficial 9 ай бұрын
Thank you! I was wondering why my compiler was screaming when I did everything he said.
@raediantz3192
@raediantz3192 2 жыл бұрын
What perfect timing. I've been working on a CLI application and basing my argument parsing off one of the projects in the rust book. This looks much nicer to work with, even if I don't need nested arguments!
@codetothemoon
@codetothemoon 2 жыл бұрын
I agree, it's hard to make a case for not using Clap, even for smaller projects!
@richardlyon67
@richardlyon67 Жыл бұрын
Excellent - thank you! I couldn't for the life of me figure out how to implement subcommands using the derive framework, and the builder method (the ony example I could find) produces code I find dense and hard to read. Perfect.
@schlopping
@schlopping Жыл бұрын
A crate "clap" for a language where the mascot is a crab is hilarious LOL
@SharunKumar
@SharunKumar Жыл бұрын
*panic*
@learntry9074
@learntry9074 8 ай бұрын
Thank you. Your all vids are gem.
@codetothemoon
@codetothemoon 8 ай бұрын
thanks for the kind words!
@Cookiekeks
@Cookiekeks Жыл бұрын
The sped up typing looks really satisfying, though I bet it was alot of work to do in video editing
@codetothemoon
@codetothemoon Жыл бұрын
Yeah it definitely makes editing take longer, but until I can type at 200wpm I don't want to make everyone sit there and watch me type 😎
@oglothenerd
@oglothenerd Жыл бұрын
This tutorial is a gem in the dust! I love how you are the one who actually made a useful tutorial! Thank you!
@cjl2553
@cjl2553 2 жыл бұрын
This was an amazing video, short sweet and to the point. Very informative as well. I would say for future reference, you should probably show the set up of the project, even if it's brief. For example, someone really new to rust might not know that you actually have to add "features = ["derive"]" to their cargo.toml to work correctly. Other than that, great video!
@codetothemoon
@codetothemoon 2 жыл бұрын
Thanks Cheryl, glad you found it valuable. Great point about covering project setup - feature=["derive"] is a big gotcha!
@ashutosh.sharma
@ashutosh.sharma 9 ай бұрын
I have a question: why create `struct UserCommand`? why not just create an make UserCommand as an enum. That extra stuct then enum step seems unnecessary. Please let me know your thoughts
@fromgodd
@fromgodd 2 жыл бұрын
Great tutorial & crate. Thanks for explanations!
@codetothemoon
@codetothemoon 2 жыл бұрын
Thanks, glad you found it valuable!
@webblocksapp
@webblocksapp Жыл бұрын
Thxs for this explanation, it clarified me a lot how to define a CLI in rust. I would like to know how we can have bi-directional communication with the rust app and the command line. Could you please do an example of stdin / stdout with rust?
@sohn7767
@sohn7767 2 жыл бұрын
I love this crate.
@codetothemoon
@codetothemoon 2 жыл бұрын
Me too!
@DavidAlsh
@DavidAlsh 6 ай бұрын
How do you allow for empty values? I want to use a single letter flag set to true when present and false when absent, but also allow for -z true and -z false
@HAL-9000-
@HAL-9000- 2 жыл бұрын
Nice 👌
@codetothemoon
@codetothemoon 2 жыл бұрын
Thanks!!
@biocuts
@biocuts 2 жыл бұрын
Greate tutorial. For clap - can you elaborate on when to use the derive mechanism and when to use app creation?
@codetothemoon
@codetothemoon 2 жыл бұрын
Thanks! By app creation do you mean the builder API? If so my understanding is that it's mostly a personal preference thing, though it appears they have very slight differences in capability docs.rs/clap/latest/clap/#selecting-an-api
@biocuts
@biocuts 2 жыл бұрын
@@codetothemoon Yes, that's what I meant. Thanks!
@beholdthegoober
@beholdthegoober 3 ай бұрын
Any way to make multiple names for the same command, like a semantics thing? say i wanted to create a file and wanted to accept if the command was either 'create' or 'touch'. maybe not important but would like to do it for fun or personal preference..
@adeoyeadefemio.8859
@adeoyeadefemio.8859 2 жыл бұрын
Great tutorial. Could you please share the link to the code repository :)
@codetothemoon
@codetothemoon 2 жыл бұрын
Sure here it is! github.com/Me163/youtube/tree/main/Rustflix
@adeoyeadefemio.8859
@adeoyeadefemio.8859 2 жыл бұрын
@@codetothemoon thanks
@diegofernandorojas3701
@diegofernandorojas3701 Жыл бұрын
Hi, thanks for this content. Really really helpful for me. I've been following your implementation of the Rustflix project and I'd like to serialize to JSON the values of `CreateView` or `UpdateVideo` structs (just to mention an example). I have tried several ways but have had no luck. Any hint? Thanks in advance :)
@arthurfleischman
@arthurfleischman 2 жыл бұрын
but now, how to get the values?
@codetothemoon
@codetothemoon 2 жыл бұрын
the struct returned by RustflixArgs::parse() should be the struct you applied #[derive(Parser)] to, so you can just pull the values from there! I definitely glossed over this a bit too quickly at the end of the video.
@mrlectus
@mrlectus Жыл бұрын
How to get help menu if no argument is passed
@OdilonNelson
@OdilonNelson 9 ай бұрын
Annotate your struct with #[command(arg_required_else_help = true)]
@guvp
@guvp Жыл бұрын
Also, would be good if you can provide at least a Github gist of your codes lol, that should be basic.
@codetothemoon
@codetothemoon Жыл бұрын
github.com/Me163/youtube
@iuiz
@iuiz Жыл бұрын
This was hard to follow, as you always scroll away, even if there is no need to. Otherwise solid content.
@thedracon4318
@thedracon4318 7 ай бұрын
You kinda look like a blond Elon Musk
@codetothemoon
@codetothemoon 7 ай бұрын
hah! Sadly, I haven't slung quite as many things in orbit
@sethrollins4448
@sethrollins4448 5 ай бұрын
I can’t unsee it
@alexandernagel5400
@alexandernagel5400 2 ай бұрын
The tutorial is great and helpful. But this American habit /accent to raise the voice at the end of a sentence to make it sound like a question is annoying. This sounds so confusing for a non-english speaker. You have to listen twice to understand the sentences.
@codetothemoon
@codetothemoon 2 ай бұрын
thanks for the feedback! my aim is to make these things as accessible to the widest audience possible, and feedback like this helps me get better at doing so.
Rust & SQL Databases (With Diesel)
15:00
Code to the Moon
Рет қаралды 63 М.
Parse Rust CLI Args With Clap 🦀 Rust Tutorial
54:03
Trevor Sullivan
Рет қаралды 11 М.
An Unknown Ending💪
00:49
ISSEI / いっせい
Рет қаралды 51 МЛН
Самое неинтересное видео
00:32
Miracle
Рет қаралды 2,7 МЛН
From Small To Giant Pop Corn #katebrush #funny #shorts
00:17
Kate Brush
Рет қаралды 52 МЛН
when you have plan B 😂
00:11
Andrey Grechka
Рет қаралды 64 МЛН
Mocking Rust 🤪 and Testing 🧪
11:58
Code to the Moon
Рет қаралды 38 М.
Why does this Rust program leak memory?
35:24
fasterthanlime
Рет қаралды 57 М.
Rust Tests Itself (kind of!)
11:41
No Boilerplate
Рет қаралды 77 М.
Ace Rust Macros ♠️ the declarative kind
14:06
Code to the Moon
Рет қаралды 39 М.
Rust's Alien Data Types 👽 Box, Rc, Arc
11:54
Code to the Moon
Рет қаралды 145 М.
Rust Powered Database SurrealDB (It's Pretty Ambitious)
11:28
Code to the Moon
Рет қаралды 109 М.
Improving Python Console Output With Rich
19:37
Real Python
Рет қаралды 9 М.
This Makes Golang CLI Development So MUCH Better
7:34
Melkey
Рет қаралды 24 М.
you need to build a RUST desktop app!!
27:21
Travis Media
Рет қаралды 312 М.
How to -10x Engineer Correctly
22:22
ThePrimeTime
Рет қаралды 507 М.
An Unknown Ending💪
00:49
ISSEI / いっせい
Рет қаралды 51 МЛН