let x = ????;
let v = Vec::< type(x) >::new();
Is there a way to make this work? I want to get the type of a variable and pass it as a type to another expr.
let x = ????;
let v = Vec::< type(x) >::new();
Is there a way to make this work? I want to get the type of a variable and pass it as a type to another expr.
Types in Rust don't exist at run-time, only compile-time.
You could use macros to work out the type, but it needs to be fixed during compilation.
I don't see why this is a problem. The type of x is resolved at compile time, the we substitute it into v , at compile time.
Technically you can achieve this by forcing type inference, for example, when calling a generic function:
fn f1<T>(_value: &T) -> Vec<T> {
Vec::new()
}
fn main() {
let x = 5;
let v = f1(&x);
}
You can trick inference to do it:
let x = ????;
let v = Vec::new();
if false {
v.push(x);
unreachable!();
}
Please don't actually do that, though.
Why do you not know what its type is? Can you just copy the type from the error message into there?
Possibly futile attempt at solving https://users.rust-lang.org/t/compiler-error-specify-the-associated-type/59506