Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scope macro #3136

Merged
merged 55 commits into from
Jun 7, 2024
Merged

Scope macro #3136

merged 55 commits into from
Jun 7, 2024

Conversation

pmd3d
Copy link
Contributor

@pmd3d pmd3d commented Sep 14, 2023

PR Type

Start of adding proc macro scope feature based on issue #1709.

PR Checklist

  • Tests for the changes have been added / updated.
  • Documentation comments have been added / updated.
  • A changelog entry has been made for the appropriate packages.
  • Format code with the latest stable rustfmt.
  • (Team) Label with affected crates and semver status.

Overview

Like the project the issue referenced, I added scope proc macro that takes a path. I couldn't figure out how the rest of the features would work int he referenced project so did not implement them.

This is my first major pull request. I decided to remove non path arguments to the scope proc macro to reduce the size of this pull request assuming there may be other issues given my inexperience. Also the issue references a handler macro that I did not implement because I wasn't sure exactly if perhaps that was covered by a get macro or should be something more.

Issue #1709

For example, the scope macro together with a prefix path would be declarated before module like below.
Then, web methods in the module would get the prefix path concatenated to the path argument.

use actix_web_codegen::{scope};
#[scope("/test")]
mod scope_module {
  use actix_web::{get, HttpResponse, Responder};
  #[get("/test")]
  pub async fn test() -> impl Responder {
    // this has path /test/test
    HttpResponse::Ok().finish()
  }
}

@robjtede robjtede added A-codegen project: actix-web-codegen B-semver-minor labels Sep 14, 2023
@robjtede robjtede added this to the actix-web v4.5 milestone Sep 14, 2023
@robjtede robjtede requested a review from a team November 3, 2023 12:21
actix-web-codegen/src/lib.rs Outdated Show resolved Hide resolved
@pmd3d pmd3d marked this pull request as ready for review April 3, 2024 05:57
@pmd3d pmd3d changed the title Scope work Scope macro Apr 3, 2024
@robjtede
Copy link
Member

robjtede commented Jun 7, 2024

Done a bit of re-organization and docs tweaking. Think it's in a good state to merge.

One more thing I want to add is to disallow trailing slashes to align with this piece of documentation and it's reasoning: https://docs.rs/actix-web/latest/actix_web/struct.Scope.html#avoid-trailing-slashes

@robjtede robjtede linked an issue Jun 7, 2024 that may be closed by this pull request
@robjtede robjtede enabled auto-merge June 7, 2024 22:02
Copy link
Member

@robjtede robjtede left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great work 👍🏻 thanks for being patient for the review 🙃

@robjtede robjtede added this pull request to the merge queue Jun 7, 2024
Merged via the queue into actix:master with commit 3db7891 Jun 7, 2024
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-codegen project: actix-web-codegen B-semver-minor
Projects
None yet
Development

Successfully merging this pull request may close these issues.

#[scope] macro
2 participants