1 首先是可变性。
struct A{
b:Option<Arc<B>>
}
struct B{}
struct C{
b:Option<Arc<B>>
}
struct IOC{
map:Hashmap,
}
如果A和B有一个需要调用B的可变方法,Arc<B>可引用实现就没有意义了,只能改成Mutex、RwLock,都需要业务层在调用前判断调用。除非两个sevice都是只读的,但实际业务中是不可能的。
2.用宏自动生成代码再进行装配是可行的。
后续再补充,
1 首先是可变性。
struct A{
b:Option<Arc<B>>
}
struct B{}
struct C{
b:Option<Arc<B>>
}
struct IOC{
map:Hashmap,
}
如果A和B有一个需要调用B的可变方法,Arc<B>可引用实现就没有意义了,只能改成Mutex、RwLock,都需要业务层在调用前判断调用。除非两个sevice都是只读的,但实际业务中是不可能的。
2.用宏自动生成代码再进行装配是可行的。
后续再补充,