पर पाइथन सूची पास करें मैं पाइथन में जंग कार्यों को एम्बेड करने के तरीके सीख रहा हूं, और यदि मेरे इनपुट int
एस हैं, लेकिन सूची नहीं है, तो सब ठीक काम करता है।एम्बेडेड जंग फंक्शन
अगर मेरे lib.rs
फ़ाइल है:
#[no_mangle]
pub extern fn my_func(x: i32, y: i32) -> i32 {
return x + y;
}
मैं इस प्रकार है के रूप में उपयोग कर सकते हैं:
In [1]: from ctypes import cdll
In [2]: lib = cdll.LoadLibrary("/home/user/RustStuff/embed/target/release/libembed.so")
In [3]: lib.my_func(5,6)
Out[3]: 11
लेकिन अगर मैं बदल मेरी lib.rs
रहे हैं:
#[no_mangle]
pub extern fn my_func(my_vec: Vec<i32>) -> i32 {
let mut my_sum = 0;
for i in my_vec {
my_sum += i;
}
return my_sum;
}
मैं अब कर सकते हैं इसे पायथन में उपयोग करें (यह संकलित ठीक है):
In [1]: from ctypes import cdll
In [2]: lib = cdll.LoadLibrary("/home/user/RustStuff/embed/target/release/libembed.so")
In [3]: lib.my_func([2,3,4])
---------------------------------------------------------------------------
ArgumentError Traceback (most recent call last)
<ipython-input-3-454ffc5ba9dd> in <module>()
----> 1 lib.my_func([2,3,4])
ArgumentError: argument 1: <type 'exceptions.TypeError'>: Don't know how to convert parameter 1
कारण, मैं
क्यों मेरी प्रयास काम नहीं करता है, हालांकि यह काम कर सकता है कि अजगर के list
और जंग के Vec
दोनों गतिशील सरणियों, लेकिन जाहिरा तौर पर मैं कुछ यहाँ याद आ रही है ...? इसे ठीक करने के लिए मुझे क्या करना चाहिए?