From 423b1e0684dfb08b9c9a6c8ffc16362e2c8c43aa Mon Sep 17 00:00:00 2001 From: Anton Kolesnyk Date: Tue, 10 Mar 2026 17:17:53 -0700 Subject: [PATCH 1/2] WIP --- packages/typespec-rust/.scripts/tspcompile.js | 2 +- packages/typespec-rust/test/Cargo.lock | 9 ++ packages/typespec-rust/test/Cargo.toml | 1 + .../client-generator-core/access/Cargo.toml | 18 +++ .../src/generated/clients/access_client.rs | 90 +++++++++++++ .../access/src/generated/clients/mod.rs | 7 + .../access/src/generated/mod.rs | 8 ++ .../access_internal_operation_client.rs | 91 +++++++++++++ .../generated/clients/mod.rs | 7 + .../src/internal_operation/generated/mod.rs | 9 ++ .../generated/models/method_options.rs | 27 ++++ .../generated/models/mod.rs | 10 ++ .../generated/models/models.rs | 35 +++++ .../access/src/internal_operation/mod.rs | 7 + .../client-generator-core/access/src/lib.rs | 13 ++ .../clients/access_public_operation_client.rs | 68 ++++++++++ .../public_operation/generated/clients/mod.rs | 7 + .../src/public_operation/generated/mod.rs | 9 ++ .../generated/models/method_options.rs | 20 +++ .../public_operation/generated/models/mod.rs | 10 ++ .../generated/models/models.rs | 26 ++++ .../access/src/public_operation/mod.rs | 7 + ...cess_relative_model_in_operation_client.rs | 87 +++++++++++++ .../generated/clients/mod.rs | 7 + .../generated/mod.rs | 9 ++ .../generated/models/method_options.rs | 20 +++ .../generated/models/mod.rs | 14 ++ .../generated/models/models.rs | 39 ++++++ .../generated/models/models_impl.rs | 13 ++ .../generated/models/unions.rs | 26 ++++ .../generated/models/unions_serde.rs | 28 ++++ .../src/relative_model_in_operation/mod.rs | 7 + ...access_shared_model_in_operation_client.rs | 68 ++++++++++ .../generated/clients/mod.rs | 7 + .../generated/mod.rs | 9 ++ .../generated/models/method_options.rs | 20 +++ .../generated/models/mod.rs | 10 ++ .../generated/models/models.rs | 17 +++ .../src/shared_model_in_operation/mod.rs | 7 + .../access/tests/access_client_test.rs | 121 ++++++++++++++++++ 40 files changed, 989 insertions(+), 1 deletion(-) create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/Cargo.toml create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/access_client.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/access_internal_operation_client.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/method_options.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/models.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/lib.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/access_public_operation_client.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/method_options.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/models.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/access_relative_model_in_operation_client.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/method_options.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models_impl.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions_serde.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/access_shared_model_in_operation_client.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/method_options.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/models.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/mod.rs create mode 100644 packages/typespec-rust/test/spector/azure/client-generator-core/access/tests/access_client_test.rs diff --git a/packages/typespec-rust/.scripts/tspcompile.js b/packages/typespec-rust/.scripts/tspcompile.js index be9a80bed..e412ecebd 100644 --- a/packages/typespec-rust/.scripts/tspcompile.js +++ b/packages/typespec-rust/.scripts/tspcompile.js @@ -75,7 +75,7 @@ const httpSpecsGroup = { }; const azureHttpSpecsGroup = { - //'spector_access': {input: 'azure/client-generator-core/access'}, + 'spector_access': {input: 'azure/client-generator-core/access'}, 'spector_apiverheader': {input: 'azure/client-generator-core/api-version/header/client.tsp'}, 'spector_apiverpath': {input: 'azure/client-generator-core/api-version/path/client.tsp'}, 'spector_apiverquery': {input: 'azure/client-generator-core/api-version/query/client.tsp'}, diff --git a/packages/typespec-rust/test/Cargo.lock b/packages/typespec-rust/test/Cargo.lock index c02a0534d..6cf194717 100644 --- a/packages/typespec-rust/test/Cargo.lock +++ b/packages/typespec-rust/test/Cargo.lock @@ -1714,6 +1714,15 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "spector_access" +version = "0.1.0" +dependencies = [ + "azure_core", + "serde", + "tokio", +] + [[package]] name = "spector_alternatetype" version = "0.1.0" diff --git a/packages/typespec-rust/test/Cargo.toml b/packages/typespec-rust/test/Cargo.toml index 04ff89cbd..45d5ad03a 100644 --- a/packages/typespec-rust/test/Cargo.toml +++ b/packages/typespec-rust/test/Cargo.toml @@ -16,6 +16,7 @@ members = [ "spector/authentication/http/custom", "spector/authentication/oauth2", "spector/authentication/union", + "spector/azure/client-generator-core/access", "spector/azure/client-generator-core/api-version/header", "spector/azure/client-generator-core/api-version/path", "spector/azure/client-generator-core/api-version/query", diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/Cargo.toml b/packages/typespec-rust/test/spector/azure/client-generator-core/access/Cargo.toml new file mode 100644 index 000000000..946bd81ae --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "spector_access" +version = "0.1.0" +authors.workspace = true +edition.workspace = true +license.workspace = true +repository.workspace = true +rust-version.workspace = true + +[features] +default = ["azure_core/default"] + +[dependencies] +azure_core = { workspace = true } +serde = { workspace = true } + +[dev-dependencies] +tokio = { workspace = true } diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/access_client.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/access_client.rs new file mode 100644 index 000000000..1ace98bbb --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/access_client.rs @@ -0,0 +1,90 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use azure_core::{Result, fmt::SafeDebug, http::{ClientOptions, Pipeline, Url, }, tracing, }; +use crate::{internal_operation::clients::AccessInternalOperationClient, public_operation::clients::AccessPublicOperationClient, relative_model_in_operation::clients::AccessRelativeModelInOperationClient, shared_model_in_operation::clients::AccessSharedModelInOperationClient, }; + +/// Test for internal decorator. +#[tracing::client] +pub struct AccessClient { + pub(crate) endpoint: Url, + pub(crate) pipeline: Pipeline, +} + +/// Options used when creating a [`AccessClient`](AccessClient) +#[derive(Clone, Default, SafeDebug)] +pub struct AccessClientOptions { +/// Allows customization of the client. + pub client_options: ClientOptions, +} + +impl AccessClient { + /// Creates a new AccessClient requiring no authentication. + /// + /// # Arguments + /// +/// * `endpoint` - Service host +/// * `options` - Optional configuration for the client. + #[tracing::new("_Specs_.Azure.ClientGenerator.Core.Access")] + pub fn with_no_credential(endpoint: &str, options: Option) -> Result { + let options = options.unwrap_or_default(); + let endpoint = Url::parse(endpoint)?; + if !endpoint.scheme().starts_with("http") { + return Err(azure_core::Error::with_message(azure_core::error::ErrorKind::Other, format!("{endpoint} must use http(s)"))); + } Ok(Self { + endpoint, + pipeline: Pipeline::new( + option_env!("CARGO_PKG_NAME"), + option_env!("CARGO_PKG_VERSION"), + options.client_options, + Vec::default(), + Vec::default(), None, + ), + }) + } + + /// Returns the Url associated with this client. + pub fn endpoint(&self) -> &Url { + &self.endpoint + } + + /// Returns a new instance of AccessInternalOperationClient. + #[tracing::subclient] + pub fn get_access_internal_operation_client(&self) -> AccessInternalOperationClient { + AccessInternalOperationClient { + endpoint: self.endpoint.clone(), + pipeline: self.pipeline.clone(), + } + } + + /// Returns a new instance of AccessPublicOperationClient. + #[tracing::subclient] + pub fn get_access_public_operation_client(&self) -> AccessPublicOperationClient { + AccessPublicOperationClient { + endpoint: self.endpoint.clone(), + pipeline: self.pipeline.clone(), + } + } + + /// Returns a new instance of AccessRelativeModelInOperationClient. + #[tracing::subclient] + pub fn get_access_relative_model_in_operation_client(&self) -> AccessRelativeModelInOperationClient { + AccessRelativeModelInOperationClient { + endpoint: self.endpoint.clone(), + pipeline: self.pipeline.clone(), + } + } + + /// Returns a new instance of AccessSharedModelInOperationClient. + #[tracing::subclient] + pub fn get_access_shared_model_in_operation_client(&self) -> AccessSharedModelInOperationClient { + AccessSharedModelInOperationClient { + endpoint: self.endpoint.clone(), + pipeline: self.pipeline.clone(), + } + } +} + + diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/mod.rs new file mode 100644 index 000000000..114b75569 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/mod.rs @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +mod access_client; +pub use access_client::*; \ No newline at end of file diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/mod.rs new file mode 100644 index 000000000..bfed45664 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/mod.rs @@ -0,0 +1,8 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +/// Clients used to communicate with the service. +pub mod clients; +pub use clients::{AccessClient, AccessClientOptions}; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/access_internal_operation_client.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/access_internal_operation_client.rs new file mode 100644 index 000000000..ec10bfd3b --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/access_internal_operation_client.rs @@ -0,0 +1,91 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use azure_core::{Result, error::CheckSuccessOptions, http::{Method, Pipeline, PipelineSendOptions, Request, Response, Url, UrlExt, }, tracing, }; +use crate::internal_operation::generated::models::{AccessInternalOperationClientInternalDecoratorInInternalOptions, AccessInternalOperationClientNoDecoratorInInternalOptions, AccessInternalOperationClientPublicDecoratorInInternalOptions, InternalDecoratorModelInInternal, NoDecoratorModelInInternal, PublicDecoratorModelInInternal, }; + +#[tracing::client] +pub struct AccessInternalOperationClient { + pub(crate) endpoint: Url, + pub(crate) pipeline: Pipeline, +} + +impl AccessInternalOperationClient { + /// Returns the Url associated with this client. + pub fn endpoint(&self) -> &Url { + &self.endpoint + } + + /// + /// # Arguments + /// +/// * `options` - Optional parameters for the request. + #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.InternalOperation.internalDecoratorInInternal")] + pub(crate) async fn internal_decorator_in_internal(&self, name: &str, options: Option>) -> Result> { + let options = options.unwrap_or_default(); + let ctx = options.method_options.context.to_borrowed(); + let mut url = self.endpoint.clone(); + url.append_path("/azure/client-generator-core/access/internalOperation/internalDecoratorInInternal"); + let mut query_builder = url.query_builder(); + query_builder.set_pair("name", name); + query_builder.build(); + let mut request = Request::new(url, Method::Get); + request.insert_header("accept", "application/json"); + let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { + check_success: CheckSuccessOptions{ success_codes: &[200]}, + ..Default::default() + })).await?; + Ok(rsp.into()) + + } + + /// + /// # Arguments + /// +/// * `options` - Optional parameters for the request. + #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.InternalOperation.noDecoratorInInternal")] + pub(crate) async fn no_decorator_in_internal(&self, name: &str, options: Option>) -> Result> { + let options = options.unwrap_or_default(); + let ctx = options.method_options.context.to_borrowed(); + let mut url = self.endpoint.clone(); + url.append_path("/azure/client-generator-core/access/internalOperation/noDecoratorInInternal"); + let mut query_builder = url.query_builder(); + query_builder.set_pair("name", name); + query_builder.build(); + let mut request = Request::new(url, Method::Get); + request.insert_header("accept", "application/json"); + let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { + check_success: CheckSuccessOptions{ success_codes: &[200]}, + ..Default::default() + })).await?; + Ok(rsp.into()) + + } + + /// + /// # Arguments + /// +/// * `options` - Optional parameters for the request. + #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.InternalOperation.publicDecoratorInInternal")] + pub(crate) async fn public_decorator_in_internal(&self, name: &str, options: Option>) -> Result> { + let options = options.unwrap_or_default(); + let ctx = options.method_options.context.to_borrowed(); + let mut url = self.endpoint.clone(); + url.append_path("/azure/client-generator-core/access/internalOperation/publicDecoratorInInternal"); + let mut query_builder = url.query_builder(); + query_builder.set_pair("name", name); + query_builder.build(); + let mut request = Request::new(url, Method::Get); + request.insert_header("accept", "application/json"); + let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { + check_success: CheckSuccessOptions{ success_codes: &[200]}, + ..Default::default() + })).await?; + Ok(rsp.into()) + + } +} + + diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/mod.rs new file mode 100644 index 000000000..2a390dc02 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/mod.rs @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +mod access_internal_operation_client; +pub use access_internal_operation_client::*; \ No newline at end of file diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/mod.rs new file mode 100644 index 000000000..ac0b31a6a --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/mod.rs @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +/// Clients used to communicate with the service. +pub mod clients; +/// Contains all the data structures and types used by the client library. +pub mod models; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/method_options.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/method_options.rs new file mode 100644 index 000000000..7634c5460 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/method_options.rs @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use azure_core::{fmt::SafeDebug, http::ClientMethodOptions, }; + +/// Options to be passed to [`AccessInternalOperationClient::internal_decorator_in_internal()`](crate::internal_operation::generated::clients::AccessInternalOperationClient::internal_decorator_in_internal()) +#[derive(Clone, Default, SafeDebug)] +pub(crate) struct AccessInternalOperationClientInternalDecoratorInInternalOptions<'a> { + /// Allows customization of the method call. + pub(crate) method_options: ClientMethodOptions<'a>, +} + +/// Options to be passed to [`AccessInternalOperationClient::no_decorator_in_internal()`](crate::internal_operation::generated::clients::AccessInternalOperationClient::no_decorator_in_internal()) +#[derive(Clone, Default, SafeDebug)] +pub(crate) struct AccessInternalOperationClientNoDecoratorInInternalOptions<'a> { + /// Allows customization of the method call. + pub(crate) method_options: ClientMethodOptions<'a>, +} + +/// Options to be passed to [`AccessInternalOperationClient::public_decorator_in_internal()`](crate::internal_operation::generated::clients::AccessInternalOperationClient::public_decorator_in_internal()) +#[derive(Clone, Default, SafeDebug)] +pub(crate) struct AccessInternalOperationClientPublicDecoratorInInternalOptions<'a> { + /// Allows customization of the method call. + pub(crate) method_options: ClientMethodOptions<'a>, +} diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/mod.rs new file mode 100644 index 000000000..15d835c8f --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/mod.rs @@ -0,0 +1,10 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +#[allow(clippy::module_inception)] +mod models; +pub use models::*; +pub(crate) mod method_options; +pub(crate) use method_options::*; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/models.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/models.rs new file mode 100644 index 000000000..e2618eecd --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/models.rs @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use azure_core::fmt::SafeDebug; +use serde::{Deserialize, Serialize, }; + +/// Used in an internal operation, should be generated but not exported. +#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)] +#[non_exhaustive] +pub(crate) struct InternalDecoratorModelInInternal { + #[serde(skip_serializing_if = "Option::is_none")] + pub(crate) name: Option, + +} + +/// Used in an internal operation, should be generated but not exported. +#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)] +#[non_exhaustive] +pub(crate) struct NoDecoratorModelInInternal { + #[serde(skip_serializing_if = "Option::is_none")] + pub(crate) name: Option, + +} + +/// Used in an internal operation but with public decorator, should be generated and exported. +#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)] +#[non_exhaustive] +pub struct PublicDecoratorModelInInternal { + #[serde(skip_serializing_if = "Option::is_none")] + pub name: Option, + +} + diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/mod.rs new file mode 100644 index 000000000..bc612bfcd --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/mod.rs @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +mod generated; +pub use generated::*; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/lib.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/lib.rs new file mode 100644 index 000000000..6987e6793 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/lib.rs @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. + +#![cfg_attr(docsrs, feature(doc_cfg))] + +mod generated; +pub use generated::*; +pub mod internal_operation; +pub mod public_operation; +pub mod relative_model_in_operation; +pub mod shared_model_in_operation; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/access_public_operation_client.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/access_public_operation_client.rs new file mode 100644 index 000000000..b2f5a7a5b --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/access_public_operation_client.rs @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use azure_core::{Result, error::CheckSuccessOptions, http::{Method, Pipeline, PipelineSendOptions, Request, Response, Url, UrlExt, }, tracing, }; +use crate::public_operation::generated::models::{AccessPublicOperationClientNoDecoratorInPublicOptions, AccessPublicOperationClientPublicDecoratorInPublicOptions, NoDecoratorModelInPublic, PublicDecoratorModelInPublic, }; + +#[tracing::client] +pub struct AccessPublicOperationClient { + pub(crate) endpoint: Url, + pub(crate) pipeline: Pipeline, +} + +impl AccessPublicOperationClient { + /// Returns the Url associated with this client. + pub fn endpoint(&self) -> &Url { + &self.endpoint + } + + /// + /// # Arguments + /// +/// * `options` - Optional parameters for the request. + #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.PublicOperation.noDecoratorInPublic")] + pub async fn no_decorator_in_public(&self, name: &str, options: Option>) -> Result> { + let options = options.unwrap_or_default(); + let ctx = options.method_options.context.to_borrowed(); + let mut url = self.endpoint.clone(); + url.append_path("/azure/client-generator-core/access/publicOperation/noDecoratorInPublic"); + let mut query_builder = url.query_builder(); + query_builder.set_pair("name", name); + query_builder.build(); + let mut request = Request::new(url, Method::Get); + request.insert_header("accept", "application/json"); + let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { + check_success: CheckSuccessOptions{ success_codes: &[200]}, + ..Default::default() + })).await?; + Ok(rsp.into()) + + } + + /// + /// # Arguments + /// +/// * `options` - Optional parameters for the request. + #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.PublicOperation.publicDecoratorInPublic")] + pub async fn public_decorator_in_public(&self, name: &str, options: Option>) -> Result> { + let options = options.unwrap_or_default(); + let ctx = options.method_options.context.to_borrowed(); + let mut url = self.endpoint.clone(); + url.append_path("/azure/client-generator-core/access/publicOperation/publicDecoratorInPublic"); + let mut query_builder = url.query_builder(); + query_builder.set_pair("name", name); + query_builder.build(); + let mut request = Request::new(url, Method::Get); + request.insert_header("accept", "application/json"); + let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { + check_success: CheckSuccessOptions{ success_codes: &[200]}, + ..Default::default() + })).await?; + Ok(rsp.into()) + + } +} + + diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/mod.rs new file mode 100644 index 000000000..d8101e97c --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/mod.rs @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +mod access_public_operation_client; +pub use access_public_operation_client::*; \ No newline at end of file diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/mod.rs new file mode 100644 index 000000000..ac0b31a6a --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/mod.rs @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +/// Clients used to communicate with the service. +pub mod clients; +/// Contains all the data structures and types used by the client library. +pub mod models; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/method_options.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/method_options.rs new file mode 100644 index 000000000..9bc143e2b --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/method_options.rs @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use azure_core::{fmt::SafeDebug, http::ClientMethodOptions, }; + +/// Options to be passed to [`AccessPublicOperationClient::no_decorator_in_public()`](crate::public_operation::generated::clients::AccessPublicOperationClient::no_decorator_in_public()) +#[derive(Clone, Default, SafeDebug)] +pub struct AccessPublicOperationClientNoDecoratorInPublicOptions<'a> { + /// Allows customization of the method call. + pub method_options: ClientMethodOptions<'a>, +} + +/// Options to be passed to [`AccessPublicOperationClient::public_decorator_in_public()`](crate::public_operation::generated::clients::AccessPublicOperationClient::public_decorator_in_public()) +#[derive(Clone, Default, SafeDebug)] +pub struct AccessPublicOperationClientPublicDecoratorInPublicOptions<'a> { + /// Allows customization of the method call. + pub method_options: ClientMethodOptions<'a>, +} diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/mod.rs new file mode 100644 index 000000000..4234131b2 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/mod.rs @@ -0,0 +1,10 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +mod method_options; +#[allow(clippy::module_inception)] +mod models; +pub use method_options::*; +pub use models::*; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/models.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/models.rs new file mode 100644 index 000000000..8ce63a5c4 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/models.rs @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use azure_core::fmt::SafeDebug; +use serde::{Deserialize, Serialize, }; + +/// Used in a public operation, should be generated and exported. +#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)] +#[non_exhaustive] +pub struct NoDecoratorModelInPublic { + #[serde(skip_serializing_if = "Option::is_none")] + pub name: Option, + +} + +/// Used in a public operation, should be generated and exported. +#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)] +#[non_exhaustive] +pub struct PublicDecoratorModelInPublic { + #[serde(skip_serializing_if = "Option::is_none")] + pub name: Option, + +} + diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/mod.rs new file mode 100644 index 000000000..bc612bfcd --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/mod.rs @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +mod generated; +pub use generated::*; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/access_relative_model_in_operation_client.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/access_relative_model_in_operation_client.rs new file mode 100644 index 000000000..cd7269065 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/access_relative_model_in_operation_client.rs @@ -0,0 +1,87 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use azure_core::{Result, error::CheckSuccessOptions, http::{Method, Pipeline, PipelineSendOptions, Request, Response, Url, UrlExt, }, tracing, }; +use crate::relative_model_in_operation::generated::models::{AbstractModel, AccessRelativeModelInOperationClientDiscriminatorOptions, AccessRelativeModelInOperationClientOperationOptions, OuterModel, }; + +#[tracing::client] +pub struct AccessRelativeModelInOperationClient { + pub(crate) endpoint: Url, + pub(crate) pipeline: Pipeline, +} + +impl AccessRelativeModelInOperationClient { + /// Returns the Url associated with this client. + pub fn endpoint(&self) -> &Url { + &self.endpoint + } + + /// Expected query parameter: kind="real" +/// Expected response body: +/// ```json +/// { +/// "name": "Madge", +/// "kind": "real" +/// } +/// ``` + /// + /// # Arguments + /// +/// * `options` - Optional parameters for the request. + #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.RelativeModelInOperation.discriminator")] + pub(crate) async fn discriminator(&self, kind: &str, options: Option>) -> Result> { + let options = options.unwrap_or_default(); + let ctx = options.method_options.context.to_borrowed(); + let mut url = self.endpoint.clone(); + url.append_path("/azure/client-generator-core/access/relativeModelInOperation/discriminator"); + let mut query_builder = url.query_builder(); + query_builder.set_pair("kind", kind); + query_builder.build(); + let mut request = Request::new(url, Method::Get); + request.insert_header("accept", "application/json"); + let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { + check_success: CheckSuccessOptions{ success_codes: &[200]}, + ..Default::default() + })).await?; + Ok(rsp.into()) + + } + + /// Expected query parameter: name="Madge" +/// Expected response body: +/// ```json +/// { +/// "name": "Madge", +/// "inner": +/// { +/// "name": "Madge" +/// } +/// } +/// ``` + /// + /// # Arguments + /// +/// * `options` - Optional parameters for the request. + #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.RelativeModelInOperation.operation")] + pub(crate) async fn operation(&self, name: &str, options: Option>) -> Result> { + let options = options.unwrap_or_default(); + let ctx = options.method_options.context.to_borrowed(); + let mut url = self.endpoint.clone(); + url.append_path("/azure/client-generator-core/access/relativeModelInOperation/operation"); + let mut query_builder = url.query_builder(); + query_builder.set_pair("name", name); + query_builder.build(); + let mut request = Request::new(url, Method::Get); + request.insert_header("accept", "application/json"); + let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { + check_success: CheckSuccessOptions{ success_codes: &[200]}, + ..Default::default() + })).await?; + Ok(rsp.into()) + + } +} + + diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/mod.rs new file mode 100644 index 000000000..f3f72a31d --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/mod.rs @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +mod access_relative_model_in_operation_client; +pub use access_relative_model_in_operation_client::*; \ No newline at end of file diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/mod.rs new file mode 100644 index 000000000..ac0b31a6a --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/mod.rs @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +/// Clients used to communicate with the service. +pub mod clients; +/// Contains all the data structures and types used by the client library. +pub mod models; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/method_options.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/method_options.rs new file mode 100644 index 000000000..87b279f67 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/method_options.rs @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use azure_core::{fmt::SafeDebug, http::ClientMethodOptions, }; + +/// Options to be passed to [`AccessRelativeModelInOperationClient::discriminator()`](crate::relative_model_in_operation::generated::clients::AccessRelativeModelInOperationClient::discriminator()) +#[derive(Clone, Default, SafeDebug)] +pub(crate) struct AccessRelativeModelInOperationClientDiscriminatorOptions<'a> { + /// Allows customization of the method call. + pub(crate) method_options: ClientMethodOptions<'a>, +} + +/// Options to be passed to [`AccessRelativeModelInOperationClient::operation()`](crate::relative_model_in_operation::generated::clients::AccessRelativeModelInOperationClient::operation()) +#[derive(Clone, Default, SafeDebug)] +pub(crate) struct AccessRelativeModelInOperationClientOperationOptions<'a> { + /// Allows customization of the method call. + pub(crate) method_options: ClientMethodOptions<'a>, +} diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/mod.rs new file mode 100644 index 000000000..58e5f0512 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/mod.rs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +mod models_impl; +mod unions_serde; +pub(crate) mod method_options; +#[allow(clippy::module_inception)] +pub(crate) mod models; +pub(crate) mod unions; +pub(crate) use method_options::*; +pub(crate) use models::*; +pub(crate) use unions::*; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models.rs new file mode 100644 index 000000000..2aeb7860f --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models.rs @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use azure_core::fmt::SafeDebug; +use serde::{Deserialize, Serialize, }; + +/// Used in internal operations, should be generated but not exported. +#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)] +#[non_exhaustive] +pub(crate) struct InnerModel { + #[serde(skip_serializing_if = "Option::is_none")] + pub(crate) name: Option, + +} + +/// Used in internal operations, should be generated but not exported. +#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)] +#[non_exhaustive] +pub(crate) struct OuterModel { + #[serde(skip_serializing_if = "Option::is_none")] + pub(crate) inner: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub(crate) name: Option, + +} + +/// Used in internal operations, should be generated but not exported. +#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)] +#[non_exhaustive] +#[serde(rename = "real", tag = "kind")] +pub(crate) struct RealModel { + #[serde(skip_serializing_if = "Option::is_none")] + pub(crate) name: Option, + +} + diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models_impl.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models_impl.rs new file mode 100644 index 000000000..37c37cf3f --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models_impl.rs @@ -0,0 +1,13 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use super::{AbstractModel, RealModel, }; + +impl From for AbstractModel { + fn from(value: RealModel) -> Self { + Self::RealModel(value) + } +} + diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions.rs new file mode 100644 index 000000000..abb8da989 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions.rs @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use azure_core::fmt::SafeDebug; +use serde::Deserialize; +use super::RealModel; + + #[doc = r#"Used in internal operations, should be generated but not exported."#] +#[derive(Clone, Deserialize, SafeDebug)] +#[serde(tag = "kind")] +pub(crate) enum AbstractModel { +#[serde(rename = "real")] + RealModel(RealModel), + + #[serde(untagged)] + UnknownKind { +/// Discriminator property for AbstractModel. + kind: Option, + + name: Option, + + }, +} + diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions_serde.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions_serde.rs new file mode 100644 index 000000000..480beba0b --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions_serde.rs @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use serde::{Serialize, Serializer, }; +use super::{AbstractModel, RealModel, }; + +impl Serialize for AbstractModel { + fn serialize(&self, serializer: S) -> Result where S: Serializer { + match self { + AbstractModel::RealModel(real_model) => { + RealModel::serialize(real_model, serializer) + }, + AbstractModel::UnknownKind {kind, name, } => { + #[derive(Serialize)] + struct UnknownKind<'a> { + #[serde(skip_serializing_if = "Option::is_none")] + kind: &'a Option, + #[serde(skip_serializing_if = "Option::is_none")] + name: &'a Option, + } + UnknownKind::serialize(&UnknownKind { kind, name }, serializer) + }, + } + } +} + diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/mod.rs new file mode 100644 index 000000000..bc612bfcd --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/mod.rs @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +mod generated; +pub use generated::*; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/access_shared_model_in_operation_client.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/access_shared_model_in_operation_client.rs new file mode 100644 index 000000000..789df0a53 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/access_shared_model_in_operation_client.rs @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use azure_core::{Result, error::CheckSuccessOptions, http::{Method, Pipeline, PipelineSendOptions, Request, Response, Url, UrlExt, }, tracing, }; +use crate::shared_model_in_operation::generated::models::{AccessSharedModelInOperationClientInternalOptions, AccessSharedModelInOperationClientPublicOptions, SharedModel, }; + +#[tracing::client] +pub struct AccessSharedModelInOperationClient { + pub(crate) endpoint: Url, + pub(crate) pipeline: Pipeline, +} + +impl AccessSharedModelInOperationClient { + /// Returns the Url associated with this client. + pub fn endpoint(&self) -> &Url { + &self.endpoint + } + + /// + /// # Arguments + /// +/// * `options` - Optional parameters for the request. + #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.SharedModelInOperation.internal")] + pub(crate) async fn internal(&self, name: &str, options: Option>) -> Result> { + let options = options.unwrap_or_default(); + let ctx = options.method_options.context.to_borrowed(); + let mut url = self.endpoint.clone(); + url.append_path("/azure/client-generator-core/access/sharedModelInOperation/internal"); + let mut query_builder = url.query_builder(); + query_builder.set_pair("name", name); + query_builder.build(); + let mut request = Request::new(url, Method::Get); + request.insert_header("accept", "application/json"); + let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { + check_success: CheckSuccessOptions{ success_codes: &[200]}, + ..Default::default() + })).await?; + Ok(rsp.into()) + + } + + /// + /// # Arguments + /// +/// * `options` - Optional parameters for the request. + #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.SharedModelInOperation.public")] + pub async fn public(&self, name: &str, options: Option>) -> Result> { + let options = options.unwrap_or_default(); + let ctx = options.method_options.context.to_borrowed(); + let mut url = self.endpoint.clone(); + url.append_path("/azure/client-generator-core/access/sharedModelInOperation/public"); + let mut query_builder = url.query_builder(); + query_builder.set_pair("name", name); + query_builder.build(); + let mut request = Request::new(url, Method::Get); + request.insert_header("accept", "application/json"); + let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { + check_success: CheckSuccessOptions{ success_codes: &[200]}, + ..Default::default() + })).await?; + Ok(rsp.into()) + + } +} + + diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/mod.rs new file mode 100644 index 000000000..2f5abe39b --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/mod.rs @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +mod access_shared_model_in_operation_client; +pub use access_shared_model_in_operation_client::*; \ No newline at end of file diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/mod.rs new file mode 100644 index 000000000..ac0b31a6a --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/mod.rs @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +/// Clients used to communicate with the service. +pub mod clients; +/// Contains all the data structures and types used by the client library. +pub mod models; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/method_options.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/method_options.rs new file mode 100644 index 000000000..67ce688ab --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/method_options.rs @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use azure_core::{fmt::SafeDebug, http::ClientMethodOptions, }; + +/// Options to be passed to [`AccessSharedModelInOperationClient::internal()`](crate::shared_model_in_operation::generated::clients::AccessSharedModelInOperationClient::internal()) +#[derive(Clone, Default, SafeDebug)] +pub(crate) struct AccessSharedModelInOperationClientInternalOptions<'a> { + /// Allows customization of the method call. + pub(crate) method_options: ClientMethodOptions<'a>, +} + +/// Options to be passed to [`AccessSharedModelInOperationClient::public()`](crate::shared_model_in_operation::generated::clients::AccessSharedModelInOperationClient::public()) +#[derive(Clone, Default, SafeDebug)] +pub struct AccessSharedModelInOperationClientPublicOptions<'a> { + /// Allows customization of the method call. + pub method_options: ClientMethodOptions<'a>, +} diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/mod.rs new file mode 100644 index 000000000..4234131b2 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/mod.rs @@ -0,0 +1,10 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +mod method_options; +#[allow(clippy::module_inception)] +mod models; +pub use method_options::*; +pub use models::*; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/models.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/models.rs new file mode 100644 index 000000000..ab94378b6 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/models.rs @@ -0,0 +1,17 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +use azure_core::fmt::SafeDebug; +use serde::{Deserialize, Serialize, }; + +/// Used by both public and internal operation. It should be generated and exported. +#[derive(Clone, Default, Deserialize, SafeDebug, Serialize)] +#[non_exhaustive] +pub struct SharedModel { + #[serde(skip_serializing_if = "Option::is_none")] + pub name: Option, + +} + diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/mod.rs new file mode 100644 index 000000000..bc612bfcd --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/mod.rs @@ -0,0 +1,7 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// +// Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. + +mod generated; +pub use generated::*; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/tests/access_client_test.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/tests/access_client_test.rs new file mode 100644 index 000000000..86df05427 --- /dev/null +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/tests/access_client_test.rs @@ -0,0 +1,121 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// +// Licensed under the MIT License. See License.txt in the project root for license information. + +use spector_access::{AccessClient}; + +// #[tokio::test] +// async fn internal_operation() { +// let client = AccessClient::with_no_credential("http://localhost:3000", None).unwrap(); +// let client = client.get_access_internal_operation_client(); + +// We can enable the compilation of the block below via some emitter option to emit internal as public. +// let resp = client +// .no_decorator_in_internal("sample", None) +// .await +// .unwrap(); +// assert_eq!(resp.status(), 200); +// let resp = resp.into_model().unwrap(); +// assert!(resp.name.is_some()); +// assert_eq!(resp.name.unwrap(), "sample".to_string()); + +// Same as above, we can enable the compilation of the block below via some emitter option to emit internal as public. +// let resp = client +// .internal_decorator_in_internal("sample", None) +// .await +// .unwrap(); +// assert_eq!(resp.status(), 200); +// let resp = resp.into_model().unwrap(); +// assert!(resp.name.is_some()); +// assert_eq!(resp.name.unwrap(), "sample".to_string()); + +// The block below should compile without any emitter options. The fact that public_decorator_in_internal() is not exposed is rather a bug. +// let resp = client +// .public_decorator_in_internal("sample", None) +// .await +// .unwrap(); +// assert_eq!(resp.status(), 200); +// let resp = resp.into_model().unwrap(); +// assert!(resp.name.is_some()); +// assert_eq!(resp.name.unwrap(), "sample".to_string()); +// } + +#[tokio::test] +async fn public_operation() { + let client = AccessClient::with_no_credential("http://localhost:3000", None).unwrap(); + let client = client.get_access_public_operation_client(); + + let resp = client + .no_decorator_in_public("sample", None) + .await + .unwrap(); + assert_eq!(resp.status(), 200); + let resp = resp.into_model().unwrap(); + assert!(resp.name.is_some()); + assert_eq!(resp.name.unwrap(), "sample".to_string()); + + let resp = client + .public_decorator_in_public("sample", None) + .await + .unwrap(); + assert_eq!(resp.status(), 200); + let resp = resp.into_model().unwrap(); + assert!(resp.name.is_some()); + assert_eq!(resp.name.unwrap(), "sample".to_string()); +} + +#[tokio::test] +async fn shared_model_in_operation() { + let client = AccessClient::with_no_credential("http://localhost:3000", None).unwrap(); + let client = client.get_access_shared_model_in_operation_client(); + + let resp = client + .public("sample", None) + .await + .unwrap(); + assert_eq!(resp.status(), 200); + let resp = resp.into_model().unwrap(); + assert!(resp.name.is_some()); + assert_eq!(resp.name.unwrap(), "sample".to_string()); + + // We can enable the compilation of the block below via some emitter option to emit internal as public. + // let resp = client + // .internal("sample", None) + // .await + // .unwrap(); + // assert_eq!(resp.status(), 200); + // let resp = resp.into_model().unwrap(); + // assert!(resp.name.is_some()); + // assert_eq!(resp.name.unwrap(), "sample".to_string()); +} + +// #[tokio::test] +// async fn relative_model_in_operation() { +// let client = AccessClient::with_no_credential("http://localhost:3000", None).unwrap(); +// let client = client.get_access_relative_model_in_operation_client(); + +// We can enable the compilation of the block below via some emitter option to emit internal as public. +// let resp = client +// .operation("Madge", None) +// .await +// .unwrap(); +// assert_eq!(resp.status(), 200); +// let resp = resp.into_model().unwrap(); +// assert!(resp.name.is_some()); +// assert_eq!(resp.name.unwrap(), "Madge".to_string()); +// assert!(resp.inner.is_some()); +// assert!(resp.inner.unwrap().name.is_some()); +// assert_eq!(resp.inner.unwrap().name.unwrap(), "Madge".to_string()); + +// We can enable the compilation of the block below via some emitter option to emit internal as public. +// let resp = client +// .discriminator("real", None) +// .await +// .unwrap(); +// assert_eq!(resp.status(), 200); +// let resp = resp.into_model().unwrap(); +// assert!(resp.name.is_some()); +// assert_eq!(resp.name.unwrap(), "Madge".to_string()); +// assert!(resp.kind.is_some()); +// assert_eq!(resp.kind.unwrap(), "real".to_string()); +// } From 0a0cd82b33d08098339aa3ab92f9606025d3e41a Mon Sep 17 00:00:00 2001 From: Anton Kolesnyk Date: Wed, 11 Mar 2026 15:46:48 -0700 Subject: [PATCH 2/2] Cargo fmt --- .../src/generated/clients/access_client.rs | 47 +++++-- .../access/src/generated/clients/mod.rs | 2 +- .../access_internal_operation_client.rs | 123 +++++++++++++----- .../generated/clients/mod.rs | 2 +- .../generated/models/method_options.rs | 2 +- .../generated/models/models.rs | 6 +- .../clients/access_public_operation_client.rs | 82 ++++++++---- .../public_operation/generated/clients/mod.rs | 2 +- .../generated/models/method_options.rs | 2 +- .../generated/models/models.rs | 5 +- ...cess_relative_model_in_operation_client.rs | 111 ++++++++++------ .../generated/clients/mod.rs | 2 +- .../generated/models/method_options.rs | 2 +- .../generated/models/mod.rs | 4 +- .../generated/models/models.rs | 6 +- .../generated/models/models_impl.rs | 3 +- .../generated/models/unions.rs | 10 +- .../generated/models/unions_serde.rs | 34 ++--- ...access_shared_model_in_operation_client.rs | 73 ++++++++--- .../generated/clients/mod.rs | 2 +- .../generated/models/method_options.rs | 2 +- .../generated/models/models.rs | 4 +- .../access/tests/access_client_test.rs | 12 +- 23 files changed, 346 insertions(+), 192 deletions(-) diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/access_client.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/access_client.rs index 1ace98bbb..b1e18764c 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/access_client.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/access_client.rs @@ -3,8 +3,17 @@ // // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. -use azure_core::{Result, fmt::SafeDebug, http::{ClientOptions, Pipeline, Url, }, tracing, }; -use crate::{internal_operation::clients::AccessInternalOperationClient, public_operation::clients::AccessPublicOperationClient, relative_model_in_operation::clients::AccessRelativeModelInOperationClient, shared_model_in_operation::clients::AccessSharedModelInOperationClient, }; +use crate::{ + internal_operation::clients::AccessInternalOperationClient, + public_operation::clients::AccessPublicOperationClient, + relative_model_in_operation::clients::AccessRelativeModelInOperationClient, + shared_model_in_operation::clients::AccessSharedModelInOperationClient, +}; +use azure_core::{ + fmt::SafeDebug, + http::{ClientOptions, Pipeline, Url}, + tracing, Result, +}; /// Test for internal decorator. #[tracing::client] @@ -16,7 +25,7 @@ pub struct AccessClient { /// Options used when creating a [`AccessClient`](AccessClient) #[derive(Clone, Default, SafeDebug)] pub struct AccessClientOptions { -/// Allows customization of the client. + /// Allows customization of the client. pub client_options: ClientOptions, } @@ -25,22 +34,30 @@ impl AccessClient { /// /// # Arguments /// -/// * `endpoint` - Service host -/// * `options` - Optional configuration for the client. + /// * `endpoint` - Service host + /// * `options` - Optional configuration for the client. #[tracing::new("_Specs_.Azure.ClientGenerator.Core.Access")] - pub fn with_no_credential(endpoint: &str, options: Option) -> Result { - let options = options.unwrap_or_default(); + pub fn with_no_credential( + endpoint: &str, + options: Option, + ) -> Result { + let options = options.unwrap_or_default(); let endpoint = Url::parse(endpoint)?; if !endpoint.scheme().starts_with("http") { - return Err(azure_core::Error::with_message(azure_core::error::ErrorKind::Other, format!("{endpoint} must use http(s)"))); - } Ok(Self { + return Err(azure_core::Error::with_message( + azure_core::error::ErrorKind::Other, + format!("{endpoint} must use http(s)"), + )); + } + Ok(Self { endpoint, pipeline: Pipeline::new( option_env!("CARGO_PKG_NAME"), option_env!("CARGO_PKG_VERSION"), options.client_options, Vec::default(), - Vec::default(), None, + Vec::default(), + None, ), }) } @@ -70,7 +87,9 @@ impl AccessClient { /// Returns a new instance of AccessRelativeModelInOperationClient. #[tracing::subclient] - pub fn get_access_relative_model_in_operation_client(&self) -> AccessRelativeModelInOperationClient { + pub fn get_access_relative_model_in_operation_client( + &self, + ) -> AccessRelativeModelInOperationClient { AccessRelativeModelInOperationClient { endpoint: self.endpoint.clone(), pipeline: self.pipeline.clone(), @@ -79,12 +98,12 @@ impl AccessClient { /// Returns a new instance of AccessSharedModelInOperationClient. #[tracing::subclient] - pub fn get_access_shared_model_in_operation_client(&self) -> AccessSharedModelInOperationClient { + pub fn get_access_shared_model_in_operation_client( + &self, + ) -> AccessSharedModelInOperationClient { AccessSharedModelInOperationClient { endpoint: self.endpoint.clone(), pipeline: self.pipeline.clone(), } } } - - diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/mod.rs index 114b75569..e06308e9a 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/mod.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/generated/clients/mod.rs @@ -4,4 +4,4 @@ // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. mod access_client; -pub use access_client::*; \ No newline at end of file +pub use access_client::*; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/access_internal_operation_client.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/access_internal_operation_client.rs index ec10bfd3b..377f736c7 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/access_internal_operation_client.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/access_internal_operation_client.rs @@ -3,8 +3,17 @@ // // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. -use azure_core::{Result, error::CheckSuccessOptions, http::{Method, Pipeline, PipelineSendOptions, Request, Response, Url, UrlExt, }, tracing, }; -use crate::internal_operation::generated::models::{AccessInternalOperationClientInternalDecoratorInInternalOptions, AccessInternalOperationClientNoDecoratorInInternalOptions, AccessInternalOperationClientPublicDecoratorInInternalOptions, InternalDecoratorModelInInternal, NoDecoratorModelInInternal, PublicDecoratorModelInInternal, }; +use crate::internal_operation::generated::models::{ + AccessInternalOperationClientInternalDecoratorInInternalOptions, + AccessInternalOperationClientNoDecoratorInInternalOptions, + AccessInternalOperationClientPublicDecoratorInInternalOptions, + InternalDecoratorModelInInternal, NoDecoratorModelInInternal, PublicDecoratorModelInInternal, +}; +use azure_core::{ + error::CheckSuccessOptions, + http::{Method, Pipeline, PipelineSendOptions, Request, Response, Url, UrlExt}, + tracing, Result, +}; #[tracing::client] pub struct AccessInternalOperationClient { @@ -18,74 +27,120 @@ impl AccessInternalOperationClient { &self.endpoint } - /// + /// /// # Arguments /// -/// * `options` - Optional parameters for the request. - #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.InternalOperation.internalDecoratorInInternal")] - pub(crate) async fn internal_decorator_in_internal(&self, name: &str, options: Option>) -> Result> { + /// * `options` - Optional parameters for the request. + #[tracing::function( + "_Specs_.Azure.ClientGenerator.Core.Access.InternalOperation.internalDecoratorInInternal" + )] + pub(crate) async fn internal_decorator_in_internal( + &self, + name: &str, + options: Option>, + ) -> Result> { let options = options.unwrap_or_default(); let ctx = options.method_options.context.to_borrowed(); let mut url = self.endpoint.clone(); - url.append_path("/azure/client-generator-core/access/internalOperation/internalDecoratorInInternal"); + url.append_path( + "/azure/client-generator-core/access/internalOperation/internalDecoratorInInternal", + ); let mut query_builder = url.query_builder(); query_builder.set_pair("name", name); query_builder.build(); let mut request = Request::new(url, Method::Get); request.insert_header("accept", "application/json"); - let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { - check_success: CheckSuccessOptions{ success_codes: &[200]}, - ..Default::default() - })).await?; + let rsp = self + .pipeline + .send( + &ctx, + &mut request, + Some(PipelineSendOptions { + check_success: CheckSuccessOptions { + success_codes: &[200], + }, + ..Default::default() + }), + ) + .await?; Ok(rsp.into()) - } - /// + /// /// # Arguments /// -/// * `options` - Optional parameters for the request. - #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.InternalOperation.noDecoratorInInternal")] - pub(crate) async fn no_decorator_in_internal(&self, name: &str, options: Option>) -> Result> { + /// * `options` - Optional parameters for the request. + #[tracing::function( + "_Specs_.Azure.ClientGenerator.Core.Access.InternalOperation.noDecoratorInInternal" + )] + pub(crate) async fn no_decorator_in_internal( + &self, + name: &str, + options: Option>, + ) -> Result> { let options = options.unwrap_or_default(); let ctx = options.method_options.context.to_borrowed(); let mut url = self.endpoint.clone(); - url.append_path("/azure/client-generator-core/access/internalOperation/noDecoratorInInternal"); + url.append_path( + "/azure/client-generator-core/access/internalOperation/noDecoratorInInternal", + ); let mut query_builder = url.query_builder(); query_builder.set_pair("name", name); query_builder.build(); let mut request = Request::new(url, Method::Get); request.insert_header("accept", "application/json"); - let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { - check_success: CheckSuccessOptions{ success_codes: &[200]}, - ..Default::default() - })).await?; + let rsp = self + .pipeline + .send( + &ctx, + &mut request, + Some(PipelineSendOptions { + check_success: CheckSuccessOptions { + success_codes: &[200], + }, + ..Default::default() + }), + ) + .await?; Ok(rsp.into()) - } - /// + /// /// # Arguments /// -/// * `options` - Optional parameters for the request. - #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.InternalOperation.publicDecoratorInInternal")] - pub(crate) async fn public_decorator_in_internal(&self, name: &str, options: Option>) -> Result> { + /// * `options` - Optional parameters for the request. + #[tracing::function( + "_Specs_.Azure.ClientGenerator.Core.Access.InternalOperation.publicDecoratorInInternal" + )] + pub(crate) async fn public_decorator_in_internal( + &self, + name: &str, + options: Option>, + ) -> Result> { let options = options.unwrap_or_default(); let ctx = options.method_options.context.to_borrowed(); let mut url = self.endpoint.clone(); - url.append_path("/azure/client-generator-core/access/internalOperation/publicDecoratorInInternal"); + url.append_path( + "/azure/client-generator-core/access/internalOperation/publicDecoratorInInternal", + ); let mut query_builder = url.query_builder(); query_builder.set_pair("name", name); query_builder.build(); let mut request = Request::new(url, Method::Get); request.insert_header("accept", "application/json"); - let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { - check_success: CheckSuccessOptions{ success_codes: &[200]}, - ..Default::default() - })).await?; + let rsp = self + .pipeline + .send( + &ctx, + &mut request, + Some(PipelineSendOptions { + check_success: CheckSuccessOptions { + success_codes: &[200], + }, + ..Default::default() + }), + ) + .await?; Ok(rsp.into()) - } } - - diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/mod.rs index 2a390dc02..0babc851a 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/mod.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/clients/mod.rs @@ -4,4 +4,4 @@ // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. mod access_internal_operation_client; -pub use access_internal_operation_client::*; \ No newline at end of file +pub use access_internal_operation_client::*; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/method_options.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/method_options.rs index 7634c5460..874ab637a 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/method_options.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/method_options.rs @@ -3,7 +3,7 @@ // // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. -use azure_core::{fmt::SafeDebug, http::ClientMethodOptions, }; +use azure_core::{fmt::SafeDebug, http::ClientMethodOptions}; /// Options to be passed to [`AccessInternalOperationClient::internal_decorator_in_internal()`](crate::internal_operation::generated::clients::AccessInternalOperationClient::internal_decorator_in_internal()) #[derive(Clone, Default, SafeDebug)] diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/models.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/models.rs index e2618eecd..d97c4d48b 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/models.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/internal_operation/generated/models/models.rs @@ -4,7 +4,7 @@ // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. use azure_core::fmt::SafeDebug; -use serde::{Deserialize, Serialize, }; +use serde::{Deserialize, Serialize}; /// Used in an internal operation, should be generated but not exported. #[derive(Clone, Default, Deserialize, SafeDebug, Serialize)] @@ -12,7 +12,6 @@ use serde::{Deserialize, Serialize, }; pub(crate) struct InternalDecoratorModelInInternal { #[serde(skip_serializing_if = "Option::is_none")] pub(crate) name: Option, - } /// Used in an internal operation, should be generated but not exported. @@ -21,7 +20,6 @@ pub(crate) struct InternalDecoratorModelInInternal { pub(crate) struct NoDecoratorModelInInternal { #[serde(skip_serializing_if = "Option::is_none")] pub(crate) name: Option, - } /// Used in an internal operation but with public decorator, should be generated and exported. @@ -30,6 +28,4 @@ pub(crate) struct NoDecoratorModelInInternal { pub struct PublicDecoratorModelInInternal { #[serde(skip_serializing_if = "Option::is_none")] pub name: Option, - } - diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/access_public_operation_client.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/access_public_operation_client.rs index b2f5a7a5b..42a20120b 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/access_public_operation_client.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/access_public_operation_client.rs @@ -3,8 +3,16 @@ // // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. -use azure_core::{Result, error::CheckSuccessOptions, http::{Method, Pipeline, PipelineSendOptions, Request, Response, Url, UrlExt, }, tracing, }; -use crate::public_operation::generated::models::{AccessPublicOperationClientNoDecoratorInPublicOptions, AccessPublicOperationClientPublicDecoratorInPublicOptions, NoDecoratorModelInPublic, PublicDecoratorModelInPublic, }; +use crate::public_operation::generated::models::{ + AccessPublicOperationClientNoDecoratorInPublicOptions, + AccessPublicOperationClientPublicDecoratorInPublicOptions, NoDecoratorModelInPublic, + PublicDecoratorModelInPublic, +}; +use azure_core::{ + error::CheckSuccessOptions, + http::{Method, Pipeline, PipelineSendOptions, Request, Response, Url, UrlExt}, + tracing, Result, +}; #[tracing::client] pub struct AccessPublicOperationClient { @@ -18,12 +26,18 @@ impl AccessPublicOperationClient { &self.endpoint } - /// + /// /// # Arguments /// -/// * `options` - Optional parameters for the request. - #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.PublicOperation.noDecoratorInPublic")] - pub async fn no_decorator_in_public(&self, name: &str, options: Option>) -> Result> { + /// * `options` - Optional parameters for the request. + #[tracing::function( + "_Specs_.Azure.ClientGenerator.Core.Access.PublicOperation.noDecoratorInPublic" + )] + pub async fn no_decorator_in_public( + &self, + name: &str, + options: Option>, + ) -> Result> { let options = options.unwrap_or_default(); let ctx = options.method_options.context.to_borrowed(); let mut url = self.endpoint.clone(); @@ -33,36 +47,58 @@ impl AccessPublicOperationClient { query_builder.build(); let mut request = Request::new(url, Method::Get); request.insert_header("accept", "application/json"); - let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { - check_success: CheckSuccessOptions{ success_codes: &[200]}, - ..Default::default() - })).await?; + let rsp = self + .pipeline + .send( + &ctx, + &mut request, + Some(PipelineSendOptions { + check_success: CheckSuccessOptions { + success_codes: &[200], + }, + ..Default::default() + }), + ) + .await?; Ok(rsp.into()) - } - /// + /// /// # Arguments /// -/// * `options` - Optional parameters for the request. - #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.PublicOperation.publicDecoratorInPublic")] - pub async fn public_decorator_in_public(&self, name: &str, options: Option>) -> Result> { + /// * `options` - Optional parameters for the request. + #[tracing::function( + "_Specs_.Azure.ClientGenerator.Core.Access.PublicOperation.publicDecoratorInPublic" + )] + pub async fn public_decorator_in_public( + &self, + name: &str, + options: Option>, + ) -> Result> { let options = options.unwrap_or_default(); let ctx = options.method_options.context.to_borrowed(); let mut url = self.endpoint.clone(); - url.append_path("/azure/client-generator-core/access/publicOperation/publicDecoratorInPublic"); + url.append_path( + "/azure/client-generator-core/access/publicOperation/publicDecoratorInPublic", + ); let mut query_builder = url.query_builder(); query_builder.set_pair("name", name); query_builder.build(); let mut request = Request::new(url, Method::Get); request.insert_header("accept", "application/json"); - let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { - check_success: CheckSuccessOptions{ success_codes: &[200]}, - ..Default::default() - })).await?; + let rsp = self + .pipeline + .send( + &ctx, + &mut request, + Some(PipelineSendOptions { + check_success: CheckSuccessOptions { + success_codes: &[200], + }, + ..Default::default() + }), + ) + .await?; Ok(rsp.into()) - } } - - diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/mod.rs index d8101e97c..5c2e2fb29 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/mod.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/clients/mod.rs @@ -4,4 +4,4 @@ // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. mod access_public_operation_client; -pub use access_public_operation_client::*; \ No newline at end of file +pub use access_public_operation_client::*; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/method_options.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/method_options.rs index 9bc143e2b..f7f4ee145 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/method_options.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/method_options.rs @@ -3,7 +3,7 @@ // // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. -use azure_core::{fmt::SafeDebug, http::ClientMethodOptions, }; +use azure_core::{fmt::SafeDebug, http::ClientMethodOptions}; /// Options to be passed to [`AccessPublicOperationClient::no_decorator_in_public()`](crate::public_operation::generated::clients::AccessPublicOperationClient::no_decorator_in_public()) #[derive(Clone, Default, SafeDebug)] diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/models.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/models.rs index 8ce63a5c4..fd442db14 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/models.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/public_operation/generated/models/models.rs @@ -4,7 +4,7 @@ // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. use azure_core::fmt::SafeDebug; -use serde::{Deserialize, Serialize, }; +use serde::{Deserialize, Serialize}; /// Used in a public operation, should be generated and exported. #[derive(Clone, Default, Deserialize, SafeDebug, Serialize)] @@ -12,7 +12,6 @@ use serde::{Deserialize, Serialize, }; pub struct NoDecoratorModelInPublic { #[serde(skip_serializing_if = "Option::is_none")] pub name: Option, - } /// Used in a public operation, should be generated and exported. @@ -21,6 +20,4 @@ pub struct NoDecoratorModelInPublic { pub struct PublicDecoratorModelInPublic { #[serde(skip_serializing_if = "Option::is_none")] pub name: Option, - } - diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/access_relative_model_in_operation_client.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/access_relative_model_in_operation_client.rs index cd7269065..45cb28e0b 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/access_relative_model_in_operation_client.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/access_relative_model_in_operation_client.rs @@ -3,8 +3,15 @@ // // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. -use azure_core::{Result, error::CheckSuccessOptions, http::{Method, Pipeline, PipelineSendOptions, Request, Response, Url, UrlExt, }, tracing, }; -use crate::relative_model_in_operation::generated::models::{AbstractModel, AccessRelativeModelInOperationClientDiscriminatorOptions, AccessRelativeModelInOperationClientOperationOptions, OuterModel, }; +use crate::relative_model_in_operation::generated::models::{ + AbstractModel, AccessRelativeModelInOperationClientDiscriminatorOptions, + AccessRelativeModelInOperationClientOperationOptions, OuterModel, +}; +use azure_core::{ + error::CheckSuccessOptions, + http::{Method, Pipeline, PipelineSendOptions, Request, Response, Url, UrlExt}, + tracing, Result, +}; #[tracing::client] pub struct AccessRelativeModelInOperationClient { @@ -19,53 +26,75 @@ impl AccessRelativeModelInOperationClient { } /// Expected query parameter: kind="real" -/// Expected response body: -/// ```json -/// { -/// "name": "Madge", -/// "kind": "real" -/// } -/// ``` + /// Expected response body: + /// ```json + /// { + /// "name": "Madge", + /// "kind": "real" + /// } + /// ``` /// /// # Arguments /// -/// * `options` - Optional parameters for the request. - #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.RelativeModelInOperation.discriminator")] - pub(crate) async fn discriminator(&self, kind: &str, options: Option>) -> Result> { + /// * `options` - Optional parameters for the request. + #[tracing::function( + "_Specs_.Azure.ClientGenerator.Core.Access.RelativeModelInOperation.discriminator" + )] + pub(crate) async fn discriminator( + &self, + kind: &str, + options: Option>, + ) -> Result> { let options = options.unwrap_or_default(); let ctx = options.method_options.context.to_borrowed(); let mut url = self.endpoint.clone(); - url.append_path("/azure/client-generator-core/access/relativeModelInOperation/discriminator"); + url.append_path( + "/azure/client-generator-core/access/relativeModelInOperation/discriminator", + ); let mut query_builder = url.query_builder(); query_builder.set_pair("kind", kind); query_builder.build(); let mut request = Request::new(url, Method::Get); request.insert_header("accept", "application/json"); - let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { - check_success: CheckSuccessOptions{ success_codes: &[200]}, - ..Default::default() - })).await?; + let rsp = self + .pipeline + .send( + &ctx, + &mut request, + Some(PipelineSendOptions { + check_success: CheckSuccessOptions { + success_codes: &[200], + }, + ..Default::default() + }), + ) + .await?; Ok(rsp.into()) - } /// Expected query parameter: name="Madge" -/// Expected response body: -/// ```json -/// { -/// "name": "Madge", -/// "inner": -/// { -/// "name": "Madge" -/// } -/// } -/// ``` + /// Expected response body: + /// ```json + /// { + /// "name": "Madge", + /// "inner": + /// { + /// "name": "Madge" + /// } + /// } + /// ``` /// /// # Arguments /// -/// * `options` - Optional parameters for the request. - #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.RelativeModelInOperation.operation")] - pub(crate) async fn operation(&self, name: &str, options: Option>) -> Result> { + /// * `options` - Optional parameters for the request. + #[tracing::function( + "_Specs_.Azure.ClientGenerator.Core.Access.RelativeModelInOperation.operation" + )] + pub(crate) async fn operation( + &self, + name: &str, + options: Option>, + ) -> Result> { let options = options.unwrap_or_default(); let ctx = options.method_options.context.to_borrowed(); let mut url = self.endpoint.clone(); @@ -75,13 +104,19 @@ impl AccessRelativeModelInOperationClient { query_builder.build(); let mut request = Request::new(url, Method::Get); request.insert_header("accept", "application/json"); - let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { - check_success: CheckSuccessOptions{ success_codes: &[200]}, - ..Default::default() - })).await?; + let rsp = self + .pipeline + .send( + &ctx, + &mut request, + Some(PipelineSendOptions { + check_success: CheckSuccessOptions { + success_codes: &[200], + }, + ..Default::default() + }), + ) + .await?; Ok(rsp.into()) - } } - - diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/mod.rs index f3f72a31d..21bd48b1c 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/mod.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/clients/mod.rs @@ -4,4 +4,4 @@ // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. mod access_relative_model_in_operation_client; -pub use access_relative_model_in_operation_client::*; \ No newline at end of file +pub use access_relative_model_in_operation_client::*; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/method_options.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/method_options.rs index 87b279f67..fd1a6a6e2 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/method_options.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/method_options.rs @@ -3,7 +3,7 @@ // // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. -use azure_core::{fmt::SafeDebug, http::ClientMethodOptions, }; +use azure_core::{fmt::SafeDebug, http::ClientMethodOptions}; /// Options to be passed to [`AccessRelativeModelInOperationClient::discriminator()`](crate::relative_model_in_operation::generated::clients::AccessRelativeModelInOperationClient::discriminator()) #[derive(Clone, Default, SafeDebug)] diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/mod.rs index 58e5f0512..cafdb5be1 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/mod.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/mod.rs @@ -3,12 +3,12 @@ // // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. -mod models_impl; -mod unions_serde; pub(crate) mod method_options; #[allow(clippy::module_inception)] pub(crate) mod models; +mod models_impl; pub(crate) mod unions; +mod unions_serde; pub(crate) use method_options::*; pub(crate) use models::*; pub(crate) use unions::*; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models.rs index 2aeb7860f..7419dd974 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models.rs @@ -4,7 +4,7 @@ // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. use azure_core::fmt::SafeDebug; -use serde::{Deserialize, Serialize, }; +use serde::{Deserialize, Serialize}; /// Used in internal operations, should be generated but not exported. #[derive(Clone, Default, Deserialize, SafeDebug, Serialize)] @@ -12,7 +12,6 @@ use serde::{Deserialize, Serialize, }; pub(crate) struct InnerModel { #[serde(skip_serializing_if = "Option::is_none")] pub(crate) name: Option, - } /// Used in internal operations, should be generated but not exported. @@ -24,7 +23,6 @@ pub(crate) struct OuterModel { #[serde(skip_serializing_if = "Option::is_none")] pub(crate) name: Option, - } /// Used in internal operations, should be generated but not exported. @@ -34,6 +32,4 @@ pub(crate) struct OuterModel { pub(crate) struct RealModel { #[serde(skip_serializing_if = "Option::is_none")] pub(crate) name: Option, - } - diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models_impl.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models_impl.rs index 37c37cf3f..f098a7e08 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models_impl.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/models_impl.rs @@ -3,11 +3,10 @@ // // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. -use super::{AbstractModel, RealModel, }; +use super::{AbstractModel, RealModel}; impl From for AbstractModel { fn from(value: RealModel) -> Self { Self::RealModel(value) } } - diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions.rs index abb8da989..6fc7c522a 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions.rs @@ -3,24 +3,22 @@ // // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. +use super::RealModel; use azure_core::fmt::SafeDebug; use serde::Deserialize; -use super::RealModel; - #[doc = r#"Used in internal operations, should be generated but not exported."#] +#[doc = r#"Used in internal operations, should be generated but not exported."#] #[derive(Clone, Deserialize, SafeDebug)] #[serde(tag = "kind")] pub(crate) enum AbstractModel { -#[serde(rename = "real")] + #[serde(rename = "real")] RealModel(RealModel), #[serde(untagged)] UnknownKind { -/// Discriminator property for AbstractModel. + /// Discriminator property for AbstractModel. kind: Option, name: Option, - }, } - diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions_serde.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions_serde.rs index 480beba0b..e75bfd282 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions_serde.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/relative_model_in_operation/generated/models/unions_serde.rs @@ -3,26 +3,26 @@ // // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. -use serde::{Serialize, Serializer, }; -use super::{AbstractModel, RealModel, }; +use super::{AbstractModel, RealModel}; +use serde::{Serialize, Serializer}; impl Serialize for AbstractModel { - fn serialize(&self, serializer: S) -> Result where S: Serializer { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { match self { - AbstractModel::RealModel(real_model) => { - RealModel::serialize(real_model, serializer) - }, - AbstractModel::UnknownKind {kind, name, } => { - #[derive(Serialize)] - struct UnknownKind<'a> { - #[serde(skip_serializing_if = "Option::is_none")] - kind: &'a Option, - #[serde(skip_serializing_if = "Option::is_none")] - name: &'a Option, - } - UnknownKind::serialize(&UnknownKind { kind, name }, serializer) - }, + AbstractModel::RealModel(real_model) => RealModel::serialize(real_model, serializer), + AbstractModel::UnknownKind { kind, name } => { + #[derive(Serialize)] + struct UnknownKind<'a> { + #[serde(skip_serializing_if = "Option::is_none")] + kind: &'a Option, + #[serde(skip_serializing_if = "Option::is_none")] + name: &'a Option, + } + UnknownKind::serialize(&UnknownKind { kind, name }, serializer) } } + } } - diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/access_shared_model_in_operation_client.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/access_shared_model_in_operation_client.rs index 789df0a53..423714d1c 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/access_shared_model_in_operation_client.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/access_shared_model_in_operation_client.rs @@ -3,8 +3,15 @@ // // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. -use azure_core::{Result, error::CheckSuccessOptions, http::{Method, Pipeline, PipelineSendOptions, Request, Response, Url, UrlExt, }, tracing, }; -use crate::shared_model_in_operation::generated::models::{AccessSharedModelInOperationClientInternalOptions, AccessSharedModelInOperationClientPublicOptions, SharedModel, }; +use crate::shared_model_in_operation::generated::models::{ + AccessSharedModelInOperationClientInternalOptions, + AccessSharedModelInOperationClientPublicOptions, SharedModel, +}; +use azure_core::{ + error::CheckSuccessOptions, + http::{Method, Pipeline, PipelineSendOptions, Request, Response, Url, UrlExt}, + tracing, Result, +}; #[tracing::client] pub struct AccessSharedModelInOperationClient { @@ -18,12 +25,18 @@ impl AccessSharedModelInOperationClient { &self.endpoint } - /// + /// /// # Arguments /// -/// * `options` - Optional parameters for the request. - #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.SharedModelInOperation.internal")] - pub(crate) async fn internal(&self, name: &str, options: Option>) -> Result> { + /// * `options` - Optional parameters for the request. + #[tracing::function( + "_Specs_.Azure.ClientGenerator.Core.Access.SharedModelInOperation.internal" + )] + pub(crate) async fn internal( + &self, + name: &str, + options: Option>, + ) -> Result> { let options = options.unwrap_or_default(); let ctx = options.method_options.context.to_borrowed(); let mut url = self.endpoint.clone(); @@ -33,20 +46,32 @@ impl AccessSharedModelInOperationClient { query_builder.build(); let mut request = Request::new(url, Method::Get); request.insert_header("accept", "application/json"); - let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { - check_success: CheckSuccessOptions{ success_codes: &[200]}, - ..Default::default() - })).await?; + let rsp = self + .pipeline + .send( + &ctx, + &mut request, + Some(PipelineSendOptions { + check_success: CheckSuccessOptions { + success_codes: &[200], + }, + ..Default::default() + }), + ) + .await?; Ok(rsp.into()) - } - /// + /// /// # Arguments /// -/// * `options` - Optional parameters for the request. + /// * `options` - Optional parameters for the request. #[tracing::function("_Specs_.Azure.ClientGenerator.Core.Access.SharedModelInOperation.public")] - pub async fn public(&self, name: &str, options: Option>) -> Result> { + pub async fn public( + &self, + name: &str, + options: Option>, + ) -> Result> { let options = options.unwrap_or_default(); let ctx = options.method_options.context.to_borrowed(); let mut url = self.endpoint.clone(); @@ -56,13 +81,19 @@ impl AccessSharedModelInOperationClient { query_builder.build(); let mut request = Request::new(url, Method::Get); request.insert_header("accept", "application/json"); - let rsp = self.pipeline.send(&ctx, &mut request, Some(PipelineSendOptions { - check_success: CheckSuccessOptions{ success_codes: &[200]}, - ..Default::default() - })).await?; + let rsp = self + .pipeline + .send( + &ctx, + &mut request, + Some(PipelineSendOptions { + check_success: CheckSuccessOptions { + success_codes: &[200], + }, + ..Default::default() + }), + ) + .await?; Ok(rsp.into()) - } } - - diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/mod.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/mod.rs index 2f5abe39b..6a9bd1a45 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/mod.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/clients/mod.rs @@ -4,4 +4,4 @@ // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. mod access_shared_model_in_operation_client; -pub use access_shared_model_in_operation_client::*; \ No newline at end of file +pub use access_shared_model_in_operation_client::*; diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/method_options.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/method_options.rs index 67ce688ab..8e29e4baf 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/method_options.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/method_options.rs @@ -3,7 +3,7 @@ // // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. -use azure_core::{fmt::SafeDebug, http::ClientMethodOptions, }; +use azure_core::{fmt::SafeDebug, http::ClientMethodOptions}; /// Options to be passed to [`AccessSharedModelInOperationClient::internal()`](crate::shared_model_in_operation::generated::clients::AccessSharedModelInOperationClient::internal()) #[derive(Clone, Default, SafeDebug)] diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/models.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/models.rs index ab94378b6..f9ff6c778 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/models.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/src/shared_model_in_operation/generated/models/models.rs @@ -4,7 +4,7 @@ // Code generated by Microsoft (R) Rust Code Generator. DO NOT EDIT. use azure_core::fmt::SafeDebug; -use serde::{Deserialize, Serialize, }; +use serde::{Deserialize, Serialize}; /// Used by both public and internal operation. It should be generated and exported. #[derive(Clone, Default, Deserialize, SafeDebug, Serialize)] @@ -12,6 +12,4 @@ use serde::{Deserialize, Serialize, }; pub struct SharedModel { #[serde(skip_serializing_if = "Option::is_none")] pub name: Option, - } - diff --git a/packages/typespec-rust/test/spector/azure/client-generator-core/access/tests/access_client_test.rs b/packages/typespec-rust/test/spector/azure/client-generator-core/access/tests/access_client_test.rs index 86df05427..298c56b1f 100644 --- a/packages/typespec-rust/test/spector/azure/client-generator-core/access/tests/access_client_test.rs +++ b/packages/typespec-rust/test/spector/azure/client-generator-core/access/tests/access_client_test.rs @@ -2,7 +2,7 @@ // // Licensed under the MIT License. See License.txt in the project root for license information. -use spector_access::{AccessClient}; +use spector_access::AccessClient; // #[tokio::test] // async fn internal_operation() { @@ -45,10 +45,7 @@ async fn public_operation() { let client = AccessClient::with_no_credential("http://localhost:3000", None).unwrap(); let client = client.get_access_public_operation_client(); - let resp = client - .no_decorator_in_public("sample", None) - .await - .unwrap(); + let resp = client.no_decorator_in_public("sample", None).await.unwrap(); assert_eq!(resp.status(), 200); let resp = resp.into_model().unwrap(); assert!(resp.name.is_some()); @@ -69,10 +66,7 @@ async fn shared_model_in_operation() { let client = AccessClient::with_no_credential("http://localhost:3000", None).unwrap(); let client = client.get_access_shared_model_in_operation_client(); - let resp = client - .public("sample", None) - .await - .unwrap(); + let resp = client.public("sample", None).await.unwrap(); assert_eq!(resp.status(), 200); let resp = resp.into_model().unwrap(); assert!(resp.name.is_some());