Решение без создания дополнительного массива для промежуточного хранения чисел.
fn multiplication_of_digits(mut n: i32) -> i32 {
let mut result = 0;
let mut multiplicator = 9;
let mut digit = 1;
while multiplicator > 1 {
if n % multiplicator == 0 {
result += multiplicator * digit;
digit *= 10;
n /= multiplicator;
} else {
multiplicator -= 1;
}
}
if n > 9 {
result = -1;
}
result
}