Как определить бесконечный диапазон универсального целочисленного типа в Rust? - PullRequest
0 голосов
/ 12 мая 2019

У меня есть универсальный тип T, который реализует черту num::Integer.Я могу написать итератор диапазона на основе T, где e представляет другое значение типа T, обозначающее верхнюю границу диапазона:

num::iter::range(T::one(), e)

Раздражает то, что он обязательно ограничен.Как я могу иметь неограниченный диапазон?Для примитивных типов я могу сделать что-то вроде (1..).Могу ли я сделать что-то вроде num::iter::range(T::one(), T::infinity())?

Я не могу найти функцию, которая делает это в num::iter.Я хотел бы иметь возможность впоследствии вызывать функции функционального стиля, такие как map, filter и т. Д. *

Ответы [ 2 ]

0 голосов
/ 12 мая 2019

Редактировать: К сожалению, std::ops::RangeFrom - это структура, а не черта, как например черты для инфиксных операторов в std::ops. Так что это неправильно, но так как оно было принято, я не могу его удалить.

Исходное сообщение : Вы можете реализовать std :: ops :: RangeFrom для вашего типа. Это черта, лежащая в основе синтаксиса диапазона только с нижней границей, как, например, 1...

0 голосов
/ 12 мая 2019

Звучит как вариант использования для loop, а не диапазона.

...