Skip to content

[BUG][RUST] oneOf with value and array results in invalid code #18984

Description

@jath03

Bug Report Checklist

  • Have you provided a full/minimal spec to reproduce the issue?
  • Have you validated the input using an OpenAPI validator (example)?
  • Have you tested with the latest master to confirm the issue still exists?
  • Have you searched for related issues/PRs?
  • What's the actual output vs expected output?
  • [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description

Basically, using a oneof in rust generates an enum. When actually using that enum to make a request, there is an error because the
enum cannot be converted to a string because it doesn't implement the display trait.

To fix this, there are two options:

  1. Implement the display trait for the enum so that it converts itself into a string correctly (not ideal because you'd have to deal with url encoding when you implement the trait).
  2. Handle each enum variant when you are building the request (which is what I implemented - see below)
Full Error from output error[E0599]: the method `to_string` exists for reference `&GetSystemWaypointsTraitsParameter`, but its trait bounds were not satisfied --> src/apis/systems_api.rs:256:89 | 256 | local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]); | ^^^^^^^^^ method cannot be called on `&GetSystemWaypointsTraitsParameter` due to unsatisfied trait bounds | ::: src/models/get_system_waypoints_traits_parameter.rs:16:1 | 16 | pub enum GetSystemWaypointsTraitsParameter { | ------------------------------------------ doesn't satisfy `GetSystemWaypointsTraitsParameter: ToString` or `_: Display` | = note: the following trait bounds were not satisfied: `GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `GetSystemWaypointsTraitsParameter: ToString` `&GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `&GetSystemWaypointsTraitsParameter: ToString` note: the trait `std::fmt::Display` must be implemented --> /home/jack/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs:705:1 | 705 | pub trait Display { | ^^^^^^^^^^^^^^^^^ = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `to_string`, perhaps you need to implement it: candidate #1: `ToString`

For more information about this error, try rustc --explain E0599.
error: could not compile openapi (lib) due to 1 previous error

openapi-generator version

7.6.0
also tested with latest snapshot

OpenAPI declaration file content or url

https://raw.githubusercontent.com/SpaceTradersAPI/api-docs/main/reference/SpaceTraders.json
Specific offending portion:
https://github.com/SpaceTradersAPI/api-docs/blob/3ff410cbfe2ab9f05b73a7d1d92cca0593480018/reference/SpaceTraders.json#L513C11-L529C14

Generation Details

This is the command I was using

openapi-generator-cli generate -i spacetraders-api-docs-spacedust-patch/reference/SpaceTraders.json -g rust -o client-dist --additional-properties=packageName=spacedust,supportAsync=true,supportMiddleware=true
Steps to reproduce
git clone https://github.com/SpaceTradersAPI/api-docs
openapi-generator-cli generate -i api-docs/reference/SpaceTraders.json -g rust -o client-dist
cd client-dist
cargo check
Related issues/PRs

Seems to be somewhat related to this previously fixed issue: #17896
Searching the issue list for rust oneof comes up with a few that seems to be somewhat similar but not the same:
#18527
#17210
#13257
#9497
#7802
#3297

Suggest a fix

This is what I did to fix the generated code, but I don't know how I would fix the generator.

$ diff client-dist4/src/apis/systems_api.rs client-dist2/src/apis/systems_api.rs 255,256c255,267
< if let Some(ref local_var_str) = traits {
< local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
---
> if let Some(ref local_var_enum) = traits {
> if let models::GetSystemWaypointsTraitsParameter::Array(local_str_array) = local_var_enum {
> for local_var_str in local_str_array {
> local_var_req_builder =
> local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
> }
> } else if let models::GetSystemWaypointsTraitsParameter::WaypointTraitSymbol(
> local_var_str,
> ) = local_var_enum
> {
> local_var_req_builder =
> local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
> }

This is just something that works. I'm not necessarily recommending this because I don't know the conventions for generated code or what you have available in the generator.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
       blocks
      (function() {
      function addCopyButtons() {
      document.querySelectorAll('pre code').forEach(function(codeBlock) {
      if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
      codeBlock.parentElement.setAttribute('data-copy-added', 'true');
      var btn = document.createElement('button');
      btn.textContent = 'Copy';
      btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
      btn.onmouseover = function() { this.style.opacity = '1'; };
      btn.onmouseout = function() { this.style.opacity = '0.7'; };
      btn.onclick = function() {
      navigator.clipboard.writeText(codeBlock.textContent).then(function() {
      btn.textContent = 'Copied!';
      setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
      });
      };
      codeBlock.parentElement.style.position = 'relative';
      codeBlock.parentElement.appendChild(btn);
      });
      }
      addCopyButtons();
      // Re-run on dynamic content
      var observer = new MutationObserver(addCopyButtons);
      observer.observe(document.body, { childList: true, subtree: true });
      })();
      }
      } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
      })();
      (function(){
      try {
      var __m = "github.com";
      var __re = new RegExp('^' + "github\\.com" + '
      [BUG][RUST] oneOf with value and array results in invalid code · Issue #18984 · OpenAPITools/openapi-generator · GitHub
      Skip to content

      [BUG][RUST] oneOf with value and array results in invalid code #18984

      Description

      @jath03

      Bug Report Checklist

      • Have you provided a full/minimal spec to reproduce the issue?
      • Have you validated the input using an OpenAPI validator (example)?
      • Have you tested with the latest master to confirm the issue still exists?
      • Have you searched for related issues/PRs?
      • What's the actual output vs expected output?
      • [Optional] Sponsorship to speed up the bug fix or feature request (example)
      Description

      Basically, using a oneof in rust generates an enum. When actually using that enum to make a request, there is an error because the
      enum cannot be converted to a string because it doesn't implement the display trait.

      To fix this, there are two options:

      1. Implement the display trait for the enum so that it converts itself into a string correctly (not ideal because you'd have to deal with url encoding when you implement the trait).
      2. Handle each enum variant when you are building the request (which is what I implemented - see below)
      Full Error from output error[E0599]: the method `to_string` exists for reference `&GetSystemWaypointsTraitsParameter`, but its trait bounds were not satisfied --> src/apis/systems_api.rs:256:89 | 256 | local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]); | ^^^^^^^^^ method cannot be called on `&GetSystemWaypointsTraitsParameter` due to unsatisfied trait bounds | ::: src/models/get_system_waypoints_traits_parameter.rs:16:1 | 16 | pub enum GetSystemWaypointsTraitsParameter { | ------------------------------------------ doesn't satisfy `GetSystemWaypointsTraitsParameter: ToString` or `_: Display` | = note: the following trait bounds were not satisfied: `GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `GetSystemWaypointsTraitsParameter: ToString` `&GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `&GetSystemWaypointsTraitsParameter: ToString` note: the trait `std::fmt::Display` must be implemented --> /home/jack/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs:705:1 | 705 | pub trait Display { | ^^^^^^^^^^^^^^^^^ = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `to_string`, perhaps you need to implement it: candidate #1: `ToString`

      For more information about this error, try rustc --explain E0599.
      error: could not compile openapi (lib) due to 1 previous error

      openapi-generator version

      7.6.0
      also tested with latest snapshot

      OpenAPI declaration file content or url

      https://raw.githubusercontent.com/SpaceTradersAPI/api-docs/main/reference/SpaceTraders.json
      Specific offending portion:
      https://github.com/SpaceTradersAPI/api-docs/blob/3ff410cbfe2ab9f05b73a7d1d92cca0593480018/reference/SpaceTraders.json#L513C11-L529C14

      Generation Details

      This is the command I was using

      openapi-generator-cli generate -i spacetraders-api-docs-spacedust-patch/reference/SpaceTraders.json -g rust -o client-dist --additional-properties=packageName=spacedust,supportAsync=true,supportMiddleware=true
      
      Steps to reproduce
      git clone https://github.com/SpaceTradersAPI/api-docs
      openapi-generator-cli generate -i api-docs/reference/SpaceTraders.json -g rust -o client-dist
      cd client-dist
      cargo check
      
      Related issues/PRs

      Seems to be somewhat related to this previously fixed issue: #17896
      Searching the issue list for rust oneof comes up with a few that seems to be somewhat similar but not the same:
      #18527
      #17210
      #13257
      #9497
      #7802
      #3297

      Suggest a fix

      This is what I did to fix the generated code, but I don't know how I would fix the generator.

      $ diff client-dist4/src/apis/systems_api.rs client-dist2/src/apis/systems_api.rs 255,256c255,267
      < if let Some(ref local_var_str) = traits {
      < local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
      ---
      > if let Some(ref local_var_enum) = traits {
      > if let models::GetSystemWaypointsTraitsParameter::Array(local_str_array) = local_var_enum {
      > for local_var_str in local_str_array {
      > local_var_req_builder =
      > local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
      > }
      > } else if let models::GetSystemWaypointsTraitsParameter::WaypointTraitSymbol(
      > local_var_str,
      > ) = local_var_enum
      > {
      > local_var_req_builder =
      > local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
      > }
      

      This is just something that works. I'm not necessarily recommending this because I don't know the conventions for generated code or what you have available in the generator.

      Metadata

      Metadata

      Assignees

      No one assigned

        Type

        No type

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [BUG][RUST] oneOf with value and array results in invalid code · Issue #18984 · OpenAPITools/openapi-generator · GitHub
          Skip to content

          [BUG][RUST] oneOf with value and array results in invalid code #18984

          Description

          @jath03

          Bug Report Checklist

          • Have you provided a full/minimal spec to reproduce the issue?
          • Have you validated the input using an OpenAPI validator (example)?
          • Have you tested with the latest master to confirm the issue still exists?
          • Have you searched for related issues/PRs?
          • What's the actual output vs expected output?
          • [Optional] Sponsorship to speed up the bug fix or feature request (example)
          Description

          Basically, using a oneof in rust generates an enum. When actually using that enum to make a request, there is an error because the
          enum cannot be converted to a string because it doesn't implement the display trait.

          To fix this, there are two options:

          1. Implement the display trait for the enum so that it converts itself into a string correctly (not ideal because you'd have to deal with url encoding when you implement the trait).
          2. Handle each enum variant when you are building the request (which is what I implemented - see below)
          Full Error from output error[E0599]: the method `to_string` exists for reference `&GetSystemWaypointsTraitsParameter`, but its trait bounds were not satisfied --> src/apis/systems_api.rs:256:89 | 256 | local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]); | ^^^^^^^^^ method cannot be called on `&GetSystemWaypointsTraitsParameter` due to unsatisfied trait bounds | ::: src/models/get_system_waypoints_traits_parameter.rs:16:1 | 16 | pub enum GetSystemWaypointsTraitsParameter { | ------------------------------------------ doesn't satisfy `GetSystemWaypointsTraitsParameter: ToString` or `_: Display` | = note: the following trait bounds were not satisfied: `GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `GetSystemWaypointsTraitsParameter: ToString` `&GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `&GetSystemWaypointsTraitsParameter: ToString` note: the trait `std::fmt::Display` must be implemented --> /home/jack/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs:705:1 | 705 | pub trait Display { | ^^^^^^^^^^^^^^^^^ = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `to_string`, perhaps you need to implement it: candidate #1: `ToString`

          For more information about this error, try rustc --explain E0599.
          error: could not compile openapi (lib) due to 1 previous error

          openapi-generator version

          7.6.0
          also tested with latest snapshot

          OpenAPI declaration file content or url

          https://raw.githubusercontent.com/SpaceTradersAPI/api-docs/main/reference/SpaceTraders.json
          Specific offending portion:
          https://github.com/SpaceTradersAPI/api-docs/blob/3ff410cbfe2ab9f05b73a7d1d92cca0593480018/reference/SpaceTraders.json#L513C11-L529C14

          Generation Details

          This is the command I was using

          openapi-generator-cli generate -i spacetraders-api-docs-spacedust-patch/reference/SpaceTraders.json -g rust -o client-dist --additional-properties=packageName=spacedust,supportAsync=true,supportMiddleware=true
          
          Steps to reproduce
          git clone https://github.com/SpaceTradersAPI/api-docs
          openapi-generator-cli generate -i api-docs/reference/SpaceTraders.json -g rust -o client-dist
          cd client-dist
          cargo check
          
          Related issues/PRs

          Seems to be somewhat related to this previously fixed issue: #17896
          Searching the issue list for rust oneof comes up with a few that seems to be somewhat similar but not the same:
          #18527
          #17210
          #13257
          #9497
          #7802
          #3297

          Suggest a fix

          This is what I did to fix the generated code, but I don't know how I would fix the generator.

          $ diff client-dist4/src/apis/systems_api.rs client-dist2/src/apis/systems_api.rs 255,256c255,267
          < if let Some(ref local_var_str) = traits {
          < local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
          ---
          > if let Some(ref local_var_enum) = traits {
          > if let models::GetSystemWaypointsTraitsParameter::Array(local_str_array) = local_var_enum {
          > for local_var_str in local_str_array {
          > local_var_req_builder =
          > local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
          > }
          > } else if let models::GetSystemWaypointsTraitsParameter::WaypointTraitSymbol(
          > local_var_str,
          > ) = local_var_enum
          > {
          > local_var_req_builder =
          > local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
          > }
          

          This is just something that works. I'm not necessarily recommending this because I don't know the conventions for generated code or what you have available in the generator.

          Metadata

          Metadata

          Assignees

          No one assigned

            Type

            No type

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [BUG][RUST] oneOf with value and array results in invalid code · Issue #18984 · OpenAPITools/openapi-generator · GitHub
              Skip to content

              [BUG][RUST] oneOf with value and array results in invalid code #18984

              Description

              @jath03

              Bug Report Checklist

              • Have you provided a full/minimal spec to reproduce the issue?
              • Have you validated the input using an OpenAPI validator (example)?
              • Have you tested with the latest master to confirm the issue still exists?
              • Have you searched for related issues/PRs?
              • What's the actual output vs expected output?
              • [Optional] Sponsorship to speed up the bug fix or feature request (example)
              Description

              Basically, using a oneof in rust generates an enum. When actually using that enum to make a request, there is an error because the
              enum cannot be converted to a string because it doesn't implement the display trait.

              To fix this, there are two options:

              1. Implement the display trait for the enum so that it converts itself into a string correctly (not ideal because you'd have to deal with url encoding when you implement the trait).
              2. Handle each enum variant when you are building the request (which is what I implemented - see below)
              Full Error from output error[E0599]: the method `to_string` exists for reference `&GetSystemWaypointsTraitsParameter`, but its trait bounds were not satisfied --> src/apis/systems_api.rs:256:89 | 256 | local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]); | ^^^^^^^^^ method cannot be called on `&GetSystemWaypointsTraitsParameter` due to unsatisfied trait bounds | ::: src/models/get_system_waypoints_traits_parameter.rs:16:1 | 16 | pub enum GetSystemWaypointsTraitsParameter { | ------------------------------------------ doesn't satisfy `GetSystemWaypointsTraitsParameter: ToString` or `_: Display` | = note: the following trait bounds were not satisfied: `GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `GetSystemWaypointsTraitsParameter: ToString` `&GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `&GetSystemWaypointsTraitsParameter: ToString` note: the trait `std::fmt::Display` must be implemented --> /home/jack/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs:705:1 | 705 | pub trait Display { | ^^^^^^^^^^^^^^^^^ = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `to_string`, perhaps you need to implement it: candidate #1: `ToString`

              For more information about this error, try rustc --explain E0599.
              error: could not compile openapi (lib) due to 1 previous error

              openapi-generator version

              7.6.0
              also tested with latest snapshot

              OpenAPI declaration file content or url

              https://raw.githubusercontent.com/SpaceTradersAPI/api-docs/main/reference/SpaceTraders.json
              Specific offending portion:
              https://github.com/SpaceTradersAPI/api-docs/blob/3ff410cbfe2ab9f05b73a7d1d92cca0593480018/reference/SpaceTraders.json#L513C11-L529C14

              Generation Details

              This is the command I was using

              openapi-generator-cli generate -i spacetraders-api-docs-spacedust-patch/reference/SpaceTraders.json -g rust -o client-dist --additional-properties=packageName=spacedust,supportAsync=true,supportMiddleware=true
              
              Steps to reproduce
              git clone https://github.com/SpaceTradersAPI/api-docs
              openapi-generator-cli generate -i api-docs/reference/SpaceTraders.json -g rust -o client-dist
              cd client-dist
              cargo check
              
              Related issues/PRs

              Seems to be somewhat related to this previously fixed issue: #17896
              Searching the issue list for rust oneof comes up with a few that seems to be somewhat similar but not the same:
              #18527
              #17210
              #13257
              #9497
              #7802
              #3297

              Suggest a fix

              This is what I did to fix the generated code, but I don't know how I would fix the generator.

              $ diff client-dist4/src/apis/systems_api.rs client-dist2/src/apis/systems_api.rs 255,256c255,267
              < if let Some(ref local_var_str) = traits {
              < local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
              ---
              > if let Some(ref local_var_enum) = traits {
              > if let models::GetSystemWaypointsTraitsParameter::Array(local_str_array) = local_var_enum {
              > for local_var_str in local_str_array {
              > local_var_req_builder =
              > local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
              > }
              > } else if let models::GetSystemWaypointsTraitsParameter::WaypointTraitSymbol(
              > local_var_str,
              > ) = local_var_enum
              > {
              > local_var_req_builder =
              > local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
              > }
              

              This is just something that works. I'm not necessarily recommending this because I don't know the conventions for generated code or what you have available in the generator.

              Metadata

              Metadata

              Assignees

              No one assigned

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions

                  , 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' [BUG][RUST] oneOf with value and array results in invalid code · Issue #18984 · OpenAPITools/openapi-generator · GitHub
                  Skip to content

                  [BUG][RUST] oneOf with value and array results in invalid code #18984

                  Description

                  @jath03

                  Bug Report Checklist

                  • Have you provided a full/minimal spec to reproduce the issue?
                  • Have you validated the input using an OpenAPI validator (example)?
                  • Have you tested with the latest master to confirm the issue still exists?
                  • Have you searched for related issues/PRs?
                  • What's the actual output vs expected output?
                  • [Optional] Sponsorship to speed up the bug fix or feature request (example)
                  Description

                  Basically, using a oneof in rust generates an enum. When actually using that enum to make a request, there is an error because the
                  enum cannot be converted to a string because it doesn't implement the display trait.

                  To fix this, there are two options:

                  1. Implement the display trait for the enum so that it converts itself into a string correctly (not ideal because you'd have to deal with url encoding when you implement the trait).
                  2. Handle each enum variant when you are building the request (which is what I implemented - see below)
                  Full Error from output error[E0599]: the method `to_string` exists for reference `&GetSystemWaypointsTraitsParameter`, but its trait bounds were not satisfied --> src/apis/systems_api.rs:256:89 | 256 | local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]); | ^^^^^^^^^ method cannot be called on `&GetSystemWaypointsTraitsParameter` due to unsatisfied trait bounds | ::: src/models/get_system_waypoints_traits_parameter.rs:16:1 | 16 | pub enum GetSystemWaypointsTraitsParameter { | ------------------------------------------ doesn't satisfy `GetSystemWaypointsTraitsParameter: ToString` or `_: Display` | = note: the following trait bounds were not satisfied: `GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `GetSystemWaypointsTraitsParameter: ToString` `&GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `&GetSystemWaypointsTraitsParameter: ToString` note: the trait `std::fmt::Display` must be implemented --> /home/jack/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs:705:1 | 705 | pub trait Display { | ^^^^^^^^^^^^^^^^^ = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `to_string`, perhaps you need to implement it: candidate #1: `ToString`

                  For more information about this error, try rustc --explain E0599.
                  error: could not compile openapi (lib) due to 1 previous error

                  openapi-generator version

                  7.6.0
                  also tested with latest snapshot

                  OpenAPI declaration file content or url

                  https://raw.githubusercontent.com/SpaceTradersAPI/api-docs/main/reference/SpaceTraders.json
                  Specific offending portion:
                  https://github.com/SpaceTradersAPI/api-docs/blob/3ff410cbfe2ab9f05b73a7d1d92cca0593480018/reference/SpaceTraders.json#L513C11-L529C14

                  Generation Details

                  This is the command I was using

                  openapi-generator-cli generate -i spacetraders-api-docs-spacedust-patch/reference/SpaceTraders.json -g rust -o client-dist --additional-properties=packageName=spacedust,supportAsync=true,supportMiddleware=true
                  
                  Steps to reproduce
                  git clone https://github.com/SpaceTradersAPI/api-docs
                  openapi-generator-cli generate -i api-docs/reference/SpaceTraders.json -g rust -o client-dist
                  cd client-dist
                  cargo check
                  
                  Related issues/PRs

                  Seems to be somewhat related to this previously fixed issue: #17896
                  Searching the issue list for rust oneof comes up with a few that seems to be somewhat similar but not the same:
                  #18527
                  #17210
                  #13257
                  #9497
                  #7802
                  #3297

                  Suggest a fix

                  This is what I did to fix the generated code, but I don't know how I would fix the generator.

                  $ diff client-dist4/src/apis/systems_api.rs client-dist2/src/apis/systems_api.rs 255,256c255,267
                  < if let Some(ref local_var_str) = traits {
                  < local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
                  ---
                  > if let Some(ref local_var_enum) = traits {
                  > if let models::GetSystemWaypointsTraitsParameter::Array(local_str_array) = local_var_enum {
                  > for local_var_str in local_str_array {
                  > local_var_req_builder =
                  > local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
                  > }
                  > } else if let models::GetSystemWaypointsTraitsParameter::WaypointTraitSymbol(
                  > local_var_str,
                  > ) = local_var_enum
                  > {
                  > local_var_req_builder =
                  > local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
                  > }
                  

                  This is just something that works. I'm not necessarily recommending this because I don't know the conventions for generated code or what you have available in the generator.

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Type

                    No type

                    Projects

                    No projects

                      Milestone

                      No milestone

                      Relationships

                      None yet

                      Development

                      No branches or pull requests

                      Issue actions

                      , 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [BUG][RUST] oneOf with value and array results in invalid code · Issue #18984 · OpenAPITools/openapi-generator · GitHub
                      Skip to content

                      [BUG][RUST] oneOf with value and array results in invalid code #18984

                      Description

                      @jath03

                      Bug Report Checklist

                      • Have you provided a full/minimal spec to reproduce the issue?
                      • Have you validated the input using an OpenAPI validator (example)?
                      • Have you tested with the latest master to confirm the issue still exists?
                      • Have you searched for related issues/PRs?
                      • What's the actual output vs expected output?
                      • [Optional] Sponsorship to speed up the bug fix or feature request (example)
                      Description

                      Basically, using a oneof in rust generates an enum. When actually using that enum to make a request, there is an error because the
                      enum cannot be converted to a string because it doesn't implement the display trait.

                      To fix this, there are two options:

                      1. Implement the display trait for the enum so that it converts itself into a string correctly (not ideal because you'd have to deal with url encoding when you implement the trait).
                      2. Handle each enum variant when you are building the request (which is what I implemented - see below)
                      Full Error from output error[E0599]: the method `to_string` exists for reference `&GetSystemWaypointsTraitsParameter`, but its trait bounds were not satisfied --> src/apis/systems_api.rs:256:89 | 256 | local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]); | ^^^^^^^^^ method cannot be called on `&GetSystemWaypointsTraitsParameter` due to unsatisfied trait bounds | ::: src/models/get_system_waypoints_traits_parameter.rs:16:1 | 16 | pub enum GetSystemWaypointsTraitsParameter { | ------------------------------------------ doesn't satisfy `GetSystemWaypointsTraitsParameter: ToString` or `_: Display` | = note: the following trait bounds were not satisfied: `GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `GetSystemWaypointsTraitsParameter: ToString` `&GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `&GetSystemWaypointsTraitsParameter: ToString` note: the trait `std::fmt::Display` must be implemented --> /home/jack/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs:705:1 | 705 | pub trait Display { | ^^^^^^^^^^^^^^^^^ = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `to_string`, perhaps you need to implement it: candidate #1: `ToString`

                      For more information about this error, try rustc --explain E0599.
                      error: could not compile openapi (lib) due to 1 previous error

                      openapi-generator version

                      7.6.0
                      also tested with latest snapshot

                      OpenAPI declaration file content or url

                      https://raw.githubusercontent.com/SpaceTradersAPI/api-docs/main/reference/SpaceTraders.json
                      Specific offending portion:
                      https://github.com/SpaceTradersAPI/api-docs/blob/3ff410cbfe2ab9f05b73a7d1d92cca0593480018/reference/SpaceTraders.json#L513C11-L529C14

                      Generation Details

                      This is the command I was using

                      openapi-generator-cli generate -i spacetraders-api-docs-spacedust-patch/reference/SpaceTraders.json -g rust -o client-dist --additional-properties=packageName=spacedust,supportAsync=true,supportMiddleware=true
                      
                      Steps to reproduce
                      git clone https://github.com/SpaceTradersAPI/api-docs
                      openapi-generator-cli generate -i api-docs/reference/SpaceTraders.json -g rust -o client-dist
                      cd client-dist
                      cargo check
                      
                      Related issues/PRs

                      Seems to be somewhat related to this previously fixed issue: #17896
                      Searching the issue list for rust oneof comes up with a few that seems to be somewhat similar but not the same:
                      #18527
                      #17210
                      #13257
                      #9497
                      #7802
                      #3297

                      Suggest a fix

                      This is what I did to fix the generated code, but I don't know how I would fix the generator.

                      $ diff client-dist4/src/apis/systems_api.rs client-dist2/src/apis/systems_api.rs 255,256c255,267
                      < if let Some(ref local_var_str) = traits {
                      < local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
                      ---
                      > if let Some(ref local_var_enum) = traits {
                      > if let models::GetSystemWaypointsTraitsParameter::Array(local_str_array) = local_var_enum {
                      > for local_var_str in local_str_array {
                      > local_var_req_builder =
                      > local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
                      > }
                      > } else if let models::GetSystemWaypointsTraitsParameter::WaypointTraitSymbol(
                      > local_var_str,
                      > ) = local_var_enum
                      > {
                      > local_var_req_builder =
                      > local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
                      > }
                      

                      This is just something that works. I'm not necessarily recommending this because I don't know the conventions for generated code or what you have available in the generator.

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Type

                        No type

                        Projects

                        No projects

                          Milestone

                          No milestone

                          Relationships

                          None yet

                          Development

                          No branches or pull requests

                          Issue actions

                          , 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [BUG][RUST] oneOf with value and array results in invalid code · Issue #18984 · OpenAPITools/openapi-generator · GitHub
                          Skip to content

                          [BUG][RUST] oneOf with value and array results in invalid code #18984

                          Description

                          @jath03

                          Bug Report Checklist

                          • Have you provided a full/minimal spec to reproduce the issue?
                          • Have you validated the input using an OpenAPI validator (example)?
                          • Have you tested with the latest master to confirm the issue still exists?
                          • Have you searched for related issues/PRs?
                          • What's the actual output vs expected output?
                          • [Optional] Sponsorship to speed up the bug fix or feature request (example)
                          Description

                          Basically, using a oneof in rust generates an enum. When actually using that enum to make a request, there is an error because the
                          enum cannot be converted to a string because it doesn't implement the display trait.

                          To fix this, there are two options:

                          1. Implement the display trait for the enum so that it converts itself into a string correctly (not ideal because you'd have to deal with url encoding when you implement the trait).
                          2. Handle each enum variant when you are building the request (which is what I implemented - see below)
                          Full Error from output error[E0599]: the method `to_string` exists for reference `&GetSystemWaypointsTraitsParameter`, but its trait bounds were not satisfied --> src/apis/systems_api.rs:256:89 | 256 | local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]); | ^^^^^^^^^ method cannot be called on `&GetSystemWaypointsTraitsParameter` due to unsatisfied trait bounds | ::: src/models/get_system_waypoints_traits_parameter.rs:16:1 | 16 | pub enum GetSystemWaypointsTraitsParameter { | ------------------------------------------ doesn't satisfy `GetSystemWaypointsTraitsParameter: ToString` or `_: Display` | = note: the following trait bounds were not satisfied: `GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `GetSystemWaypointsTraitsParameter: ToString` `&GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `&GetSystemWaypointsTraitsParameter: ToString` note: the trait `std::fmt::Display` must be implemented --> /home/jack/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs:705:1 | 705 | pub trait Display { | ^^^^^^^^^^^^^^^^^ = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `to_string`, perhaps you need to implement it: candidate #1: `ToString`

                          For more information about this error, try rustc --explain E0599.
                          error: could not compile openapi (lib) due to 1 previous error

                          openapi-generator version

                          7.6.0
                          also tested with latest snapshot

                          OpenAPI declaration file content or url

                          https://raw.githubusercontent.com/SpaceTradersAPI/api-docs/main/reference/SpaceTraders.json
                          Specific offending portion:
                          https://github.com/SpaceTradersAPI/api-docs/blob/3ff410cbfe2ab9f05b73a7d1d92cca0593480018/reference/SpaceTraders.json#L513C11-L529C14

                          Generation Details

                          This is the command I was using

                          openapi-generator-cli generate -i spacetraders-api-docs-spacedust-patch/reference/SpaceTraders.json -g rust -o client-dist --additional-properties=packageName=spacedust,supportAsync=true,supportMiddleware=true
                          
                          Steps to reproduce
                          git clone https://github.com/SpaceTradersAPI/api-docs
                          openapi-generator-cli generate -i api-docs/reference/SpaceTraders.json -g rust -o client-dist
                          cd client-dist
                          cargo check
                          
                          Related issues/PRs

                          Seems to be somewhat related to this previously fixed issue: #17896
                          Searching the issue list for rust oneof comes up with a few that seems to be somewhat similar but not the same:
                          #18527
                          #17210
                          #13257
                          #9497
                          #7802
                          #3297

                          Suggest a fix

                          This is what I did to fix the generated code, but I don't know how I would fix the generator.

                          $ diff client-dist4/src/apis/systems_api.rs client-dist2/src/apis/systems_api.rs 255,256c255,267
                          < if let Some(ref local_var_str) = traits {
                          < local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
                          ---
                          > if let Some(ref local_var_enum) = traits {
                          > if let models::GetSystemWaypointsTraitsParameter::Array(local_str_array) = local_var_enum {
                          > for local_var_str in local_str_array {
                          > local_var_req_builder =
                          > local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
                          > }
                          > } else if let models::GetSystemWaypointsTraitsParameter::WaypointTraitSymbol(
                          > local_var_str,
                          > ) = local_var_enum
                          > {
                          > local_var_req_builder =
                          > local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
                          > }
                          

                          This is just something that works. I'm not necessarily recommending this because I don't know the conventions for generated code or what you have available in the generator.

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Type

                            No type

                            Projects

                            No projects

                              Milestone

                              No milestone

                              Relationships

                              None yet

                              Development

                              No branches or pull requests

                              Issue actions

                              , 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); [BUG][RUST] oneOf with value and array results in invalid code · Issue #18984 · OpenAPITools/openapi-generator · GitHub
                              Skip to content

                              [BUG][RUST] oneOf with value and array results in invalid code #18984

                              Description

                              @jath03

                              Bug Report Checklist

                              • Have you provided a full/minimal spec to reproduce the issue?
                              • Have you validated the input using an OpenAPI validator (example)?
                              • Have you tested with the latest master to confirm the issue still exists?
                              • Have you searched for related issues/PRs?
                              • What's the actual output vs expected output?
                              • [Optional] Sponsorship to speed up the bug fix or feature request (example)
                              Description

                              Basically, using a oneof in rust generates an enum. When actually using that enum to make a request, there is an error because the
                              enum cannot be converted to a string because it doesn't implement the display trait.

                              To fix this, there are two options:

                              1. Implement the display trait for the enum so that it converts itself into a string correctly (not ideal because you'd have to deal with url encoding when you implement the trait).
                              2. Handle each enum variant when you are building the request (which is what I implemented - see below)
                              Full Error from output error[E0599]: the method `to_string` exists for reference `&GetSystemWaypointsTraitsParameter`, but its trait bounds were not satisfied --> src/apis/systems_api.rs:256:89 | 256 | local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]); | ^^^^^^^^^ method cannot be called on `&GetSystemWaypointsTraitsParameter` due to unsatisfied trait bounds | ::: src/models/get_system_waypoints_traits_parameter.rs:16:1 | 16 | pub enum GetSystemWaypointsTraitsParameter { | ------------------------------------------ doesn't satisfy `GetSystemWaypointsTraitsParameter: ToString` or `_: Display` | = note: the following trait bounds were not satisfied: `GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `GetSystemWaypointsTraitsParameter: ToString` `&GetSystemWaypointsTraitsParameter: std::fmt::Display` which is required by `&GetSystemWaypointsTraitsParameter: ToString` note: the trait `std::fmt::Display` must be implemented --> /home/jack/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/mod.rs:705:1 | 705 | pub trait Display { | ^^^^^^^^^^^^^^^^^ = help: items from traits can only be used if the trait is implemented and in scope = note: the following trait defines an item `to_string`, perhaps you need to implement it: candidate #1: `ToString`

                              For more information about this error, try rustc --explain E0599.
                              error: could not compile openapi (lib) due to 1 previous error

                              openapi-generator version

                              7.6.0
                              also tested with latest snapshot

                              OpenAPI declaration file content or url

                              https://raw.githubusercontent.com/SpaceTradersAPI/api-docs/main/reference/SpaceTraders.json
                              Specific offending portion:
                              https://github.com/SpaceTradersAPI/api-docs/blob/3ff410cbfe2ab9f05b73a7d1d92cca0593480018/reference/SpaceTraders.json#L513C11-L529C14

                              Generation Details

                              This is the command I was using

                              openapi-generator-cli generate -i spacetraders-api-docs-spacedust-patch/reference/SpaceTraders.json -g rust -o client-dist --additional-properties=packageName=spacedust,supportAsync=true,supportMiddleware=true
                              
                              Steps to reproduce
                              git clone https://github.com/SpaceTradersAPI/api-docs
                              openapi-generator-cli generate -i api-docs/reference/SpaceTraders.json -g rust -o client-dist
                              cd client-dist
                              cargo check
                              
                              Related issues/PRs

                              Seems to be somewhat related to this previously fixed issue: #17896
                              Searching the issue list for rust oneof comes up with a few that seems to be somewhat similar but not the same:
                              #18527
                              #17210
                              #13257
                              #9497
                              #7802
                              #3297

                              Suggest a fix

                              This is what I did to fix the generated code, but I don't know how I would fix the generator.

                              $ diff client-dist4/src/apis/systems_api.rs client-dist2/src/apis/systems_api.rs 255,256c255,267
                              < if let Some(ref local_var_str) = traits {
                              < local_var_req_builder = local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
                              ---
                              > if let Some(ref local_var_enum) = traits {
                              > if let models::GetSystemWaypointsTraitsParameter::Array(local_str_array) = local_var_enum {
                              > for local_var_str in local_str_array {
                              > local_var_req_builder =
                              > local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
                              > }
                              > } else if let models::GetSystemWaypointsTraitsParameter::WaypointTraitSymbol(
                              > local_var_str,
                              > ) = local_var_enum
                              > {
                              > local_var_req_builder =
                              > local_var_req_builder.query(&[("traits", &local_var_str.to_string())]);
                              > }
                              

                              This is just something that works. I'm not necessarily recommending this because I don't know the conventions for generated code or what you have available in the generator.

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Type

                                No type

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions