i am trying to .next()
on an Arc, but i cannot go past this error
error[E0596]: cannot borrow data in an `Arc` as mutable
--> src/reply.rs:26:32
|
26 | while let Some(line) = self.reader.next().await {
| ^^^^^^^^^^^^^^^^^^ cannot borrow as mutable
|
= help: trait `DerefMut` is required to modify through a dereference, but it is not implemented for `Arc<FramedRead<tokio::net::tcp::OwnedReadHalf, ReplyDecoder>>`
Code
use std::sync::Arc;
use tokio::net::tcp::OwnedReadHalf;
use tokio_util::codec::FramedRead;
use tokio_stream::StreamExt;
use std::fmt::Debug;
use crate::{ ReplyDecoder, ReplyError };
#[derive(Debug)]
pub struct Reply {
reader: Arc<FramedRead<OwnedReadHalf, ReplyDecoder>>,
code: u16,
data: String,
}
impl Reply {
pub fn new(mut reader: Arc<FramedRead<OwnedReadHalf, ReplyDecoder>>) -> Self {
Self {
reader,
code: 0,
data: String::new()
}
}
pub async fn get(&mut self) -> Result<(u16, String), ReplyError> {
while let Some(line) = self.reader.next().await {
println!("> {:?}", line);
}
Ok((220, String::new()))
}
}