為zig實現(xiàn)接口的億些坑(四)
2023-02-24 14:36 作者:pathologyenigma | 我要投稿
書接上文,我希望可以得到一種更加方便的調(diào)用接口函數(shù)的辦法,即xxx.{method_name}({type_params})({method_params})這種形式,那么就需要實現(xiàn)接口的部分更加的復(fù)雜,上一期之所以戛然而止,主要原因還是此時的實現(xiàn)的難度很高
那么我們希望的情況是怎樣呢:
這樣的方式就相對來說比較舒適了
實現(xiàn)部分我們也不能搞的太復(fù)雜,目前的想法是這樣的:
此時我們有一個專門為了實現(xiàn)接口而設(shè)計的manager類型(本質(zhì)上是一個builder),最后會將實現(xiàn)的接口對應(yīng)的caller放入被實現(xiàn)的對象
于是,我們不難想到這樣的實現(xiàn)方式:
但是,在編譯的時候就碰到了一個奇怪的問題

那我們?nèi)サ籼自谕饷娴哪且粚觭truct,只留下函數(shù)呢?

一個個來看,首先是map的問題,編譯期默認所有變量的引用都是*const的,要么就去除const,要么就需要clone一下,然而zig目前版本并不支持編譯期開內(nèi)存,所有注定是失敗的,比如當我改成下面這樣:

無法確定地址了,看來要么只能使用棧上面的解決方案,要么就只能等zig實現(xiàn)編譯期的allocator了
在zig擁有更牛逼的編譯期能力之前,我們可能暫時只能這樣了