dec может быть обычным массивом (он равен letters ~ whitespace ~ digits
btw)
в enc вы также можете использовать обычный массив, если вы разрешаете только ASCII в качестве символов (длиной 255 и приведением c к int для индекса)
редактировать
Вы можете создать строку миксина из строки letters ~ whitespace ~ digits
, например,
string createSwitch(string seq,string inp){
string out = "switch("~inp~"){";
int i=0;
foreach(ch;seq){
out~="case "~ch~":return "~i";";
}
out~="default: return -1;";
return out;
}
, который затем можно использовать как
int intFromChar(char ch){
mixin(createSwitch(letters ~ whitespace ~ digits,"ch"));
}