1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
use crate::clients::QueueServiceClient; use crate::requests; use crate::{HasStorageClient, IntoQueueNameClient, QueueNameService, WithQueueNameClient}; use azure_sdk_core::No; use azure_sdk_storage_core::Client; use std::borrow::Cow; use std::fmt::Debug; #[derive(Debug, Clone)] pub struct QueueNameClient<'a, 'b, C> where C: Client + Clone, { pub storage_client: Cow<'a, C>, pub queue_name: Cow<'b, str>, } impl<'a, 'b, C> HasStorageClient for QueueNameClient<'a, 'b, C> where C: Client + Clone, { type StorageClient = C; fn storage_client(&self) -> &C { self.storage_client.as_ref() } } impl<'a, 'b, C> WithQueueNameClient<'a, 'b> for QueueServiceClient<'a, C> where C: Client + Clone, { type QueueNameClient = QueueNameClient<'a, 'b, C>; fn with_queue_name_client<NAME>(&'a self, queue_name: NAME) -> Self::QueueNameClient where NAME: Into<Cow<'b, str>>, { QueueNameClient { storage_client: Cow::Borrowed(&self.storage_client), queue_name: queue_name.into(), } } } impl<'a, 'b, C> IntoQueueNameClient<'b> for QueueServiceClient<'a, C> where C: Client + Clone, { type QueueNameClient = QueueNameClient<'a, 'b, C>; fn into_queue_name_client<NAME>(self, queue_name: NAME) -> Self::QueueNameClient where NAME: Into<Cow<'b, str>>, { QueueNameClient { storage_client: Cow::Owned(self.storage_client.into_owned()), queue_name: queue_name.into(), } } } impl<'a, 'b, C> QueueNameService for QueueNameClient<'a, 'b, C> where C: Client + Clone, { fn queue_name(&self) -> &str { self.queue_name.as_ref() } fn put_message(&self) -> requests::PutMessageBuilder<'_, '_, Self::StorageClient, No> { requests::PutMessageBuilder::new(self) } }