А между тем, зацените, в nightly rust научились делать вот так:
#![feature(conservative_impl_trait)]
fn numbers() -> impl Iterator {
1 ..
}
Дословно, мы из функции возвращаем некоторый анонимный тип, всё что известно про которого - это то, что он реализует типаж Iterator, ассоциативный тип Item коего установлен в i32Выглядит сумбурно,
(
Read more... )
Т.е. типичен код вроде
halveBlock : Block -> Block
где halveBlock может вызывать себя рекурсивно с разными значениями N.
И нужны типы вроде
YUVBlock {
Block Y;
Block U;
Block V;
}
Насколько это все переводимо на Раст?
Reply
Reply
А настоящий код тот на С++.
Reply
Конкретно твой пример можно сделать, если вынести параметр из шаблона в название, типа: Block2, Block4, Block8 и тд - и дальше макросом, чтобы не писать одно и то же для каждого блока.
Но что использовать вместо сложных вычислений на шаблонах (рекурсия там и тд) я точно не могу сказать, у меня пока такой нужды не возникало. В принципе, бывают плагины компилятора и билд скрипты, но надо смотреть внимательней на каждый случай.
Reply
Leave a comment