What's the syntax for using Some as function? [closed] - rust

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 3 months ago.
Improve this question
self.0.iter().map(Some)
https://github.com/zcash/halo2/blob/main/halo2_proofs/src/circuit/floor_planner/v1/strategy.rs#L71
I tried to google some keywords, but didn't find any result.

There is some confusion, so let's clarify things. Some is not an enum (as you said in a comment), it's part of an enum, that is, the Option<T> type was defined as
enum Option<T> {
Some(T),
None,
}
Here, Some(T) is called a variant of this enum. However, for convenience, the compiler will produce a function with the same name, with the same signature, that simply produces that variant. That is, Some: fn(T) -> Option<T>. Similarly, the None variant produces a constant of the same name.

Related

What is the best way to write a File given a Path instance? [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 1 year ago.
Improve this question
If you have an instance of std::path::Path and want to write a text File to that path, what is the best way? I can call .display() to get a string and then use File I/O methods that take strings as file names, but is there a preferred way that involves something related to Path, PathBuf, etc? The .display() method is said to be lossy due to encoding issues so I would prefer a means that did not sacrifice generality.
You can use std::fs::write. The function has following signature, so it will work with Path objects too.
pub fn write<P: AsRef<Path>, C: AsRef<[u8]>>(path: P, contents: C) -> Result<()>

Use println! macro for "0xDEADBEEF" [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 1 year ago.
Improve this question
I just want to play with DEADBEEF like this:
println!("0x{:X}", "0xDEADBEEF");
And I got this:
the trait bound str: std::fmt::UpperHex is not satisfied
the trait std::fmt::UpperHex is not implemented for str
What I do wrong, why I am not able to print the value?
Just do not wrap the value into a str, and use a proper type marker, u32 would do:
fn main() {
println!("0x{:X}", 0xDEADBEEFu32);
}

patterns `&Unspecified` and `&__Nonexhaustive` not covered [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 2 years ago.
Improve this question
I'm getting this on a match block:
patterns `&Unspecified` and `&__Nonexhaustive` not covered
The code:
fn vipaddress_from_ipddress(address: &IpAddress) -> VIpAddress {
match address {
I think &Unspecified has something to do with not accounting for null case, but references in Rust cannot be null. What is &__Nonexhaustive?
Seems to be an undocumented enum variant: https://docs.rs/ethox/0.0.1-wip/src/ethox/wire/ip.rs.html#15
This possibly indicates that the developer does not expect the users of IpAddress to match; maybe there is already a function doing what you want?

Math syntax in Rust [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 2 years ago.
Improve this question
In Rust, it seems that the syntax for simple math expressions like sin(x)+cos(y)*sqrt(z) have to be written like x.sin()+y.cos()*z.sqrt(), which is weird, and anti-natural, and prone to errors with more complex expressions (exp, log, powers, etc.).
How is it possible to write math expressions the “classical” way? If not possible, why Rust is asking to write them that way?
As mentioned, these methods are defined on the type. A possible alternative is to call the method directly, e.g:
f64::sqrt(25.0);
If you really want to, you can also bind it like so:
fn example_a(n: f64) -> f64 {
let sqrt = f64::sqrt;
sqrt(25.0)
}
const SQRT: fn(f64)-> f64 = f64::sqrt;
fn example_b(n: f64) -> f64 {
SQRT(25.0)
}

Can a Vec be easily created from a string? [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 2 years ago.
Improve this question
A Vec<T> can be converted to a string:
let string: String = format!("{:.?}", vec));
Can said string be converted back into a Vec<T>?
No, not for generic Ts, as the output of Debug (e.g. via #[derive(Debug)]) does not necessarily yield the right format for FromStr (if the type even implements it). Furthermore, Vec does not implement FromStr, so parse() needs at least a wrapper around the Vec.
Also, while most Debug implementation (including the derived one) show the values of their fields, they're not required to. You cannot get the lost information back at that point.

Resources