instrumentisto / medea

[Closed] Medea media server
Mozilla Public License 2.0
23 stars 3 forks source link

Basic Rust to Dart error propagation and extern functions integer arguments validation #204

Closed alexlapa closed 3 years ago

alexlapa commented 3 years ago

Synopsis

Пора уже думать как прокидывать ошибки из раста в дарт.

Solution

Понятно что будем в дарте делать throw. По самим ошибкам хочется уйти от какого-то JasonError в котором в name и message стрингами лежат конкретные растовские ошибки, ибо такой вариант не шибко future proof. Думаю, тут следует провести категоризацию растовских ошибок, и выкидывать уже что-то более конкретное. По возможности используя ошибки из дартовского стд.

В этом PR'е идет базовая реализация всего этого механизма, ошибки в extern функциях пока по прежнему анврапятся, этот момент подьедет в следующем PR'е.

Про валидацию аргументов. В данный момент дарту без разницы на тип целочисленных значений. Т.е. в Uint8 можно прокинуть -1, а там просто произойдет каст с оверфловом. В этом PR'е все целочисленные типы (кроме случаев с bool и enum) заменены на In64, а раст уже делает checked cast к нужному типу, возвращая в дарт ошибку если он не удался.

Checklist

alexlapa commented 3 years ago

FCM:

Implement basic Rust to Dart error propagation and extern functions integer arguments validation (#204)