Могу ли я передать параметры в виде массива? - PullRequest
2 голосов
/ 21 февраля 2020

Например, вместо

assert_eq!(add(2,3), 5);

есть какой-то способ вызвать что-то вроде

let params: [u32; 2] = [2 ,3];
assert_eq!(call!(&add, params), 5);

Я бы счел эту функцию очень полезной для тестирования. Например, если я хочу написать несколько тестов для функции, которая принимает большое количество параметров, я хочу иметь возможность повторно использовать фиктивный объект параметров, например:

#[cfg(test)]
mod tests {
    const dummy: [u32; 5] = [0, 0, 0, 0, 0]; 

    #[test]
    fn test_first_param() {
        let mut params = dummy;
        params[0] = 1;
        assert_eq!(call!(&add, params)), 1);
    }

    #[test]
    fn test_second_param() {
        let mut params = dummy;
        params[1] = 1;
        assert_eq!(call!(&add, params)), 1);
    }
}

Редактировать:

Если этой функциональности не существует, будет ли кто-нибудь заинтересован в том, чтобы я делал и публиковал макрос?

1 Ответ

0 голосов
/ 21 февраля 2020

В языке нет функции, которая перечисляет массив и передает каждый элемент в качестве аргумента. Вы правы, что вам нужен макрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...