Open Sebekerga opened 11 months ago
Доступна начальная, минимально рабочая версия:
[dependencies]
native_api_1c = { git = "https://github.com/Sebekerga/native_api_1c", tag = "impl_out_params" }
Пример определения функции с out параметрами:
#[add_in_func(name = "TransformString", name_ru = "ПреобразоватьСтроку")]
#[arg(Str, as_in)]
#[arg(Str, as_out)]
#[returns(Bool)]
transform_str: fn(&Self, String, &mut String) -> bool,
Проверил все типы параметров, вроде все работает, кроме случая когда Self тоже mut. Добавил запрос на слияние https://github.com/Sebekerga/native_api_1c_macro/pull/2
Обсуждение здесь: https://github.com/Sebekerga/native_api_1c_macro/pull/2
Сейчас остается только доделать out параметр для типа дата. Также вопрос: по идее, в тех же драйверах подключаемого оборудования, где используются параметры, у нас нет гарантии, что на вход будет подаваться значение такого же типа, какое требуется на выходе?
Сейчас макрос не дает возможности принять любое значение, поэтому может имеет смысл добавить флаг any_in_type
, который будет означать, что макрос конвертирует тип, с возможной потерей данных.
Проверил работу драйвера для дисплея покупателя на текущей реализации, с первого взгляда все работает. Типы данных там в основном два числовой и строка, даты не попадалось. Каких то особенностей преобразования не заметил, но присмотрюсь когда буду реализовывать другие версии.
Ишью для отслеживания разработки out параметров