Size: a a a

Rust — русскоговорящее сообщество

2021 June 24

E

Egor in Rust — русскоговорящее сообщество
Всем привет,начал изучать  Rust по книге  rustbook и столкнулся с проблемой  задача обедующие философы
источник

J

JvK in Rust — русскоговорящее сообщество
плохо кушают?
источник

♚Inojelis in Rust — русскоговорящее сообщество
страницу дай
источник

E

Egor in Rust — русскоговорящее сообщество
44 страница,ошибка при компиляции error[E0599]: no method named eat found for struct Philosopher in the current scope
 --> src\main.rs:62:5
  |
3  | struct Philosopher{
  | ------------------ method eat not found for this
...
62 |         p.eat(&table);
  |           ^^^ method not found in Philosopher
источник

П

Пух in Rust — русскоговорящее сообщество
А го ссылку мб
источник

♚Inojelis in Rust — русскоговорящее сообщество
а то 44 страницы не могу найти
источник

E

Egor in Rust — русскоговорящее сообщество
У меня ссылки на саму книгу  нету ,могу скинуть само книгу
источник

♚Inojelis in Rust — русскоговорящее сообщество
а тю
источник

♚Inojelis in Rust — русскоговорящее сообщество
это не растбук
источник

♚Inojelis in Rust — русскоговорящее сообщество
скинь код неработающий тогда
источник

E

Egor in Rust — русскоговорящее сообщество
use std::thread;
use std::sync::{Mutex,Arc};
struct Philosopher{
 name: String,
 left: usize,
 right:usize,
}



fn new(name: &str, left:usize, right:usize) -> Philosopher{
 Philosopher {
    name:name.to_string(),
    left:left,
    right:right,
 }
}

impl Philosopher{
 fn new(name: &str) -> Philosopher{
   Philosopher{
     name: name.to_string(),
     left:left,
     right:right,
   }
 }
}

fn eat(&self, table: &Table){
 let_left = table.forks[self.left].lock().unwrap();
 let_right = table.forks[self.right].lock().unwrap();
 println!("{} начал есть.",self.name);
 thread::sleep_ms(1000);
 println!("{} закончил есть.", self.name);
}

struct Table{
 forks:Vec<Mutex<()>>,

}


fn main() {
 let table = Arc::new(Table{forks: vec![
 Mutex::new(()),
   Mutex::new(()),
   Mutex::new(()),
   Mutex::new(()),
 Mutex::new(()),
]});
 let  philosophers = vec![
     Philosopher::new("Мартин Хайдегер", 0, 1),
   Philosopher::new("Фридрих Ницше", 1, 2),
   Philosopher::new("Александр Дугин", 2, 3),
   Philosopher::new ("Жан-Поль Сартр", 3, 4),
   Philosopher::new("Рене Декарт", 0, 4),
];

let handles:Vec<_> = philosophers.into_iter().map(|p|{
 let table = table.clone();
 thread::spawn(move ||{
   p.eat(&table);
 })
}).collect();

for h in handles{
 h.join().unwrap();
}
}
источник

♚Inojelis in Rust — русскоговорящее сообщество
у тебя функция eat не находится в impl
источник

♚Inojelis in Rust — русскоговорящее сообщество
закинь eat в impl.
источник

♚Inojelis in Rust — русскоговорящее сообщество
impl Philosopher{
 fn new(name: &str) -> Philosopher{
   Philosopher{
     name: name.to_string(),
     left:left,
     right:right,
   }
 }
 fn eat(&self, table: &Table){
    let_left = table.forks[self.left].lock().unwrap();
    let_right = table.forks[self.right].lock().unwrap();
    println!("{} начал есть.",self.name);
    thread::sleep_ms(1000);
    println!("{} закончил есть.", self.name);
}
источник

♚Inojelis in Rust — русскоговорящее сообщество
как-то так
источник

ph

pl 🦑 hk in Rust — русскоговорящее сообщество
источник

bh

black hole in Rust — русскоговорящее сообщество
А на расте роботов программируют или там только хардкорные дядьки на си?
источник

Э

Эрик in Rust — русскоговорящее сообщество
Зависит от робота, но обычно хардкорные дядьки на асме.
источник

bh

black hole in Rust — русскоговорящее сообщество
Ну там автопилот теслы
Или Бостон динумикс
источник

A

Andrew in Rust — русскоговорящее сообщество
Автопилот плюсы, бостон хз, навернок тоже
источник