Here is a simple demo.
fn test1<T = Vec<Vec<Vec<i32>>>>() -> Vec<T> {
let arr = vec![];
arr.push(vec![vec![12]]);
return arr;
}
# get error
|
84 | fn test1<T = Vec<Vec<Vec<i32>>>>() -> Vec<T> {
| - this type parameter ------ expected `Vec<T>` because of return type
...
87 | return arr;
| ^^^ expected type parameter `T`, found struct `Vec`
|
= note: expected struct `Vec<T>`
found struct `Vec<Vec<Vec<{integer}>>>`