Názor k článku Programovací jazyk Rust: vlákna a sdílení objektů mezi nimi od Pavel Tišnovský - Díky za upozornění. Asi jsem to napsal nejasně,...

  • Článek je starý, nové názory již nelze přidávat.
  • 17. 1. 2017 10:11

    Pavel Tišnovský
    Zlatý podporovatel

    Díky za upozornění. Asi jsem to napsal nejasně, ale myslel jsem to tak, že funkčnost není zaručena v obecném případě (bez ohledu na jazyk), proto to je v Rustu řešeno.

    A ano, v Rustu by to z normálním počitadlem referencí nešlo přeložit. Asi to doplním aspoň sem do diskuze, co by se stalo při náhradě Arc za "normální" Rc:


    error[E0277]: the trait bound `std::rc::Rc<­Complex>: std::marker::Send` is not satisfied
    --> test.rs:52:9
    |
    52 | thread::spawn(move || {
    | ^^^^^^^^^^^^^
    |
    = note: `std::rc::Rc<­Complex>` cannot be sent between threads safely
    = note: required because it appears within the type `ComplexNumbe­rOwner`
    = note: required because it appears within the type `[closure@tes­t.rs:52:23: 55:10 owner:Complex­NumberOwner]`
    = note: required by `std::thread::spaw­n`