Ну, я постараюсь ответить самому себе:)
По-видимому, в Thrift нет прямого перевода кортежей Эрланга. Вы можете включить в свой модуль Erlang определения типов, сгенерированные Thrift, и написать свой код Erlang, чтобы он использовал созданные записи Erlang в качестве параметров и / или возвращаемых значений для ваших функций.
Атомы Эрланга должны быть переведены в двоичные файлы Thrift (или, в конечном итоге, в строки).
Итак, если вы хотите что-то вроде:
-spec cool_function() ->
{atom(), atom()}.
cool_function() ->
{foo, bar}
Вам необходимо указать в файле what.thrift :
struct MyTuple {
1: binary first,
2: binary second
}
service myService {
MyTuple cool_function()
}
Кроме того, вам нужно написать свою функцию Erlang как:
[...]
-include("whatever_types.hrl").
[...]
-spec cool_function() ->
#myTuple{}.
cool_function() ->
#myTuple{
first = atom_to_binary(foo, utf8),
second = atom_to_binary(bar, utf8)
}.
Пожалуйста, поправьте меня, если я ошибаюсь.