Я не совсем понимаю структуру вашего кода - откуда wtf
?
Мне кажется, вы неправильно поняли, что передать конструктору MyType
- вы вероятно, должен передать ему диапазон и считать это с помощью std.bitmanip.read
. Возможно, я неправильно понял ваш код:
import std.range;
import std.bitmanip;
struct MyType {
uint value;
this(R)(auto ref R rng) if (isInputRange!R && is(ElementType!R : const(ubyte)))
{
auto act = rng.peek!ubyte;
switch (act) {
case 0:
value = rng.read!uint;
break;
case 1:
rng.read!ubyte;
value = rng.read!uint;
break;
// ...
default: assert(0);
}
}
}
unittest {
ubyte[] buffer = [0x01,0x12,0x34,0x56,0x78];
auto a = MyType(buffer);
assert(buffer.length == 0);
assert(a.value == 0x12345678);
}
Как вы можете видеть, я просто вызываю конструктор MyType
с параметром array как параметр, но вы также можете обернуть его в read
если вы действительно хотите:
alias read = std.bitmanip.read;
T read(T : MyType, R)(auto ref R range)
if (isInputRange!R && is(ElementType!R : const(ubyte)))
{
return MyType(range);
}
unittest {
ubyte[] buffer = [0x01,0x12,0x34,0x56,0x78];
auto a = buffer.read!MyType;
assert(buffer.length == 0);
assert(a.value == 0x12345678);
}
Запустите терминал, чтобы узнать параметры командной строки, предлагаемые вашей реализацией SASS, обычно с:
sass --help
Вы, кажется, используете старый Ruby SASS. Если я правильно помню, переключатель был:
--no-cache
Добавьте его в поле ввода Аргументы , и все готово.
Как уже упоминалось, Ruby SASS больше не разрабатывается, поэтому может быть хорошим моментом переключиться на Dart SASS, у которого нет кеша, о котором нужно заботиться.
Ruby sass устарела уже некоторое время, разработка движется в сторону реализации Dart , в то время как LibSass также является реальной реализацией, но может отставать от реализации Dart некоторые аспекты. LibSass имеет множество интеграций для разных языков, пожалуйста, обратитесь к документации по ссылке выше.
Обе эти реализации намного быстрее, чем Ruby sass, и не создают никаких дополнительных каталогов кеша.