-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Change FinalError builder pattern to take and give ownership of self #97
Conversation
This means that when you do `let e = FinalError::with_title("Foo").detail("Blah");`, `e` will be of type `FinalError` instead of `&mut FinalError`, thus you don't have to call `clone()` on it
That's convenient, I had a messy implementation of it at 493f42d, but closed the PR temporarily and forgot to make it again. |
src/error.rs
Outdated
Error::MissingArgumentsForCompression => FinalError::with_title("Could not compress") | ||
.detail("The compress command requires at least 2 arguments") | ||
.hint("You must provide:") | ||
.hint(" - At least one input argument.") | ||
.hint(" - The output argument.") | ||
.hint("") | ||
.hint("Example: `ouch compress image.png img.zip`"), | ||
Error::MissingArgumentsForDecompression => FinalError::with_title("Could not decompress") | ||
.detail("The compress command requires at least one argument") | ||
.hint("You must provide:") | ||
.hint(" - At least one input argument.") | ||
.hint("") | ||
.hint("Example: `ouch decompress imgs.tar.gz`"), | ||
Error::InternalError => FinalError::with_title("InternalError :(") | ||
.detail("This should not have happened") | ||
.detail("It's probably our fault") | ||
.detail("Please help us improve by reporting the issue at:") | ||
.detail(format!(" {}https://github.com/vrmiguel/ouch/issues ", cyan())), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same thing here that happened to me previously, the formatting is terrible because we dropped the unstable rustfmt features. (it's crazy that this rustfmt feature should be stable already, it's been like 30 months).
Could you add this back 588359e and run cargo fmt
on the project? I personally hate how multiline braces stay squished together without this config.
In rustfmt.toml
:
unstable_features = true
force_multiline_blocks = true
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When running cargo fmt
I get
Warning: can't set `force_multiline_blocks = true`, unstable features are only available in nightly channel.
Warning: can't set `unstable_features = true`, unstable features are only available in nightly channel.
Do we need to enable rust nightly just for this?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, that's what makes the warnings go away, but is it worth it using nightly just for rust fmt?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's ok to use nightly but it's probably because I always use it anyways, what do you think?
I don't know why rust-lang/rustfmt/issues/3374 is not stable yet.
I have been using nightly mainly because of rustfmt, eventually I experience with some feature.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It will probably be fine, we are not using any unstable features anyway so I don't think anything will break.
And yeah, it looks like this should be stable, you can probably open a pr yourself for it. I did it once for a method I needed and it was fairly simple process, I assume it will be similar for fmt
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Interesting, I'll try doing it later, maybe asking in the Zulip first will help, people are very active there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah zulip is a great place. I messed up git at some point and one of the core members personally took the time to help me clean it up
This means that when you do
let e = FinalError::with_title("Foo").detail("Blah");
,e
will be of typeFinalError
instead of&mut FinalError
, thus you don't have to callclone()
on it