amarao (amarao_san) wrote,
amarao
amarao_san

rust

The Mother of Error Messages.

error[E0277]: `std::rc::Rc<gfx_device_gl::Share>` cannot be sent between threads safely
  --> src/lib.rs:75:50
   |         
75 |         thread::Builder::new().name(thread_name).spawn(move ||{closure(draw_tx, control_rx, id)}).unwrap();
   |                                                  ^^^^^ `std::rc::Rc<gfx_device_gl::Share>` cannot be sent between threads safely
   | 
   = help: within `Command`, the trait `std::marker::Send` is not implemented for `std::rc::Rc<gfx_device_gl::Share>`
   = note: required because it appears within the type `gfx_device_gl::Factory`
   = note: required because it appears within the type `piston_window::TextureContext<gfx_device_gl::Factory, gfx_device_gl::Resources, gfx_device_gl::CommandBuffer>`
   = note: required because it appears within the type `Command`
   = note: required because of the requirements on the impl of `std::marker::Send` for `std::sync::mpsc::Receiver<Command>`
   = note: required because it appears within the type `[closure@src/lib.rs:75:56: 75:97 closure:C, draw_tx:std::sync::mpsc::SyncSender<image::ImageBuffer<image::Rgba<u8>, std::vec::Vec<u8>>>, control_rx:std::sync::mpsc::Receiver<Command>, id:usize]`



Я считаю, что за такое можно простить много. Да, я попытался отправить TextureContext (который на самом деле piston_window::TextureContext<gfx_device_gl::Factory, gfx_device_gl::Resources, gfx_device_gl::CommandBuffer>) в соседний тред. Я не знаю, почему это нельзя делать, но автор библиотеки это явно запретил. А компилятор мне это явно сказал.

Сравните с большинством других языков программирования, где целеустремлённого человека никто и ничто не останавливает от того, чтобы передать ссылочку за проезд.

Причём осознайте, что ошибка рассуждает про мою программу совсем не в том месте, где я написал - я-то всего-лишь поменял
pub enum Command {
    NewResolution(u32, u32, SyncSender<Buffer>),
    NeedUpdate()
}

на 
pub enum Command {
    NewResolution(u32, u32, SyncSender<Buffer>),
    NeedUpdate(TextureContent)
}


Но поменял я именно с этой целью - послать в тредик. Вместо этого меня послали, очень культурно и очень по-делу. Ща буду выяснять, почему автору библиотеки хотелось это запретить...
Tags: rust
Subscribe

  • поздне-анимешное

    Один из интересных водоразделов между западной и восточной (японской, японской) культурой я вижу в районе толстовской фразы "Все счастливые семьи…

  • berserk 2017

    Внезапно, если кто не заметил, уже аж 4 серии нового сезона. И он не менее офигенен, чем предыдущий. При том, что местами анимация провисает, история…

  • об обязательности длинноногости анимешных персонажей

    Простая математика: 1) Если лобок не является геометрическим центром тела, оно выглядит искажённым. Либо непропорционально большое туловище с…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments