damienpontifex / azure-iot-sdk-rs

A rust library for connecting devices to Microsoft Azure IoT Hub
MIT License
14 stars 11 forks source link

I have to be using it wrong #69

Closed dwhiteddsoft closed 2 years ago

dwhiteddsoft commented 2 years ago

off a trait impl I have this:

    async fn connect() {
        println!("connected iot_hub_device");
        // create a thread
        IotHubDeviceImpl::connect().await;
    }

which gives me an error of: future cannot be sent between threads safely the trait Send is not implemented for dyn std::error::Error required for the cast to the object type dyn Future<Output = ()> + Send

pointing to the following line:

        let iot_receiver = iot_client.get_receiver().await;

which I will be using poll_recv in a multi-threaded fashion. All available help says I need to add Send and Sync like it says and I can only implement it in my crate which is also a compile error for only implementing things in your own crate.

Seems pretty simple. I am going to spin the IoT Hub messaging on its own thread and cannot seem to overcome this

dwhiteddsoft commented 2 years ago

In case anyone is interested this is a scope issue on the compiler (if I understand it correctly) and they way around it is the following link from async trait https://github.com/dtolnay/async-trait#non-threadsafe-futures.

Closing issue