原创 张汉东 2024-10-05 21:33 美国
看到 Tauri 2.0 重写了 IPC ,支持 raw request ,我好奇为什么支持 raw request 需要拖到 2.0 在做,不就是加个变体的事吗?
看到 Tauri
2.0 重写了 IPC
,支持 raw request
,我好奇为什么支持 raw request 需要拖到 2.0 在做,不就是加个变体的事吗?
之前 RustDesk 想用 tauri,发现它 IPC 性能很低就没用。
后来被群友提醒我想起来了,Enum 加变体是 breaking change
,所以必须放到 2.0 ,除非加了 non_exhaustive
属性。
这里就体现 non_exhaustive
在 API 设计方面的重要性了。然而最新的这个 Enum 类型依然没有增加 non_exhaustive
,看来以后要增加新的支持就得 3.0 了。
在大多数情况下,使用 non_exhaustive
不会对性能产生显著影响。编译器仍然可以对已知的变体进行优化。唯一可能的性能影响是在 match
语句中,因为编译器无法确保所有情况都被覆盖,可能会禁用某些优化。
不过话说回来,已经都支持 raw 了 ,其他具体的消息类型在某些情况下可能就显得不那么必要了。不过,即使有了 raw 请求支持,保留一些常用的预定义类型仍然可能有其价值,特别是在提供良好的开发体验和 API 直观性方面。
也许 Tauri 团队是在灵活性、性能和易用性之间找到了一个平衡点。