#axum cannot implement `Send` for a await point

3 messages · Page 1 of 1 (latest)

fossil arrow
#
    pub async fn set_username(
        self: Arc<Self>,
        email: String,
        username: String,
    ) -> Result<(), String> {
        validation::is_username_valid(&username)?;
        if let Err(e) = self.is_username_available(&username).await {
            if let Some(s) = e.get_custom::<&str>() {
                return Err(s.to_string());
            }
            return Err(e.to_string());
        }

        let metadata: crate::models::user::UnregisteredEntry;
        let user_email: String;

        let mut guard = self.unregistered.lock().unwrap();
        let entry = guard.entry(email);
        if let Entry::Occupied(v) = entry {
            if v.get().register_status != RegisterStatus::PasswordSet {
                return Err("User password not set".to_string());
            }
            (user_email, metadata) = v.remove_entry();
        } else {
            return Err("User not found".to_string());
        }
        drop(guard);

        self.add_user(&crate::models::user::User {
            _id: ObjectId::new(),
            legal_name: metadata.name.clone(),
            email: user_email,
            dob: metadata.dob,
            password: metadata.password.unwrap(),
            username,
            display_name: metadata.name,
            bio: None,
            gender: None,
            phone: None,
            country: None,
            // created: DateTime::now(),
            // last_login: DateTime::now(),
        })
        .await // <------------------------------------------------- error over here
        .map_err(|e| e.to_string())?;
        Ok(())
    }
    pub async fn add_user(self: Arc<Self>, user: &User) -> mongodb::error::Result<()> {
        match self.users.insert_one(user).await {
            Ok(v) => {
                tracing::info!("Inserted User: {}", v.inserted_id);
                Ok(())
            }
            Err(e) => Err(e),
        }
    }
novel caveBOT
#

Error code: 6e4038e312f942b6ad560f5fd951d70c

Internal error occurred

For support, please send the error code above in #bug-reports-and-errors on the support server (click to join) with a description of what you were doing at the time.